`_FieldType`: add `size_is_dynamic` property
[deliverable/barectf.git] / barectf / config.py
index 1920c87f3a35c55c61c9ade81006b7164a3aa829..6772de927ce4d16ea091c1f68c9365eb06c58e78 100644 (file)
@@ -43,6 +43,10 @@ class _FieldType:
     def alignment(self) -> Alignment:
         raise NotImplementedError
 
+    @property
+    def size_is_dynamic(self):
+        return False
+
 
 class _BitArrayFieldType(_FieldType):
     def __init__(self, size: Count, byte_order: Optional[ByteOrder] = None,
@@ -193,6 +197,10 @@ class StringFieldType(_FieldType):
     def alignment(self) -> Alignment:
         return Alignment(8)
 
+    @property
+    def size_is_dynamic(self):
+        return True
+
 
 class _ArrayFieldType(_FieldType):
     def __init__(self, element_field_type: _FieldType):
@@ -273,6 +281,10 @@ class StructureFieldType(_FieldType):
     def alignment(self) -> Alignment:
         return self._alignment
 
+    @property
+    def size_is_dynamic(self):
+        return any([member.field_type.size_is_dynamic for member in self.members.values()])
+
     @property
     def members(self) -> StructureFieldTypeMembers:
         return self._members
This page took 0.023801 seconds and 4 git commands to generate.