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

Class StructSetModel

projects/Python/proto/test.py:12583–12656  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12581
12582# Fast Binary Encoding StructSet model
12583class StructSetModel(fbe.Model):
12584 __slots__ = "_model",
12585
12586 def __init__(self, buffer=None):
12587 super().__init__(buffer)
12588 self._model = FieldModelStructSet(self.buffer, 4)
12589
12590 @property
12591 def model(self):
12592 return self._model
12593
12594 # Get the model size
12595 @property
12596 def fbe_size(self):
12597 return self._model.fbe_size + self._model.fbe_extra
12598
12599 # Get the model type
12600 @property
12601 def fbe_type(self):
12602 return self.TYPE
12603
12604 TYPE = FieldModelStructSet.TYPE
12605
12606 # Check if the struct value is valid
12607 def verify(self):
12608 if (self.buffer.offset + self._model.fbe_offset - 4) > self.buffer.size:
12609 return False
12610
12611 fbe_full_size = self.read_uint32(self._model.fbe_offset - 4)
12612 if fbe_full_size < self._model.fbe_size:
12613 return False
12614
12615 return self._model.verify()
12616
12617 # Create a new model (begin phase)
12618 def create_begin(self):
12619 fbe_begin = self.buffer.allocate(4 + self._model.fbe_size)
12620 return fbe_begin
12621
12622 # Create a new model (end phase)
12623 def create_end(self, fbe_begin):
12624 fbe_end = self.buffer.size
12625 fbe_full_size = fbe_end - fbe_begin
12626 self.write_uint32(self._model.fbe_offset - 4, fbe_full_size)
12627 return fbe_full_size
12628
12629 # Serialize the struct value
12630 def serialize(self, value):
12631 fbe_begin = self.create_begin()
12632 self._model.set(value)
12633 fbe_full_size = self.create_end(fbe_begin)
12634 return fbe_full_size
12635
12636 # Deserialize the struct value
12637 def deserialize(self, value=None):
12638 if value is None:
12639 value = StructSet()
12640

Callers 1

cloneMethod · 0.70

Calls

no outgoing calls

Tested by 1

cloneMethod · 0.56