diff options
author | Sandro S. Andrade <sandroandrade@kde.org> | 2013-10-13 13:35:50 -0300 |
---|---|---|
committer | Sandro S. Andrade <sandroandrade@kde.org> | 2013-10-13 18:32:20 +0200 |
commit | 0c0b3b07143b672c6f0a310c5eb5c6a8a476c573 (patch) | |
tree | aa0b1526cdd3b430de983a7ef5b47d87c92d759f /scripts/templates | |
parent | a0535229c832c3753c41702bd4ab9d69d3081f13 (diff) |
Fix template bugs when generating MOF metamodel
Change-Id: I53981cdcb981bc72ecaf407232fa3d56b8ca2043
Reviewed-by: Sandro S. Andrade <sandroandrade@kde.org>
Diffstat (limited to 'scripts/templates')
-rw-r--r-- | scripts/templates/common.tmpl | 38 | ||||
-rw-r--r-- | scripts/templates/qclass.cpp | 22 | ||||
-rw-r--r-- | scripts/templates/qclass.h | 15 | ||||
-rw-r--r-- | scripts/templates/qobjectclass.cpp | 2 |
4 files changed, 51 insertions, 26 deletions
diff --git a/scripts/templates/common.tmpl b/scripts/templates/common.tmpl index fa8afb5a..5f4a2ef1 100644 --- a/scripts/templates/common.tmpl +++ b/scripts/templates/common.tmpl @@ -169,10 +169,11 @@ ${attributeName} [%- SET qtType = QT_TYPE(namespace, operation.findnodes("ownedParameter[@direction='return']"), "false") -%] Q_INVOKABLE [%- IF qtType != " " -%]${qtType}[%- ELSE -%]void [%- END -%] -${operationName}( +[%- IF uml2qt_attribute.item(operationName) != "" -%]${uml2qt_attribute.item(operationName)}[%- ELSE -%]${operationName}[%- END -%]( [%- FOREACH parameter = operation.findnodes("ownedParameter[@direction!='return']") -%] [%- QT_TYPE(namespace, parameter, "false") -%] -${parameter.findvalue("@name")} +[%- SET parameterName = parameter.findvalue("@name") -%] +[%- IF uml2qt_attribute.item(parameterName) != "" -%]${uml2qt_attribute.item(parameterName)}[%- ELSE -%]${parameterName}[%- END -%] [%- IF !loop.last %], [% END -%] [%- END -%] )[% IF operation.findvalue("@isQuery") == "true" %] const[% END %]; @@ -280,6 +281,7 @@ ${parameter.findvalue("@name")} [% SET found = "true" -%] [% END -%] [% SET operationName = operation.findvalue("@name") -%] +[%- IF uml2qt_attribute.item(operationName) != "" -%][% SET operationName = uml2qt_attribute.item(operationName) -%][%- END -%] [%- NEXT IF redefinedOperations.grep("^${className}-${operationName}$").size > 0 -%] [%- SET return = QT_TYPE(namespace, operation.findnodes("ownedParameter[@direction='return']"), "false") %] [%- SET originalReturn = QT_TYPE(namespace, operation.findnodes("ownedParameter[@direction='return']"), "true") %] @@ -287,7 +289,9 @@ ${parameter.findvalue("@name")} Q${namespace}${originalClassName}Object::${operationName}( [%- FOREACH parameter = operation.findnodes("ownedParameter[@direction!='return']") -%] [%- QT_TYPE(namespace, parameter, "false") -%] -${parameter.findvalue("@name")} +[%- SET parameterName = parameter.findvalue("@name") -%] +[%- IF uml2qt_attribute.item(parameterName) != "" -%][%- SET parameterName = uml2qt_attribute.item(parameterName) -%][%- END -%] +${parameterName} [%- IF !loop.last %], [% END -%] [%- END -%] )[% IF operation.findvalue("@isQuery") == "true" %] const[% END %] @@ -303,13 +307,15 @@ ${parameter.findvalue("@name")} ${return}[% IF qtType.match("QList") %]list[% ELSE %]set[% END %]; foreach (${originalReturn.remove("QList<").remove("QSet<").remove(">").trim}element, qmodelingelementproperty_cast<Q${namespace}${originalClassName} *>(this)->${operationName}( [%- FOREACH parameter = operation.findnodes("ownedParameter[@direction!='return']") -%] + [%- SET parameterName = parameter.findvalue("@name") -%] + [%- IF uml2qt_attribute.item(parameterName) != "" -%][%- SET parameterName = uml2qt_attribute.item(parameterName) -%][%- END -%] [%- qtType = QT_TYPE(namespace, parameter, "true") -%] [%- IF qtType.match('QList|QSet') -%] -${parameter.findvalue("@name")}Converted +${parameterName}Converted [%- ELSIF qtType.match('\*$') -%] qmodelingelementproperty_cast<${qtType.remove("QList<").remove("QSet<").remove(">")}>(${parameter.findvalue("@name")}) [%- ELSE -%] -${parameter.findvalue("@name")} +${parameterName} [%- END -%] [%- IF !loop.last %], [% END -%] [%- END -%])) @@ -318,11 +324,15 @@ ${parameter.findvalue("@name")} [%- ELSIF !return.match("QList|QSet") && return.match('\*$') %] if (!qmodelingelementproperty_cast<Q${namespace}${originalClassName} *>(this)->${operationName}( [%- FOREACH parameter = operation.findnodes("ownedParameter[@direction!='return']") -%] + [%- SET parameterName = parameter.findvalue("@name") -%] + [%- IF uml2qt_attribute.item(parameterName) != "" -%][%- SET parameterName = uml2qt_attribute.item(parameterName) -%][%- END -%] [%- qtType = QT_TYPE(namespace, parameter, "true") -%] [%- IF qtType.match('\*$') -%] -qmodelingelementproperty_cast<${qtType.remove("QList<").remove("QSet<").remove(">")}>(${parameter.findvalue("@name")}) +[%- SET parameterName = parameter.findvalue("@name") -%] +[%- IF uml2qt_attribute.item(parameterName) != "" -%][%- SET parameterName = uml2qt_attribute.item(parameterName) -%][%- END -%] +qmodelingelementproperty_cast<${qtType.remove("QList<").remove("QSet<").remove(">")}>(${parameterName}) [%- ELSE -%] -${parameter.findvalue("@name")} +${parameterName}[%- IF QT_TYPE(namespace, parameter, "true").match("QList|QSet") %]Converted[%- END -%] [%- END -%] [%- IF !loop.last %], [% END -%] [%- END -%])) @@ -330,22 +340,26 @@ ${parameter.findvalue("@name")} else return qmodelingelementproperty_cast<Q${namespace}${originalClassName} *>(this)->${operationName}( [%- FOREACH parameter = operation.findnodes("ownedParameter[@direction!='return']") -%] + [%- SET parameterName = parameter.findvalue("@name") -%] + [%- IF uml2qt_attribute.item(parameterName) != "" -%][%- SET parameterName = uml2qt_attribute.item(parameterName) -%][%- END -%] [%- qtType = QT_TYPE(namespace, parameter, "true") -%] [%- IF qtType.match('\*$') -%] -qmodelingelementproperty_cast<${qtType.remove("QList<").remove("QSet<").remove(">")}>(${parameter.findvalue("@name")}) +qmodelingelementproperty_cast<${qtType.remove("QList<").remove("QSet<").remove(">")}>(${parameterName}) [%- ELSE -%] -${parameter.findvalue("@name")} +${parameterName}[%- IF QT_TYPE(namespace, parameter, "true").match("QList|QSet") %]Converted[%- END -%] [%- END -%] [%- IF !loop.last %], [% END -%] [%- END -%])->asQModelingObject(); [%- ELSE %] return qmodelingelementproperty_cast<Q${namespace}${originalClassName} *>(this)->${operationName}( [%- FOREACH parameter = operation.findnodes("ownedParameter[@direction!='return']") -%] + [%- SET parameterName = parameter.findvalue("@name") -%] + [%- IF uml2qt_attribute.item(parameterName) != "" -%][%- SET parameterName = uml2qt_attribute.item(parameterName) -%][%- END -%] [%- qtType = QT_TYPE(namespace, parameter, "true") -%] [%- IF qtType.match('\*$') -%] -qmodelingelementproperty_cast<${qtType.remove("QList<").remove("QSet<").remove(">")}>(${parameter.findvalue("@name")}) +qmodelingelementproperty_cast<${qtType.remove("QList<").remove("QSet<").remove(">")}>(${parameterName}) [%- ELSE -%] -${parameter.findvalue("@name")} +${parameterName} [%- END -%] [%- IF !loop.last %], [% END -%] [%- END -%]); @@ -433,7 +447,7 @@ void Q${namespace}${originalClassName}Object::unset${qtAttribute.remove("^is").u [%- SET parentName = parent.findvalue("@general") -%] [%- IF visitedClasses.grep("^${parentName}$").size == 0 -%] [%- visitedClasses.push("${parentName}") -%] - [%- GENERATE_FWD_DECLARATIONS(xmi.findnodes("//packagedElement[@xmi:type=\"uml:Class\" and @name=\"${parentName}\"]"), visitedClasses, forwards, useNamespace, superclasses) -%] + [%- GENERATE_FWD_DECLARATIONS(xmi.findnodes("//packagedElement[@xmi:type=\"uml:Class\" and @name=\"${parentName}\"]"), visitedClasses, forwards, useNamespace, superclasses, recursive) -%] [%- END -%] [%- END -%] [%- END -%] diff --git a/scripts/templates/qclass.cpp b/scripts/templates/qclass.cpp index bf204676..44b532a8 100644 --- a/scripts/templates/qclass.cpp +++ b/scripts/templates/qclass.cpp @@ -48,9 +48,11 @@ [%- superclasses = [] -%] [%- SET generalization = class.findnodes("generalization") -%] [%- FOREACH superclass IN generalization -%] -[%- superclasses.push("${namespace}${superclass.findvalue('@general')}") -%] +[%- SET superclassName = superclass.findvalue("@general") -%] +[%- IF superclassName == "" -%][%- SET superclassName = superclass.findnodes("general").findvalue("@xmi:idref") -%][%- END -%] +[%- superclasses.push("${namespace}${superclassName}") -%] [%- END %] -[% SET useNamespace = 'false' -%] +[% useNamespace = [] -%] [%- forwards = [] -%] [%- visitedClasses = [] -%] [%- GENERATE_FWD_DECLARATIONS(class, visitedClasses, forwards, useNamespace, superclasses) -%] @@ -70,7 +72,8 @@ Q${namespace}${className}::Q${namespace}${className}([%- IF class.findvalue("@isAbstract") != "true" %]bool createQModelingObject[% END %]) [%- SET found = "false" -%] [%- FOREACH superclass IN generalization -%] -[%- SET superclassName = superclass.findvalue('@general') -%] +[%- SET superclassName = superclass.findvalue("@general") -%] +[%- IF superclassName == "" -%][%- SET superclassName = superclass.findnodes("general").findvalue("@xmi:idref") -%][%- END -%] [%- IF xmi.findvalue("//packagedElement[@xmi:type=\"uml:Class\" and @name=\"${superclassName}\"]/@isAbstract") != "true" -%] [%- IF found == "false" %] : [% SET found = "true" -%] @@ -133,9 +136,9 @@ QModelingElement *Q${namespace}${className}::clone() const [%- GENERATE_CLONE(class, visitedClasses, redefinedProperties) %] return c; } + [%- FOREACH attribute = class.findnodes("ownedAttribute") %] [%- IF loop.first %] - // OWNED ATTRIBUTES [%- END %] @@ -371,19 +374,22 @@ void Q${namespace}${className}::set${attributeName.remove("^Is")}([% IF !qtType. ${documentation} */ [% END %] -[%- IF returnType != " " -%]${returnType}[%- ELSE -%]void [%- END -%]Q${namespace}${className}::${operationName}( +[%- IF returnType != " " -%]${returnType}[%- ELSE -%]void [%- END -%]Q${namespace}${className}::[%- IF uml2qt_attribute.item(operationName) != "" -%]${uml2qt_attribute.item(operationName)}[%- ELSE -%]${operationName}[%- END -%]( [%- SET parameters = operation.findnodes("ownedParameter[@direction!='return']") -%] [%- FOREACH parameter = parameters -%] [%- QT_TYPE(namespace, parameter) -%] -${parameter.findvalue("@name")} +[%- SET parameterName = parameter.findvalue("@name") -%] +[%- IF uml2qt_attribute.item(parameterName) != "" -%]${uml2qt_attribute.item(parameterName)}[%- ELSE -%]${parameterName}[%- END -%] [%- IF !loop.last %], [% END -%] [%- END -%] )[% IF operation.findvalue("@isQuery") == "true" %] const[% END %] { qWarning("${namespace}${className}::${operationName}(): to be implemented (operation)"); - [%- FOREACH parameter = parameters %] - Q_UNUSED(${parameter.findvalue("@name")}); + [%- FOREACH parameter = parameters -%] + [%- SET parameterName = parameter.findvalue("@name") -%] + [%- IF uml2qt_attribute.item(parameterName) != "" -%][%- SET parameterName = uml2qt_attribute.item(parameterName) -%][%- END %] + Q_UNUSED(${parameterName}); [%- END %] [%- IF returnType != " " -%] [%- IF returnType.match('\*$') %] diff --git a/scripts/templates/qclass.h b/scripts/templates/qclass.h index d13fe6c4..7e2025d3 100644 --- a/scripts/templates/qclass.h +++ b/scripts/templates/qclass.h @@ -48,6 +48,7 @@ [%- SET generalization = class.findnodes("generalization") -%] [%- FOREACH superclass IN generalization -%] [%- SET superclassName = superclass.findvalue("@general") -%] +[%- IF superclassName == "" -%][%- SET superclassName = superclass.findnodes("general").findvalue("@xmi:idref") -%][%- END -%] #include <Qt${namespace}/Q${namespace}${superclassName}> [% superclasses.push("${namespace}${superclassName}") -%] [%- IF loop.last %] @@ -57,12 +58,13 @@ #include <QtModeling/QModelingElement> [% END -%] -[% SET useNamespace = 'false' -%] +[% useNamespace = [] -%] [%- forwards = [] -%] [%- visitedClasses = [] -%] [%- GENERATE_FWD_DECLARATIONS(class, visitedClasses, forwards, useNamespace, superclasses, "false") -%] -[%- IF useNamespace == 'true' %] +[%- IF useNamespace.size > 0 -%] #include <Qt${namespace}/Qt${namespace}Namespace> + [% END -%] QT_BEGIN_HEADER @@ -78,7 +80,9 @@ class ${forward}; class Q_${namespace.upper}_EXPORT Q${namespace}${className} : [%- FOREACH superclass IN generalization -%] -public Q${namespace}${superclass.findvalue("@general")} +[%- SET superclassName = superclass.findvalue("@general") -%] +[%- IF superclassName == "" -%][%- SET superclassName = superclass.findnodes("general").findvalue("@xmi:idref") -%][%- END -%] +public Q${namespace}${superclassName} [%- IF !loop.last %], [% END -%] [%- END -%] [%- IF superclasses.size == 0 -%] @@ -121,14 +125,15 @@ public: [%- ELSE -%] void [%- END -%] -${operationName}( +[%- IF uml2qt_attribute.item(operationName) != "" -%]${uml2qt_attribute.item(operationName)}[%- ELSE -%]${operationName}[%- END -%]( [%- FOREACH parameter = operation.findnodes("ownedParameter[@direction!='return']") -%] [%- SET qtType = QT_TYPE(namespace, parameter) -%] [%- IF qtType != " " -%] [%- qtType -%] [%- ELSE -%] [%- END -%] -${parameter.findvalue("@name")} +[%- SET parameterName = parameter.findvalue("@name") -%] +[%- IF uml2qt_attribute.item(parameterName) != "" -%]${uml2qt_attribute.item(parameterName)}[%- ELSE -%]${parameterName}[%- END -%] [%- IF !loop.last %], [% END -%] [%- END -%] )[% IF operation.findvalue("@isQuery") == "true" %] const[% END %]; diff --git a/scripts/templates/qobjectclass.cpp b/scripts/templates/qobjectclass.cpp index 8568b560..83b13dd0 100644 --- a/scripts/templates/qobjectclass.cpp +++ b/scripts/templates/qobjectclass.cpp @@ -44,7 +44,7 @@ #include <Qt${namespace}/Q${namespace}${className}> [%- superclasses = [] %] -[% SET useNamespace = 'false' -%] +[% useNamespace = [] -%] [%- forwards = [] -%] [%- visitedClasses = [] -%] [%- GENERATE_FWD_DECLARATIONS(class, visitedClasses, forwards, useNamespace, superclasses) -%] |