MCPcopy Create free account
hub / github.com/chronoxor/FastBinaryEncoding / StructVectorModel

Class StructVectorModel

projects/Python/proto/test.py:10733–10806  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10731
10732# Fast Binary Encoding StructVector model
10733class StructVectorModel(fbe.Model):
10734 __slots__ = "_model",
10735
10736 def __init__(self, buffer=None):
10737 super().__init__(buffer)
10738 self._model = FieldModelStructVector(self.buffer, 4)
10739
10740 @property
10741 def model(self):
10742 return self._model
10743
10744 # Get the model size
10745 @property
10746 def fbe_size(self):
10747 return self._model.fbe_size + self._model.fbe_extra
10748
10749 # Get the model type
10750 @property
10751 def fbe_type(self):
10752 return self.TYPE
10753
10754 TYPE = FieldModelStructVector.TYPE
10755
10756 # Check if the struct value is valid
10757 def verify(self):
10758 if (self.buffer.offset + self._model.fbe_offset - 4) > self.buffer.size:
10759 return False
10760
10761 fbe_full_size = self.read_uint32(self._model.fbe_offset - 4)
10762 if fbe_full_size < self._model.fbe_size:
10763 return False
10764
10765 return self._model.verify()
10766
10767 # Create a new model (begin phase)
10768 def create_begin(self):
10769 fbe_begin = self.buffer.allocate(4 + self._model.fbe_size)
10770 return fbe_begin
10771
10772 # Create a new model (end phase)
10773 def create_end(self, fbe_begin):
10774 fbe_end = self.buffer.size
10775 fbe_full_size = fbe_end - fbe_begin
10776 self.write_uint32(self._model.fbe_offset - 4, fbe_full_size)
10777 return fbe_full_size
10778
10779 # Serialize the struct value
10780 def serialize(self, value):
10781 fbe_begin = self.create_begin()
10782 self._model.set(value)
10783 fbe_full_size = self.create_end(fbe_begin)
10784 return fbe_full_size
10785
10786 # Deserialize the struct value
10787 def deserialize(self, value=None):
10788 if value is None:
10789 value = StructVector()
10790

Callers 1

cloneMethod · 0.70

Calls

no outgoing calls

Tested by 1

cloneMethod · 0.56