config: float type object: null sets prop to default value
authorPhilippe Proulx <eeppeliteloop@gmail.com>
Thu, 17 Mar 2016 20:43:48 +0000 (16:43 -0400)
committerPhilippe Proulx <eeppeliteloop@gmail.com>
Fri, 18 Mar 2016 21:54:59 +0000 (17:54 -0400)
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
barectf/config.py
barectf/metadata.py

index 114e4fd35405a398501c7a08e4d3c089d3592f1c..80e9629559358f801709b606ca8b4603703a0353 100644 (file)
@@ -1458,29 +1458,33 @@ class _YamlConfigParser:
         if 'align' in node:
             align = node['align']
 
-            if not _is_int_prop(align):
-                raise ConfigError('"align" property of floating point number type object must be an integer')
+            if align is None:
+                obj.set_default_align()
+            else:
+                if not _is_int_prop(align):
+                    raise ConfigError('"align" property of floating point number type object must be an integer')
 
-            if not _is_valid_alignment(align):
-                raise ConfigError('invalid alignment: {}'.format(align))
+                if not _is_valid_alignment(align):
+                    raise ConfigError('invalid alignment: {}'.format(align))
 
-            obj.align = align
+                obj.align = align
 
         # byte order
         if 'byte-order' in node:
             byte_order = node['byte-order']
 
-            if not _is_str_prop(byte_order):
-                raise ConfigError('"byte-order" property of floating point number type object must be a string ("le" or "be")')
+            if byte_order is None:
+                obj.byte_order = self._bo
+            else:
+                if not _is_str_prop(byte_order):
+                    raise ConfigError('"byte-order" property of floating point number type object must be a string ("le" or "be")')
 
-            byte_order = _byte_order_str_to_bo(byte_order)
+                byte_order = _byte_order_str_to_bo(byte_order)
 
-            if byte_order is None:
-                raise ConfigError('invalid "byte-order" property in floating point number type object')
+                if byte_order is None:
+                    raise ConfigError('invalid "byte-order" property in floating point number type object')
         else:
-            byte_order = self._bo
-
-        obj.byte_order = byte_order
+            obj.byte_order = self._bo
 
         return obj
 
index 10aeaf5f33c30ef47e48be50821dd07b40131b01..f40a9c71fdbb650207bd5eb10e37cd249551c959 100644 (file)
@@ -172,9 +172,21 @@ class Integer(Type):
 
 class FloatingPoint(Type):
     def __init__(self):
+        self.set_default_exp_size()
+        self.set_default_mant_size()
+        self.set_default_align()
+        self.set_default_byte_order()
+
+    def set_default_exp_size(self):
         self._exp_size = None
+
+    def set_default_mant_size(self):
         self._mant_size = None
+
+    def set_default_align(self):
         self._align = 8
+
+    def set_default_byte_order(self):
         self._byte_order = None
 
     @property
@@ -195,6 +207,9 @@ class FloatingPoint(Type):
 
     @property
     def size(self):
+        if self._exp_size is None or self._mant_size is None:
+            return
+
         return self._exp_size + self._mant_size
 
     @property
This page took 0.027426 seconds and 4 git commands to generate.