aboutsummaryrefslogtreecommitdiffstats
path: root/src/tools/ivigenerator/templates_control_panel/module.cpp.tpl
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/ivigenerator/templates_control_panel/module.cpp.tpl')
-rw-r--r--src/tools/ivigenerator/templates_control_panel/module.cpp.tpl30
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 %}