summaryrefslogtreecommitdiffstats
path: root/scripts/templates
diff options
context:
space:
mode:
authorSandro S. Andrade <sandroandrade@kde.org>2013-10-13 13:35:50 -0300
committerSandro S. Andrade <sandroandrade@kde.org>2013-10-13 18:32:20 +0200
commit0c0b3b07143b672c6f0a310c5eb5c6a8a476c573 (patch)
treeaa0b1526cdd3b430de983a7ef5b47d87c92d759f /scripts/templates
parenta0535229c832c3753c41702bd4ab9d69d3081f13 (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.tmpl38
-rw-r--r--scripts/templates/qclass.cpp22
-rw-r--r--scripts/templates/qclass.h15
-rw-r--r--scripts/templates/qobjectclass.cpp2
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) -%]