diff options
author | Juergen Bocklage-Ryannel <jbocklage-ryannel@luxoft.com> | 2018-01-25 14:26:07 +0100 |
---|---|---|
committer | Juergen Bocklage-Ryannel <jbocklage-ryannel@luxoft.com> | 2018-01-25 14:26:07 +0100 |
commit | aef0548e6963b163e7e0e2a35db8efa87f13ee14 (patch) | |
tree | 1fae1838a95816515e47e4e8855bac2697e577fd | |
parent | cf676a4340f64f6a5b9f38b4e2bd3401c6d57d47 (diff) | |
download | qtivi-qface-aef0548e6963b163e7e0e2a35db8efa87f13ee14.tar.gz |
- Updated enum test. No test will pass again.
- also switched to yaml safe loader
-rw-r--r-- | qface/helper/qtcpp.py | 13 | ||||
-rw-r--r-- | qface/idl/listener.py | 4 | ||||
-rw-r--r-- | qface/templates/qface/qtcpp.j2 | 41 | ||||
-rw-r--r-- | tests/test_qtcpp_helper.py | 6 |
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'] |