diff --git a/file_templates/classes/qt_shared/class.cpp b/file_templates/classes/qt_shared/class.cpp --- a/file_templates/classes/qt_shared/class.cpp +++ b/file_templates/classes/qt_shared/class.cpp @@ -15,21 +15,83 @@ {% endfor %} }; + +{% for method in private_functions %} + +{% include "method_definition_cpp.txt" %} +{ + {% if method.type %} + return {{ method.default_return_value }}; + {% endif %} +} + +{% endfor %} + {% endblock extra_declarations %} {% block function_definitions %} -{% for member in members %} +{% for method in public_functions %} +{% with method.arguments as arguments %} + +{% include "method_definition_cpp.txt" %} +{% if method.isConstructor %} + {% with arguments|first as argFirst %} + {# copy constructor? #} + {% if arguments|length == 1 and argFirst.type == method.name|arg_type %} + : d({{ argFirst.name }}.d) + {% else %} + : d(new {{ name }}Data()) + {% endif %} + {% endwith %} +{% endif %} +{ + {% if "operator=" == method.name %} + d = other.d; + return *this; + {% else %} + {% if method.type %}return {{ method.default_return_value }}; + {% endif %} + {% endif %} +} + +{% endwith %} +{% endfor %} + +{% for method in protected_functions %} +{% with method.arguments as arguments %} + +{% include "method_definition_cpp.txt" %} +{% if method.isConstructor %} + {% with arguments|first as argFirst %} + {# copy constructor? #} + {% if arguments|length == 1 and argFirst.type == method.name|arg_type %} + : d({{ argFirst.name }}.d) + {% else %} + : d(new {{ name }}Data()) + {% endif %} + {% endwith %} +{% endif %} +{ + {% if method.type %}return {{ method.default_return_value }}; + {% endif %} +} + +{% endwith %} +{% endfor %} + +{% for property in members %} + -{{ member.type }} {{ name }}::{{ member.name }}() const +{% include "class_property_getter_definition_cpp.txt" %} { - return d->{{ member.name }}; + return d->{{ property.name }}; } -void {{ name }}::set{{ member.name|capfirst }}({{ member.type|arg_type }} {{ member.name }}) +{% include "class_property_setter_definition_cpp.txt" %} { - d->{{ member.name }} = {{ member.name }}; + d->{{ property.name }} = {{ property.name }}; } {% endfor %}