summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorSandro S. Andrade <sandroandrade@kde.org>2013-08-23 19:01:47 -0300
committerSandro S. Andrade <sandroandrade@kde.org>2013-08-24 00:05:10 +0200
commita0a9212f0e2e9cdd28f56d0d43c1b967e1d01c65 (patch)
tree3e47ef1a08a1c07bfcf105d9714997870cadfa87 /scripts
parentcac2d532793a8ea2c871fdfca0c122fa4e605d1f (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.cpp43
-rw-r--r--scripts/templates/class_p.h9
-rw-r--r--scripts/templates/modulenamespace.cpp2
-rw-r--r--scripts/templates/modulenamespace.h2
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 %]