From 9c169083adb77b7ab046daa1600ba283a786e90f Mon Sep 17 00:00:00 2001 From: Florian Enner Date: Wed, 28 Jan 2015 23:32:41 -0500 Subject: [PATCH] Added FlatBufferBuilder reuse init resets internal variables, but keeps memory that has been allocated for temporary storage Change-Id: If2aa7d27de3c2717cf4c82b1e4e4b6732e495cea --- java/com/google/flatbuffers/FlatBufferBuilder.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/java/com/google/flatbuffers/FlatBufferBuilder.java b/java/com/google/flatbuffers/FlatBufferBuilder.java index 9f3f4b4..44ef1d9 100644 --- a/java/com/google/flatbuffers/FlatBufferBuilder.java +++ b/java/com/google/flatbuffers/FlatBufferBuilder.java @@ -59,10 +59,29 @@ public class FlatBufferBuilder { * @param existing_bb The byte buffer to reuse */ public FlatBufferBuilder(ByteBuffer existing_bb) { + init(existing_bb); + } + + /** + * Alternative initializer that allows reusing this object on an existing + * ByteBuffer. This method resets the builder's internal state, but keeps + * objects that have been allocated for temporary storage. + * + * @param existing_bb The byte buffer to reuse + * @return this + */ + public FlatBufferBuilder init(ByteBuffer existing_bb){ bb = existing_bb; bb.clear(); bb.order(ByteOrder.LITTLE_ENDIAN); + minalign = 1; space = bb.capacity(); + vtable_in_use = 0; + nested = false; + object_start = 0; + num_vtables = 0; + vector_num_elems = 0; + return this; } static ByteBuffer newByteBuffer(int capacity) { -- 2.7.4