From 9ed71fb11a2365f82effab513aeaa2ff95f362f0 Mon Sep 17 00:00:00 2001 From: Philippe Proulx Date: Thu, 17 Mar 2016 16:43:48 -0400 Subject: [PATCH] config: float type object: null sets prop to default value Signed-off-by: Philippe Proulx --- barectf/config.py | 30 +++++++++++++++++------------- barectf/metadata.py | 15 +++++++++++++++ 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/barectf/config.py b/barectf/config.py index 114e4fd..80e9629 100644 --- a/barectf/config.py +++ b/barectf/config.py @@ -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 diff --git a/barectf/metadata.py b/barectf/metadata.py index 10aeaf5..f40a9c7 100644 --- a/barectf/metadata.py +++ b/barectf/metadata.py @@ -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 -- 2.34.1