summaryrefslogtreecommitdiffstats
path: root/scripts/templates/common.tmpl
diff options
context:
space:
mode:
authorSandro S. Andrade <sandroandrade@kde.org>2013-10-13 01:52:01 -0300
committerSandro S. Andrade <sandroandrade@kde.org>2013-10-13 06:48:52 +0200
commitbd593f7348c8012698fff260d7967528bcf67afe (patch)
treeca75826e9812d10e337ca14bd3bd4264d7466a2a /scripts/templates/common.tmpl
parentb505b189ff61ba1d325d95d6ef928aa146bb4c05 (diff)
Fix template bugs when generating MOF metamodel implementation
Change-Id: I2d75b3b668248988f15f0f496cb2d4ef386b48cc Reviewed-by: Sandro S. Andrade <sandroandrade@kde.org>
Diffstat (limited to 'scripts/templates/common.tmpl')
-rw-r--r--scripts/templates/common.tmpl40
1 files changed, 24 insertions, 16 deletions
diff --git a/scripts/templates/common.tmpl b/scripts/templates/common.tmpl
index 7d9d052f..fa8afb5a 100644
--- a/scripts/templates/common.tmpl
+++ b/scripts/templates/common.tmpl
@@ -13,15 +13,19 @@
[%- SET isUnique = attribute.findvalue("@isUnique") -%]
[%- SET isOrdered = attribute.findvalue("@isOrdered") -%]
[%- IF multiplicity == "*" %][% IF (isUnique == "true" || isUnique == "") && (isOrdered == "false" || isOrdered == "") %]QSet[% ELSE %]QList[% END %]<[% END -%]
- [%- attributeType = attribute.findvalue("@type") -%]
- [%- IF attributeType != "" -%]
- [%- IF xmi.findnodes("//packagedElement[@xmi:type='uml:Enumeration' and @name='$attributeType']").findvalue("@name") != "" -%]
+ [%- SET attributeType = attribute.findvalue("@type").split('#').last -%]
+ [%- IF attributeType == "" -%][%- SET attributeType = attribute.findnodes("type").findvalue("@xmi:idref") -%][%- END -%]
+ [%- IF attributeType == "" -%][%- SET attributeType = attribute.findnodes("type").findvalue("@href") -%][%- END -%]
+ [%- IF !attributeType.match('PrimitiveTypes\.xmi') -%]
+ [%- IF xmi.findnodes("//packagedElement[@xmi:type='uml:Enumeration' and @name='$attributeType']").findvalue("@name") != "" -%]
Qt${namespace}::${attributeType}
- [%- ELSE -%]
+ [%- ELSE -%]
+[%- IF attributeType != "" -%]
[% IF external == "false" %]QObject *[% ELSE %]Q${namespace}${attributeType} *[% END %]
- [%- END -%]
+[%- ELSE %] [% END -%]
+ [%- END -%]
[%- ELSE -%]
-${uml2qt_type.item(attribute.findnodes("type").findvalue("@href").split("#").last)}[%- IF multiplicity != "*" %] [% END -%]
+${uml2qt_type.item(attributeType.split('#').last)}[%- IF multiplicity != "*" %] [% END -%]
[%- END -%]
[%- IF multiplicity == "*" %]> [% END -%]
[%- END -%]
@@ -162,8 +166,9 @@ ${attributeName}
[%- END %]
[%- SET operationName = operation.findvalue("@name") -%]
[%- NEXT IF redefinedOperations.grep("^${className}-${operationName}$").size > 0 -%]
+[%- SET qtType = QT_TYPE(namespace, operation.findnodes("ownedParameter[@direction='return']"), "false") -%]
- Q_INVOKABLE [% QT_TYPE(namespace, operation.findnodes("ownedParameter[@direction='return']"), "false") -%]
+ Q_INVOKABLE [%- IF qtType != " " -%]${qtType}[%- ELSE -%]void [%- END -%]
${operationName}(
[%- FOREACH parameter = operation.findnodes("ownedParameter[@direction!='return']") -%]
[%- QT_TYPE(namespace, parameter, "false") -%]
@@ -272,13 +277,13 @@ ${parameter.findvalue("@name")}
[%- IF found == "false" -%]
// OPERATIONS [${className}]
-[%- SET found = "true" -%]
+[% SET found = "true" -%]
[% END -%]
[% SET operationName = operation.findvalue("@name") -%]
[%- 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") %]
-[% return -%]
+[%- IF return != " " %]${return}[%- ELSE %]void [%- END -%]
Q${namespace}${originalClassName}Object::${operationName}(
[%- FOREACH parameter = operation.findnodes("ownedParameter[@direction!='return']") -%]
[%- QT_TYPE(namespace, parameter, "false") -%]
@@ -347,10 +352,8 @@ ${parameter.findvalue("@name")}
[%- END %]
}
-[%- IF loop.last %]
[% END -%]
[%- END -%]
-[%- END -%]
[%- MACRO GENERATE_CPP_SLOTS(originalClassName, class, visitedClasses, redefinedProperties) BLOCK -%]
[%- FOREACH parent IN class.findnodes("generalization") -%]
[%- SET parentName = parent.findvalue("@general") -%]
@@ -424,20 +427,25 @@ void Q${namespace}${originalClassName}Object::unset${qtAttribute.remove("^is").u
[% END -%]
[%- END %]
[%- END -%]
-[%- MACRO GENERATE_FWD_DECLARATIONS(class, visitedClasses, forwards, useNamespace) BLOCK -%]
+[%- MACRO GENERATE_FWD_DECLARATIONS(class, visitedClasses, forwards, useNamespace, superclasses, recursive) BLOCK -%]
+[%- IF recursive != "false" -%]
[%- FOREACH parent IN class.findnodes("generalization") -%]
[%- 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) -%]
+ [%- visitedClasses.push("${parentName}") -%]
+ [%- GENERATE_FWD_DECLARATIONS(xmi.findnodes("//packagedElement[@xmi:type=\"uml:Class\" and @name=\"${parentName}\"]"), visitedClasses, forwards, useNamespace, superclasses) -%]
[%- END -%]
[%- END -%]
-[%- FOREACH forward = class.findnodes("ownedAttribute[@type] | ownedOperation/ownedParameter[@type]") -%]
+[%- END -%]
+[%- FOREACH forward = class.findnodes("ownedAttribute[@type] | ownedOperation/ownedParameter[@type] | ownedAttribute/type | ownedOperation/ownedParameter/type") -%]
[%- SET forwardName = forward.findvalue('@type') -%]
+[%- IF forwardName == "" -%][%- SET forwardName = forward.findvalue('@xmi:idref') -%][%- END -%]
+[%- IF forwardName == "" -%][%- SET forwardName = forward.findvalue('@href') -%][%- END -%]
+[%- NEXT IF forwardName.match('PrimitiveTypes') -%]
[%- IF xmi.findnodes("//packagedElement[@xmi:type='uml:Enumeration' and @name='$forwardName']").findvalue("@name") != "" -%]
[%- useNamespace.push("true") -%]
[%- ELSE -%]
-[%- IF forwardName != className -%][%- forwards.push("Q${namespace}${forwardName}") -%][%- END -%]
+[%- IF forwardName != className && superclasses.grep("^${namespace}${forwardName}\$").size == 0 -%][%- forwards.push("Q${namespace}${forwardName}") -%][%- END -%]
[%- END -%]
[%- END -%]
[%- END -%]