mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-02 04:04:19 +00:00
Add vectorNumElements attribute to Builder for simpler vector creation. (#6328)
* Add vectorNumElements attribute to Builder for simpler vector creation. This adds a default to EndVector which should simplify its use. * Update tutorial to reflect new default arg in Python EndVector. * Remove optional argument to Python EndVector. * Add generated files. * Unset Builder.vectorNumElems when not in use.
This commit is contained in:
@@ -103,7 +103,7 @@ class Builder(object):
|
||||
|
||||
## @cond FLATBUFFERS_INTENRAL
|
||||
__slots__ = ("Bytes", "current_vtable", "head", "minalign", "objectEnd",
|
||||
"vtables", "nested", "forceDefaults", "finished")
|
||||
"vtables", "nested", "forceDefaults", "finished", "vectorNumElems")
|
||||
|
||||
"""Maximum buffer size constant, in bytes.
|
||||
|
||||
@@ -371,12 +371,13 @@ class Builder(object):
|
||||
|
||||
self.assertNotNested()
|
||||
self.nested = True
|
||||
self.vectorNumElems = numElems
|
||||
self.Prep(N.Uint32Flags.bytewidth, elemSize*numElems)
|
||||
self.Prep(alignment, elemSize*numElems) # In case alignment > int.
|
||||
return self.Offset()
|
||||
## @endcond
|
||||
|
||||
def EndVector(self, vectorNumElems):
|
||||
def EndVector(self):
|
||||
"""EndVector writes data necessary to finish vector construction."""
|
||||
|
||||
self.assertNested()
|
||||
@@ -384,7 +385,8 @@ class Builder(object):
|
||||
self.nested = False
|
||||
## @endcond
|
||||
# we already made space for this, so write without PrependUint32
|
||||
self.PlaceUOffsetT(vectorNumElems)
|
||||
self.PlaceUOffsetT(self.vectorNumElems)
|
||||
self.vectorNumElems = None
|
||||
return self.Offset()
|
||||
|
||||
def CreateString(self, s, encoding='utf-8', errors='strict'):
|
||||
@@ -411,7 +413,8 @@ class Builder(object):
|
||||
## @endcond
|
||||
self.Bytes[self.Head():self.Head()+l] = x
|
||||
|
||||
return self.EndVector(len(x))
|
||||
self.vectorNumElems = len(x)
|
||||
return self.EndVector()
|
||||
|
||||
def CreateByteVector(self, x):
|
||||
"""CreateString writes a byte vector."""
|
||||
@@ -432,7 +435,8 @@ class Builder(object):
|
||||
## @endcond
|
||||
self.Bytes[self.Head():self.Head()+l] = x
|
||||
|
||||
return self.EndVector(len(x))
|
||||
self.vectorNumElems = len(x)
|
||||
return self.EndVector()
|
||||
|
||||
def CreateNumpyVector(self, x):
|
||||
"""CreateNumpyVector writes a numpy array into the buffer."""
|
||||
@@ -467,7 +471,8 @@ class Builder(object):
|
||||
# tobytes ensures c_contiguous ordering
|
||||
self.Bytes[self.Head():self.Head()+l] = x_lend.tobytes(order='C')
|
||||
|
||||
return self.EndVector(x.size)
|
||||
self.vectorNumElems = x.size
|
||||
return self.EndVector()
|
||||
|
||||
## @cond FLATBUFFERS_INTERNAL
|
||||
def assertNested(self):
|
||||
|
||||
Reference in New Issue
Block a user