| Index: mojo/public/python/mojo_bindings/descriptor.py
|
| diff --git a/mojo/public/python/mojo_bindings/descriptor.py b/mojo/public/python/mojo_bindings/descriptor.py
|
| index 45e073f5badd5630a89538cb6efef7728a2195fb..4143c51b29d371bd5201bec1e1ca0c8aa1fd35cc 100644
|
| --- a/mojo/public/python/mojo_bindings/descriptor.py
|
| +++ b/mojo/public/python/mojo_bindings/descriptor.py
|
| @@ -608,7 +608,10 @@ class FieldGroup(object):
|
| def GetByteSize(self):
|
| raise NotImplementedError()
|
|
|
| - def GetVersion(self):
|
| + def GetMinVersion(self):
|
| + raise NotImplementedError()
|
| +
|
| + def GetMaxVersion(self):
|
| raise NotImplementedError()
|
|
|
| def Serialize(self, obj, data_offset, data, handle_offset):
|
| @@ -617,6 +620,9 @@ class FieldGroup(object):
|
| def Deserialize(self, value, context):
|
| raise NotImplementedError()
|
|
|
| + def Filter(self, version):
|
| + raise NotImplementedError()
|
| +
|
|
|
| class SingleFieldGroup(FieldGroup, FieldDescriptor):
|
| """A FieldGroup that contains a single FieldDescriptor."""
|
| @@ -632,7 +638,10 @@ class SingleFieldGroup(FieldGroup, FieldDescriptor):
|
| def GetByteSize(self):
|
| return self.field_type.GetByteSize()
|
|
|
| - def GetVersion(self):
|
| + def GetMinVersion(self):
|
| + return self.version
|
| +
|
| + def GetMaxVersion(self):
|
| return self.version
|
|
|
| def Serialize(self, obj, data_offset, data, handle_offset):
|
| @@ -643,12 +652,16 @@ class SingleFieldGroup(FieldGroup, FieldDescriptor):
|
| entity = self.field_type.Deserialize(value, context)
|
| return { self.name: entity }
|
|
|
| + def Filter(self, version):
|
| + return self
|
| +
|
|
|
| class BooleanGroup(FieldGroup):
|
| """A FieldGroup to pack booleans."""
|
| def __init__(self, descriptors):
|
| FieldGroup.__init__(self, descriptors)
|
| - self.version = min([descriptor.version for descriptor in descriptors])
|
| + self.min_version = min([descriptor.version for descriptor in descriptors])
|
| + self.max_version = max([descriptor.version for descriptor in descriptors])
|
|
|
| def GetTypeCode(self):
|
| return 'B'
|
| @@ -656,8 +669,11 @@ class BooleanGroup(FieldGroup):
|
| def GetByteSize(self):
|
| return 1
|
|
|
| - def GetVersion(self):
|
| - return self.version
|
| + def GetMinVersion(self):
|
| + return self.min_version
|
| +
|
| + def GetMaxVersion(self):
|
| + return self.max_version
|
|
|
| def Serialize(self, obj, data_offset, data, handle_offset):
|
| value = _ConvertBooleansToByte(
|
| @@ -670,6 +686,10 @@ class BooleanGroup(FieldGroup):
|
| fillvalue=False)
|
| return dict(values)
|
|
|
| + def Filter(self, version):
|
| + return BooleanGroup(
|
| + filter(lambda d: d.version <= version, self.descriptors))
|
| +
|
|
|
| def _SerializeNativeArray(value, data_offset, data, length):
|
| data_size = len(data)
|
|
|