diff options
author | Sandro S. Andrade <sandroandrade@kde.org> | 2013-10-13 01:52:01 -0300 |
---|---|---|
committer | Sandro S. Andrade <sandroandrade@kde.org> | 2013-10-13 06:48:52 +0200 |
commit | bd593f7348c8012698fff260d7967528bcf67afe (patch) | |
tree | ca75826e9812d10e337ca14bd3bd4264d7466a2a /scripts/templates/common.tmpl | |
parent | b505b189ff61ba1d325d95d6ef928aa146bb4c05 (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.tmpl | 40 |
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 -%] |