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

Class EnumsModel

projects/Python/proto/enums.py:3148–3221  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3146
3147# Fast Binary Encoding Enums model
3148class EnumsModel(fbe.Model):
3149 __slots__ = "_model",
3150
3151 def __init__(self, buffer=None):
3152 super().__init__(buffer)
3153 self._model = FieldModelEnums(self.buffer, 4)
3154
3155 @property
3156 def model(self):
3157 return self._model
3158
3159 # Get the model size
3160 @property
3161 def fbe_size(self):
3162 return self._model.fbe_size + self._model.fbe_extra
3163
3164 # Get the model type
3165 @property
3166 def fbe_type(self):
3167 return self.TYPE
3168
3169 TYPE = FieldModelEnums.TYPE
3170
3171 # Check if the struct value is valid
3172 def verify(self):
3173 if (self.buffer.offset + self._model.fbe_offset - 4) > self.buffer.size:
3174 return False
3175
3176 fbe_full_size = self.read_uint32(self._model.fbe_offset - 4)
3177 if fbe_full_size < self._model.fbe_size:
3178 return False
3179
3180 return self._model.verify()
3181
3182 # Create a new model (begin phase)
3183 def create_begin(self):
3184 fbe_begin = self.buffer.allocate(4 + self._model.fbe_size)
3185 return fbe_begin
3186
3187 # Create a new model (end phase)
3188 def create_end(self, fbe_begin):
3189 fbe_end = self.buffer.size
3190 fbe_full_size = fbe_end - fbe_begin
3191 self.write_uint32(self._model.fbe_offset - 4, fbe_full_size)
3192 return fbe_full_size
3193
3194 # Serialize the struct value
3195 def serialize(self, value):
3196 fbe_begin = self.create_begin()
3197 self._model.set(value)
3198 fbe_full_size = self.create_end(fbe_begin)
3199 return fbe_full_size
3200
3201 # Deserialize the struct value
3202 def deserialize(self, value=None):
3203 if value is None:
3204 value = Enums()
3205

Callers 1

cloneMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected