summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuergen Bocklage-Ryannel <jbocklage-ryannel@luxoft.com>2018-01-25 14:26:07 +0100
committerJuergen Bocklage-Ryannel <jbocklage-ryannel@luxoft.com>2018-01-25 14:26:07 +0100
commitaef0548e6963b163e7e0e2a35db8efa87f13ee14 (patch)
tree1fae1838a95816515e47e4e8855bac2697e577fd
parentcf676a4340f64f6a5b9f38b4e2bd3401c6d57d47 (diff)
downloadqtivi-qface-aef0548e6963b163e7e0e2a35db8efa87f13ee14.tar.gz
- Updated enum test. No test will pass again.
- also switched to yaml safe loader
-rw-r--r--qface/helper/qtcpp.py13
-rw-r--r--qface/idl/listener.py4
-rw-r--r--qface/templates/qface/qtcpp.j241
-rw-r--r--tests/test_qtcpp_helper.py6
4 files changed, 32 insertions, 32 deletions
diff --git a/qface/helper/qtcpp.py b/qface/helper/qtcpp.py
index 015bfdb..5ae13b5 100644
--- a/qface/helper/qtcpp.py
+++ b/qface/helper/qtcpp.py
@@ -33,9 +33,8 @@ class Filters(object):
elif t.is_void:
return ''
elif t.is_enum:
- module_name = upper_first(t.reference.module.module_name)
value = next(iter(t.reference.members))
- return '{0}{1}Module::{2}'.format(prefix, module_name, value)
+ return '{0}::{0}Enum::{1}'.format(symbol.type, value)
elif t.is_flag:
return '0'
elif t.is_list:
@@ -56,9 +55,8 @@ class Filters(object):
@staticmethod
def parameterType(symbol):
prefix = Filters.classPrefix
- module_name = upper_first(symbol.module.module_name)
if symbol.type.is_enum:
- return '{0}{1}Module::{2} {3}'.format(prefix, module_name, symbol.type, symbol)
+ return '{0}::{0}Enum {1}'.format(symbol.type, symbol)
if symbol.type.is_void or symbol.type.is_primitive:
if symbol.type.is_string:
return 'const QString &{0}'.format(symbol)
@@ -82,7 +80,7 @@ class Filters(object):
return '{0}{1}Model *{2}'.format(prefix, nested, symbol)
elif symbol.type.is_complex:
if symbol.type.is_interface:
- return '{0} *{1}'.format(symbol.type, symbol)
+ return '{0}Base *{1}'.format(symbol.type, symbol)
else:
return 'const {0}{1} &{2}'.format(prefix, symbol.type, symbol)
raise Exception("Unknown symbol type")
@@ -90,10 +88,9 @@ class Filters(object):
@staticmethod
def returnType(symbol):
prefix = Filters.classPrefix
- module_name = upper_first(symbol.module.module_name)
t = symbol.type
if t.is_enum:
- return '{0}{1}Module::{2}'.format(prefix, module_name, symbol.type)
+ return '{0}::{0}Enum'.format(symbol.type)
if symbol.type.is_void or symbol.type.is_primitive:
if t.is_string:
return 'QString'
@@ -120,7 +117,7 @@ class Filters(object):
return '{0}{1}Model *'.format(prefix, nested)
elif symbol.type.is_complex:
if symbol.type.is_interface:
- return '{0}*'.format(symbol.type)
+ return '{0}Base *'.format(symbol.type)
else:
return '{0}{1}'.format(prefix, symbol.type)
raise Exception("Unknown symbol type")
diff --git a/qface/idl/listener.py b/qface/idl/listener.py
index 34a0c64..cd5e399 100644
--- a/qface/idl/listener.py
+++ b/qface/idl/listener.py
@@ -9,9 +9,9 @@ import yaml
import click
try:
- from yaml import CLoader as Loader, CDumper as Dumper
+ from yaml import CSafeLoader as Loader, CDumper as Dumper
except ImportError:
- from yaml import Loader, Dumper
+ from yaml import SafeLoader as Loader, Dumper
log = logging.getLogger(__name__)
diff --git a/qface/templates/qface/qtcpp.j2 b/qface/templates/qface/qtcpp.j2
index c2b13db..3d248b0 100644
--- a/qface/templates/qface/qtcpp.j2
+++ b/qface/templates/qface/qtcpp.j2
@@ -1,30 +1,35 @@
-{%+ macro enum_decl(enum) %}
- enum {{enum}} {
+{%+ macro enum_decl(enum) -%}
+ enum {{enum}}Enum {
{% for member in enum.members %}
{{member.name}} = {{member.value}}{% if not loop.last %},{%endif%}
{% endfor %}
};
- Q_ENUM({{enum}})
+ {% if enum.is_flag %}
+ Q_DECLARE_FLAGS({{enum}}Enums, {{enum}}Enum)
+ Q_FLAG({{enum}}Enum)
+ {% else %}
+ Q_ENUM({{enum}}Enum)
+ {% endif %}
{%- endmacro %}
{% macro property(property) -%}
Q_PROPERTY({{property|returnType}} {{property}} READ {{property}} {% if not property.readonly %}WRITE set{{property|upperfirst}} {% endif %}{% if not property.const %}NOTIFY {{property}}Changed{% endif %})
{%- endmacro %}
-{% macro property_setter_decl(property) -%}
-virtual void set{{property|upperfirst}}({{ property|parameterType }});
+{% macro property_setter_decl(property, ending=";") -%}
+virtual void set{{property|upperfirst}}({{ property|parameterType }}){{ending}}
{%- endmacro %}
-{% macro property_getter_decl(property) -%}
-virtual {{property|returnType}} {{property}}() const;
+{% macro property_getter_decl(property, ending=";") -%}
+virtual {{property|returnType}} {{property}}() const{{ending}}
{%- endmacro %}
{% macro signal_decl(symbol, postfix="") -%}
void {{symbol}}{{postfix}}({{symbol|parameters}});
{%- endmacro %}
-{% macro property_member_decl(property) %}
+{% macro property_member_decl(property) -%}
{{property|returnType}} m_{{property}};
{%- endmacro %}
@@ -56,7 +61,7 @@ void {{class}}::set{{property|upperfirst}}({{ property|parameterType }})
{%- endmacro %}
-{% macro operation_impl(class, operation) %}
+{% macro operation_impl(class, operation) -%}
/*!
\qmlmethod {{operation.type}} {{class}}::{{operation}}({{operation|parameters}})
{% with doc = operation.comment|parse_doc %}
@@ -72,24 +77,22 @@ void {{class}}::set{{property|upperfirst}}({{ property|parameterType }})
qWarning() << "{{class}}::{{operation}}(...) not implemented";
return {{operation|defaultValue}};
}
-{% endmacro %}
+{%- endmacro %}
-{% macro operation_decl(operation) %}
- virtual {{operation|returnType}} {{operation}}({{operation|parameters}});
-{% endmacro %}
+{% macro operation_decl(operation, ending=";") -%}
+ virtual {{operation|returnType}} {{operation}}({{operation|parameters}}){{ending}}
+{%- endmacro %}
-{% macro autogenerated(prefix="//") %}
+{% macro autogenerated(prefix="//") -%}
{{prefix}} This is an auto-generated file.
{{prefix}} Do not edit! All changes made to it will be lost.
-{% endmacro %}
-
-{% macro preserved(prefix="//") %}
+{%- endmacro %}
+{% macro preserved(prefix="//") -%}
{{prefix}} This is a preserved file.
{{prefix}} Changes will not be overriden by the generator.
{{prefix}} To reset the file you need to delete it first.
-
-{% endmacro %}
+{%- endmacro %}
diff --git a/tests/test_qtcpp_helper.py b/tests/test_qtcpp_helper.py
index de83448..b75a88a 100644
--- a/tests/test_qtcpp_helper.py
+++ b/tests/test_qtcpp_helper.py
@@ -83,7 +83,7 @@ def test_return_type():
# check for enum
prop = interface._propertyMap['status']
answer = qtcpp.Filters.returnType(prop)
- assert answer == 'ExampleModule::Status'
+ assert answer == 'Status::StatusEnum'
# check for list of primitive
prop = interface._propertyMap['list001']
@@ -134,7 +134,7 @@ def test_default_value():
# check for enum
prop = interface._propertyMap['status']
answer = qtcpp.Filters.defaultValue(prop)
- assert answer == 'ExampleModule::ON'
+ assert answer == 'Status::StatusEnum::ON'
# check for flag
prop = interface._propertyMap['state']
@@ -191,7 +191,7 @@ def test_parameter_type():
# check for enum
prop = interface._propertyMap['status']
answer = qtcpp.Filters.parameterType(prop)
- assert answer == 'ExampleModule::Status {0}'.format(prop.name)
+ assert answer == 'Status::StatusEnum {0}'.format(prop.name)
# check for list of primitive
prop = interface._propertyMap['list001']