config: clock object: null sets prop to default value
authorPhilippe Proulx <eeppeliteloop@gmail.com>
Thu, 17 Mar 2016 21:30:47 +0000 (17:30 -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 4c45523837971712c7bbd338dd906535b93ce348..d74da5cda2ca395cba4dc3d044f70932165e14b0 100644 (file)
@@ -1849,93 +1849,112 @@ class _YamlConfigParser:
         if 'uuid' in node:
             uuidp = node['uuid']
 
-            if not _is_str_prop(uuidp):
-                raise ConfigError('"uuid" property of clock object must be a string')
+            if uuidp is None:
+                clock.set_default_uuid()
+            else:
+                if not _is_str_prop(uuidp):
+                    raise ConfigError('"uuid" property of clock object must be a string')
 
-            try:
-                uuidp = uuid.UUID(uuidp)
-            except:
-                raise ConfigError('malformed UUID (clock object): "{}"'.format(uuidp))
+                try:
+                    uuidp = uuid.UUID(uuidp)
+                except:
+                    raise ConfigError('malformed UUID (clock object): "{}"'.format(uuidp))
 
-            clock.uuid = uuidp
+                clock.uuid = uuidp
 
         # description
         if 'description' in node:
             desc = node['description']
 
-            if not _is_str_prop(desc):
-                raise ConfigError('"description" property of clock object must be a string')
+            if desc is None:
+                clock.set_default_description()
+            else:
+                if not _is_str_prop(desc):
+                    raise ConfigError('"description" property of clock object must be a string')
 
-            clock.description = desc
+                clock.description = desc
 
         # frequency
         if 'freq' in node:
             freq = node['freq']
 
-            if not _is_int_prop(freq):
-                raise ConfigError('"freq" property of clock object must be an integer')
+            if freq is None:
+                clock.set_default_freq()
+            else:
+                if not _is_int_prop(freq):
+                    raise ConfigError('"freq" property of clock object must be an integer')
 
-            if freq < 1:
-                raise ConfigError('invalid clock frequency: {}'.format(freq))
+                if freq < 1:
+                    raise ConfigError('invalid clock frequency: {}'.format(freq))
 
-            clock.freq = freq
+                clock.freq = freq
 
         # error cycles
         if 'error-cycles' in node:
             error_cycles = node['error-cycles']
 
-            if not _is_int_prop(error_cycles):
-                raise ConfigError('"error-cycles" property of clock object must be an integer')
+            if error_cycles is None:
+                clock.set_default_error_cycles()
+            else:
+                if not _is_int_prop(error_cycles):
+                    raise ConfigError('"error-cycles" property of clock object must be an integer')
 
-            if error_cycles < 0:
-                raise ConfigError('invalid clock error cycles: {}'.format(error_cycles))
+                if error_cycles < 0:
+                    raise ConfigError('invalid clock error cycles: {}'.format(error_cycles))
 
-            clock.error_cycles = error_cycles
+                clock.error_cycles = error_cycles
 
         # offset
         if 'offset' in node:
             offset = node['offset']
 
-            if not _is_assoc_array_prop(offset):
-                raise ConfigError('"offset" property of clock object must be an associative array')
+            if offset is None:
+                self.set_default_offset_seconds()
+                self.set_default_offset_cycles()
+            else:
+                if not _is_assoc_array_prop(offset):
+                    raise ConfigError('"offset" property of clock object must be an associative array')
 
-            unk_prop = _get_first_unknown_prop(offset, ['cycles', 'seconds'])
+                unk_prop = _get_first_unknown_prop(offset, ['cycles', 'seconds'])
 
-            if unk_prop:
-                raise ConfigError('unknown clock object\'s offset property: "{}"'.format(unk_prop))
+                if unk_prop:
+                    raise ConfigError('unknown clock object\'s offset property: "{}"'.format(unk_prop))
 
-            # cycles
-            if 'cycles' in offset:
-                offset_cycles = offset['cycles']
+                # cycles
+                if 'cycles' in offset:
+                    offset_cycles = offset['cycles']
 
-                if not _is_int_prop(offset_cycles):
-                    raise ConfigError('"cycles" property of clock object\'s offset property must be an integer')
+                    if not _is_int_prop(offset_cycles):
+                        raise ConfigError('"cycles" property of clock object\'s offset property must be an integer')
 
-                if offset_cycles < 0:
-                    raise ConfigError('invalid clock offset cycles: {}'.format(offset_cycles))
+                    if offset_cycles < 0:
+                        raise ConfigError('invalid clock offset cycles: {}'.format(offset_cycles))
 
-                clock.offset_cycles = offset_cycles
+                    clock.offset_cycles = offset_cycles
 
-            # seconds
-            if 'seconds' in offset:
-                offset_seconds = offset['seconds']
+                # seconds
+                if 'seconds' in offset:
+                    offset_seconds = offset['seconds']
 
-                if not _is_int_prop(offset_seconds):
-                    raise ConfigError('"seconds" property of clock object\'s offset property must be an integer')
+                    if not _is_int_prop(offset_seconds):
+                        raise ConfigError('"seconds" property of clock object\'s offset property must be an integer')
 
-                if offset_seconds < 0:
-                    raise ConfigError('invalid clock offset seconds: {}'.format(offset_seconds))
+                    if offset_seconds < 0:
+                        raise ConfigError('invalid clock offset seconds: {}'.format(offset_seconds))
 
-                clock.offset_seconds = offset_seconds
+                    clock.offset_seconds = offset_seconds
 
         # absolute
         if 'absolute' in node:
             absolute = node['absolute']
 
-            if not _is_bool_prop(absolute):
-                raise ConfigError('"absolute" property of clock object must be a boolean')
+            if absolute is None:
+                clock.set_default_absolute()
+            else:
+                if not _is_bool_prop(absolute):
+                    raise ConfigError('"absolute" property of clock object must be a boolean')
 
-            clock.absolute = absolute
+                clock.absolute = absolute
 
         # return C type:
         #   v2.0:  "return-ctype"
@@ -1956,10 +1975,13 @@ class _YamlConfigParser:
                 return_ctype_node = node[return_ctype_prop]
 
         if return_ctype_node is not None:
-            if not _is_str_prop(return_ctype_node):
-                raise ConfigError('"{}" property of clock object must be a string'.format(return_ctype_prop))
+            if return_ctype_node is None:
+                clock.set_default_return_ctype()
+            else:
+                if not _is_str_prop(return_ctype_node):
+                    raise ConfigError('"{}" property of clock object must be a string'.format(return_ctype_prop))
 
-            clock.return_ctype = return_ctype_node
+                clock.return_ctype = return_ctype_node
 
         return clock
 
index a673283193a074b11eff56f3d8e78f8b01803931..92cd2936b291259e3fd9541ac0a557ace49944fb 100644 (file)
@@ -515,14 +515,41 @@ class Env(collections.OrderedDict):
 
 class Clock:
     def __init__(self):
+        self.set_default_name()
+        self.set_default_uuid()
+        self.set_default_description()
+        self.set_default_freq()
+        self.set_default_error_cycles()
+        self.set_default_offset_seconds()
+        self.set_default_offset_cycles()
+        self.set_default_absolute()
+        self.set_default_return_ctype()
+
+    def set_default_name(self):
         self._name = None
+
+    def set_default_uuid(self):
         self._uuid = None
+
+    def set_default_description(self):
         self._description = None
+
+    def set_default_freq(self):
         self._freq = 1000000000
+
+    def set_default_error_cycles(self):
         self._error_cycles = 0
+
+    def set_default_offset_seconds(self):
         self._offset_seconds = 0
+
+    def set_default_offset_cycles(self):
         self._offset_cycles = 0
+
+    def set_default_absolute(self):
         self._absolute = False
+
+    def set_default_return_ctype(self):
         self._return_ctype = 'uint32_t'
 
     @property
This page took 0.029161 seconds and 4 git commands to generate.