diff options
author | Sandro S. Andrade <sandroandrade@kde.org> | 2013-08-23 19:01:47 -0300 |
---|---|---|
committer | Sandro S. Andrade <sandroandrade@kde.org> | 2013-08-24 00:05:10 +0200 |
commit | a0a9212f0e2e9cdd28f56d0d43c1b967e1d01c65 (patch) | |
tree | 3e47ef1a08a1c07bfcf105d9714997870cadfa87 /scripts | |
parent | cac2d532793a8ea2c871fdfca0c122fa4e605d1f (diff) |
Add attribute initialization from default values described in xmi
Change-Id: Icdfee9149e0120abdee1c9aac8a6b6d27e86701b
Reviewed-by: Sandro S. Andrade <sandroandrade@kde.org>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/templates/class.cpp | 43 | ||||
-rw-r--r-- | scripts/templates/class_p.h | 9 | ||||
-rw-r--r-- | scripts/templates/modulenamespace.cpp | 2 | ||||
-rw-r--r-- | scripts/templates/modulenamespace.h | 2 |
4 files changed, 53 insertions, 3 deletions
diff --git a/scripts/templates/class.cpp b/scripts/templates/class.cpp index 8f8d4930..4099137f 100644 --- a/scripts/templates/class.cpp +++ b/scripts/templates/class.cpp @@ -40,6 +40,7 @@ ** ****************************************************************************/ #include "q${namespace.lower}${className.lower}.h" +#include "q${namespace.lower}${className.lower}_p.h" [%- superclasses = [] -%] [%- FOREACH superclass = class.findnodes("generalization") -%] [%- superclasses.push("Q${namespace}${superclass.findvalue('@general')}") -%] @@ -59,6 +60,48 @@ QT_BEGIN_NAMESPACE +Q${namespace}${className}Private::Q${namespace}${className}Private() +[%- SET found = "false" -%] +[%- FOREACH attribute = class.findnodes("ownedAttribute") -%] + [%- SET defaultType = attribute.findvalue("defaultValue/@xmi:type") -%] + [%- SET type = QT_TYPE(namespace, attribute) -%] + [%- IF defaultType == "uml:LiteralBoolean" || defaultType == "uml:InstanceValue" || defaultType == "uml:LiteralInteger" || defaultType == "uml:LiteralUnlimitedNatural" || type.match('\*$') -%] + [%- IF found == "false" %] : +[% SET found = "true" -%] + [%- ELSE %], +[% END -%] + [%- END -%] + [%- IF defaultType == "uml:LiteralBoolean" -%] + [%- SET defaultValue = attribute.findvalue("defaultValue/@value") -%] + [%- IF defaultValue != "" -%] + [% QT_ATTRIBUTE(attribute) %](${defaultValue}) + [%- ELSE -%] + [% QT_ATTRIBUTE(attribute) %](false) + [%- END -%] + [%- ELSIF defaultType == "uml:InstanceValue" -%] + [%- SET defaultInstance = attribute.findvalue("defaultValue/@instance") -%] + [% QT_ATTRIBUTE(attribute) %](Qt${namespace}::${defaultInstance.split("-").0.remove("Kind$").remove("Sort$")}${defaultInstance.split("-").1.ucfirst}) + [%- ELSIF defaultType == "uml:LiteralInteger" -%] + [%- SET defaultValue = attribute.findvalue("defaultValue/@value") -%] + [%- IF defaultValue != "" -%] + [% QT_ATTRIBUTE(attribute) %](${defaultValue}) + [%- ELSE -%] + [% QT_ATTRIBUTE(attribute) %](0) + [%- END -%] + [%- ELSIF defaultType == "uml:LiteralUnlimitedNatural" -%] + [%- SET defaultValue = attribute.findvalue("defaultValue/@value") -%] + [%- IF defaultValue != "" -%] + [% QT_ATTRIBUTE(attribute) %](${defaultValue}) + [%- ELSE -%] + [% QT_ATTRIBUTE(attribute) %](0) + [%- END -%] + [%- ELSIF type.match('\*$') -%] + [% QT_ATTRIBUTE(attribute) %](0) + [%- END -%] +[%- END %] +{ +} + /*! \class Q${namespace}${className} diff --git a/scripts/templates/class_p.h b/scripts/templates/class_p.h index cda0a862..d68c8930 100644 --- a/scripts/templates/class_p.h +++ b/scripts/templates/class_p.h @@ -44,6 +44,11 @@ #include "Qt${namespace}/Q${namespace}${className}" +[%- SET superclasses = class.findnodes('generalization') -%] +[%- FOREACH superclass IN superclasses %] +#include "private/q${namespace.lower}${superclass.findvalue('@general').lower}_p.h" +[%- END %] + QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -51,13 +56,15 @@ QT_BEGIN_NAMESPACE QT_MODULE(Qt${namespace}) class Q_${namespace.upper}_EXPORT Q${namespace}${className}Private -[%- FOREACH superclass = class.findnodes('generalization') -%] +[%- FOREACH superclass IN superclasses -%] [%- IF loop.first %] :[% END -%] public Q${namespace}${superclass.findvalue('@general')}Private [%- IF !loop.last %],[% END -%] [%- END %] { public: + Q${namespace}${className}Private(); + [%- FOREACH attribute = class.findnodes("ownedAttribute") %] [% QT_TYPE(namespace, attribute) -%][%- QT_ATTRIBUTE(attribute) %]; [%- END %] diff --git a/scripts/templates/modulenamespace.cpp b/scripts/templates/modulenamespace.cpp index 3cb601e5..85d958f0 100644 --- a/scripts/templates/modulenamespace.cpp +++ b/scripts/templates/modulenamespace.cpp @@ -52,7 +52,7 @@ QT_BEGIN_NAMESPACE ${enumeration.findvalue("ownedComment/body/text()")} [%- FOREACH literal IN enumeration.findnodes("ownedLiteral") %] - \value ${enumerationName.remove("Kind$")}${literal.findvalue("@name").ucfirst} ${literal.findvalue("ownedComment/body/text()")} + \value ${enumerationName.remove("Kind$").remove("Sort$")}${literal.findvalue("@name").ucfirst} ${literal.findvalue("ownedComment/body/text()")} [% END -%] */ [% END -%] diff --git a/scripts/templates/modulenamespace.h b/scripts/templates/modulenamespace.h index 2d931fb6..6e73e8f3 100644 --- a/scripts/templates/modulenamespace.h +++ b/scripts/templates/modulenamespace.h @@ -66,7 +66,7 @@ public: enum ${enumerationName} { [%- FOREACH literal IN enumeration.findnodes("ownedLiteral") %] - ${enumerationName.remove("Kind$")}${literal.findvalue("@name").ucfirst}[%- IF loop.first -%] = 0[%- END -%][%- IF !loop.last -%],[%- END -%] + ${enumerationName.remove("Kind$").remove("Sort$")}${literal.findvalue("@name").ucfirst}[%- IF loop.first -%] = 0[%- END -%][%- IF !loop.last -%],[%- END -%] [%- END %] }; [%- END %] |