diff options
author | Jan Arne Petersen <jan.petersen@kdab.com> | 2017-08-22 14:16:20 +0200 |
---|---|---|
committer | Dominik Holland <dominik.holland@pelagicore.com> | 2017-09-12 08:20:33 +0000 |
commit | 06bd1602bf87fbaa04f946b06166b223f18de93a (patch) | |
tree | 7cd07b7d80cc6b1af16c4dbe86e594cf70b3176b | |
parent | 63735a02e20f6b3b238b0b707794332054814db6 (diff) |
Add support for zoned default values
Zoned default values are defined by a map from zone_name to default
value. The default key is as defined by YAML '='.
Example:
config_simulator:
default: { left: 21.0, right: 22.5, =: 0.0 }
Change-Id: Ia0f1be270399aec4e90e816f0b063b6b4fc6d7e2
Reviewed-by: Dominik Holland <dominik.holland@pelagicore.com>
-rw-r--r-- | src/doc/qtivi/src/generator-usage.qdoc | 6 | ||||
-rwxr-xr-x | src/tools/ivigenerator/generate.py | 7 | ||||
-rw-r--r-- | src/tools/ivigenerator/templates_backend_simulator/backend.cpp.tpl | 2 |
3 files changed, 13 insertions, 2 deletions
diff --git a/src/doc/qtivi/src/generator-usage.qdoc b/src/doc/qtivi/src/generator-usage.qdoc index f8bccf7..0feea0c 100644 --- a/src/doc/qtivi/src/generator-usage.qdoc +++ b/src/doc/qtivi/src/generator-usage.qdoc @@ -211,6 +211,12 @@ annotations used for defining various aspects of the generation of the backend-s \li Accompanying YAML file \li Property \li Defines the initial values for the property returned by the simulator backend. + + For zoned properties a mapping from a zone to a default value can be used. The default key of the map is "=". + \code + config_simulator: + default: { left: 21.0, right: 22.5, =: 0.0 } + \endcode \row \li \code config_simulator: diff --git a/src/tools/ivigenerator/generate.py b/src/tools/ivigenerator/generate.py index 2590438..0483b43 100755 --- a/src/tools/ivigenerator/generate.py +++ b/src/tools/ivigenerator/generate.py @@ -132,7 +132,7 @@ def default_type_value(symbol): return 'XXX' -def default_value(symbol): +def default_value(symbol, zone='='): """ Find the default value used by the simulator backend """ @@ -143,6 +143,11 @@ def default_value(symbol): return 'new {0}Model(parent)'.format(nested) if 'config_simulator' in symbol.tags and 'default' in symbol.tags['config_simulator']: res = symbol.tags['config_simulator']['default'] + if isinstance(res, dict): + if zone in res: + res = res[zone] + else: + res = res['='] t = symbol.type if t.is_enum: module_name = t.reference.module.module_name diff --git a/src/tools/ivigenerator/templates_backend_simulator/backend.cpp.tpl b/src/tools/ivigenerator/templates_backend_simulator/backend.cpp.tpl index 3b1f0cc..2e56f6a 100644 --- a/src/tools/ivigenerator/templates_backend_simulator/backend.cpp.tpl +++ b/src/tools/ivigenerator/templates_backend_simulator/backend.cpp.tpl @@ -72,7 +72,7 @@ QT_BEGIN_NAMESPACE ZoneBackend {{zone_name}}Zone; {% for property in interface.properties %} {% if property.tags.config_simulator and property.tags.config_simulator.zoned %} - {{zone_name}}Zone.{{property}} = {{property|default_value}}; + {{zone_name}}Zone.{{property}} = {{property|default_value(zone_name)}}; {% endif %} {% endfor %} m_zoneMap.insert("{{zone_id}}", {{zone_name}}Zone); |