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

Class StructOptionalModel

projects/Python/proto/test.py:5623–5696  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5621
5622# Fast Binary Encoding StructOptional model
5623class StructOptionalModel(fbe.Model):
5624 __slots__ = "_model",
5625
5626 def __init__(self, buffer=None):
5627 super().__init__(buffer)
5628 self._model = FieldModelStructOptional(self.buffer, 4)
5629
5630 @property
5631 def model(self):
5632 return self._model
5633
5634 # Get the model size
5635 @property
5636 def fbe_size(self):
5637 return self._model.fbe_size + self._model.fbe_extra
5638
5639 # Get the model type
5640 @property
5641 def fbe_type(self):
5642 return self.TYPE
5643
5644 TYPE = FieldModelStructOptional.TYPE
5645
5646 # Check if the struct value is valid
5647 def verify(self):
5648 if (self.buffer.offset + self._model.fbe_offset - 4) > self.buffer.size:
5649 return False
5650
5651 fbe_full_size = self.read_uint32(self._model.fbe_offset - 4)
5652 if fbe_full_size < self._model.fbe_size:
5653 return False
5654
5655 return self._model.verify()
5656
5657 # Create a new model (begin phase)
5658 def create_begin(self):
5659 fbe_begin = self.buffer.allocate(4 + self._model.fbe_size)
5660 return fbe_begin
5661
5662 # Create a new model (end phase)
5663 def create_end(self, fbe_begin):
5664 fbe_end = self.buffer.size
5665 fbe_full_size = fbe_end - fbe_begin
5666 self.write_uint32(self._model.fbe_offset - 4, fbe_full_size)
5667 return fbe_full_size
5668
5669 # Serialize the struct value
5670 def serialize(self, value):
5671 fbe_begin = self.create_begin()
5672 self._model.set(value)
5673 fbe_full_size = self.create_end(fbe_begin)
5674 return fbe_full_size
5675
5676 # Deserialize the struct value
5677 def deserialize(self, value=None):
5678 if value is None:
5679 value = StructOptional()
5680

Callers 1

cloneMethod · 0.70

Calls

no outgoing calls

Tested by 1

cloneMethod · 0.56