diff options
Diffstat (limited to 'src/tools/ivigenerator/templates_control_panel/module.cpp.tpl')
-rw-r--r-- | src/tools/ivigenerator/templates_control_panel/module.cpp.tpl | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/src/tools/ivigenerator/templates_control_panel/module.cpp.tpl b/src/tools/ivigenerator/templates_control_panel/module.cpp.tpl index 66978f9..6659acb 100644 --- a/src/tools/ivigenerator/templates_control_panel/module.cpp.tpl +++ b/src/tools/ivigenerator/templates_control_panel/module.cpp.tpl @@ -68,6 +68,24 @@ QObject* {{class|lower}}_singletontype_provider(QQmlEngine*, QJSEngine*) { } +{% for enum in module.enums %} +{{class}}::{{enum}} {{class}}::to{{enum}}(quint8 v, bool *ok) { + if (ok) { + *ok = true; + } + switch (v) { +{% for member in enum.members %} + case {{member.value}}: return {{member.name}}; +{% endfor %} + default: + if (ok) { + *ok = false; + } + return {{enum.members|first}}; + } +} +{% endfor %} + /*! \internal */ void {{class}}::registerTypes() { @@ -109,14 +127,18 @@ QSimulatorServer *{{class}}::simulationServer() {% for enum in module.enums %} QDataStream &operator<<(QDataStream &out, {{class}}::{{enum|flag_type}} var) { - out << (int)var; + out << (quint8)var; return out; } QDataStream &operator>>(QDataStream &in, {{class}}::{{enum|flag_type}} &var) { - int temp; - in >> temp; - var = ({{class}}::{{enum|flag_type}})temp; + bool ok; + quint8 val; + in >> val; + var = {{class}}::to{{enum}}(val, &ok); + if (!ok) { + qWarning() << "Received an invalid enum value for type {{class}}::{{enum|flag_type}}, value =" << var; + } return in; } {% endfor %} |