config: struct type object: null sets prop to default value
authorPhilippe Proulx <eeppeliteloop@gmail.com>
Thu, 17 Mar 2016 21:04:53 +0000 (17:04 -0400)
committerPhilippe Proulx <eeppeliteloop@gmail.com>
Fri, 18 Mar 2016 21:55:00 +0000 (17:55 -0400)
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
barectf/config.py
barectf/metadata.py

index fb81e932ca5d18d81c047cdbd917ca0fa09375f9..4c45523837971712c7bbd338dd906535b93ce348 100644 (file)
@@ -1626,29 +1626,35 @@ class _YamlConfigParser:
         if 'min-align' in node:
             min_align = node['min-align']
 
-            if not _is_int_prop(min_align):
-                raise ConfigError('"min-align" property of structure type object must be an integer')
+            if min_align is None:
+                obj.set_default_min_align()
+            else:
+                if not _is_int_prop(min_align):
+                    raise ConfigError('"min-align" property of structure type object must be an integer')
 
-            if not _is_valid_alignment(min_align):
-                raise ConfigError('invalid minimum alignment: {}'.format(min_align))
+                if not _is_valid_alignment(min_align):
+                    raise ConfigError('invalid minimum alignment: {}'.format(min_align))
 
-            obj.min_align = min_align
+                obj.min_align = min_align
 
         # fields
         if 'fields' in node:
             fields = node['fields']
 
-            if not _is_assoc_array_prop(fields):
-                raise ConfigError('"fields" property of structure type object must be an associative array')
+            if fields is None:
+                obj.set_default_fields()
+            else:
+                if not _is_assoc_array_prop(fields):
+                    raise ConfigError('"fields" property of structure type object must be an associative array')
 
-            for field_name, field_node in fields.items():
-                if not is_valid_identifier(field_name):
-                    raise ConfigError('"{}" is not a valid field name for structure type'.format(field_name))
+                for field_name, field_node in fields.items():
+                    if not is_valid_identifier(field_name):
+                        raise ConfigError('"{}" is not a valid field name for structure type'.format(field_name))
 
-                try:
-                    obj.fields[field_name] = self._create_type(field_node)
-                except Exception as e:
-                    raise ConfigError('cannot create structure type\'s field "{}"'.format(field_name), e)
+                    try:
+                        obj.fields[field_name] = self._create_type(field_node)
+                    except Exception as e:
+                        raise ConfigError('cannot create structure type\'s field "{}"'.format(field_name), e)
 
         return obj
 
index e9b18610754d5f89c37ce1c55a42fa123cc55e8d..c1bdd2013f1b9f162008c8682f93adf38ba0e8b1 100644 (file)
@@ -361,7 +361,13 @@ class Array(Type):
 
 class Struct(Type):
     def __init__(self):
+        self.set_default_min_align()
+        self.set_default_fields()
+
+    def set_default_min_align(self):
         self._min_align = 1
+
+    def set_default_fields(self):
         self._fields = collections.OrderedDict()
 
     @property
This page took 0.029105 seconds and 4 git commands to generate.