summaryrefslogtreecommitdiffstats
path: root/src/modeling/qtmodelingglobal.h
diff options
context:
space:
mode:
authorSandro S. Andrade <sandroandrade@kde.org>2013-10-03 09:32:07 -0400
committerSandro S. Andrade <sandroandrade@kde.org>2013-10-03 15:36:07 +0200
commit356292395d2be4c59c81bba6787af1317046af5b (patch)
tree4e6e7d353111b06db1ecd725439f9cccb639ab54 /src/modeling/qtmodelingglobal.h
parent4d19c1223d4320b0db0261eb6d9904c5be480177 (diff)
Fix xmi-write to work with new UML metamodel implementation
Change-Id: Ic46debecfdd68f1c38b22cee54c663c22db13cd6 Reviewed-by: Sandro S. Andrade <sandroandrade@kde.org>
Diffstat (limited to 'src/modeling/qtmodelingglobal.h')
-rw-r--r--src/modeling/qtmodelingglobal.h43
1 files changed, 42 insertions, 1 deletions
diff --git a/src/modeling/qtmodelingglobal.h b/src/modeling/qtmodelingglobal.h
index c1f40d20..809531ed 100644
--- a/src/modeling/qtmodelingglobal.h
+++ b/src/modeling/qtmodelingglobal.h
@@ -43,6 +43,9 @@
#include <QtCore/QtGlobal>
#include <QtCore/QVariant>
+#include <QtScript/QScriptValue>
+#include <QtScript/QScriptEngine>
+#include <QtScript/QScriptValueIterator>
QT_BEGIN_NAMESPACE
@@ -63,7 +66,45 @@ class QModelingObject;
template<class T>
T qmodelingobjectproperty_cast(const QObject *object)
{
- return object->property("modelingObject").value<T>();
+ return object ? object->property("modelingObject").value<T>():T();
+}
+
+template <class T>
+QScriptValue qSetToScriptValue(QScriptEngine *engine, const QSet<T *> &elements)
+{
+ QScriptValue array = engine->newArray();
+ foreach (T *element, elements)
+ array.property(QString::fromLatin1("push")).call(array, QScriptValueList() << engine->newQObject(element));
+ return array;
+}
+
+template <class T>
+void scriptValueToQSet(const QScriptValue &obj, QSet<T *> &elements)
+{
+ QScriptValueIterator it(obj);
+ while (it.hasNext()) {
+ it.next();
+ elements.insert(qobject_cast<T *>(it.value().toQObject()));
+ }
+}
+
+template <class T>
+QScriptValue qListToScriptValue(QScriptEngine *engine, const QList<T *> &elements)
+{
+ QScriptValue array = engine->newArray();
+ foreach (T *element, elements)
+ array.property(QString::fromLatin1("push")).call(array, QScriptValueList() << engine->newQObject(element));
+ return array;
+}
+
+template <class T>
+void scriptValueToQList(const QScriptValue &obj, QList<T *> &elements)
+{
+ QScriptValueIterator it(obj);
+ while (it.hasNext()) {
+ it.next();
+ elements.append(qobject_cast<T *>(it.value().toQObject()));
+ }
}
#endif // QTMODELINGGLOBAL_H