[Java][FlexBuffers] Make FlexBuffersBuilder reusable by adding clear() (#5889) (#5890)

This commit is contained in:
Markus Junginger
2020-05-07 21:26:55 +02:00
committed by GitHub
parent e84cbff673
commit c2da8d5d85
5 changed files with 38 additions and 0 deletions

View File

@@ -34,6 +34,11 @@ public class ArrayReadWriteBuf implements ReadWriteBuf {
this.writePos = startPos;
}
@Override
public void clear() {
this.writePos = 0;
}
@Override
public boolean getBoolean(int index) {
return buffer[index] != 0;

View File

@@ -12,6 +12,11 @@ public class ByteBufferReadWriteBuf implements ReadWriteBuf {
this.buffer.order(ByteOrder.LITTLE_ENDIAN);
}
@Override
public void clear() {
buffer.clear();
}
@Override
public boolean getBoolean(int index) {
return get(index) != 0;

View File

@@ -151,6 +151,17 @@ public class FlexBuffersBuilder {
this(bb, BUILDER_FLAG_SHARE_KEYS);
}
/**
* Reset the FlexBuffersBuilder by purging all data that it holds.
*/
public void clear(){
bb.clear();
stack.clear();
keyPool.clear();
stringPool.clear();
finished = false;
}
/**
* Return `ByteBuffer` containing FlexBuffer message. {@code #finish()} must be called before calling this
* function otherwise an assert will trigger.

View File

@@ -5,6 +5,13 @@ package com.google.flatbuffers;
* FlexBuffers message.
*/
interface ReadWriteBuf extends ReadBuf {
/**
* Clears (resets) the buffer so that it can be reused. Write position will be set to the
* start.
*/
void clear();
/**
* Put a boolean into the buffer at {@code writePosition()} . Booleans as stored as single
* byte. Write position will be incremented.