aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/tools
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2014-02-05 16:00:18 +0100
committerChristian Kandeler <christian.kandeler@digia.com>2014-02-05 18:34:40 +0100
commitb8d079de7749ed6eb9c26f1f902eab1515be7865 (patch)
tree3ac19621d5a6d6fb2d9d62a15c0a4152f290ed42 /src/lib/corelib/tools
parent95ef6ebf845797df4c0a6753e970cf435d99b16c (diff)
centralize pointer-to-scriptvalue-attachment
Introduce attachPointerTo and attachedPointer functions in scripttools.h. Change-Id: I15ad41a51820035d621320b0a76978c7da0b75ed Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/lib/corelib/tools')
-rw-r--r--src/lib/corelib/tools/scripttools.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/lib/corelib/tools/scripttools.h b/src/lib/corelib/tools/scripttools.h
index 4230c898c..4aff3d397 100644
--- a/src/lib/corelib/tools/scripttools.h
+++ b/src/lib/corelib/tools/scripttools.h
@@ -88,6 +88,21 @@ private:
QScriptEngine *m_scriptEngine;
};
+template <class T>
+void attachPointerTo(QScriptValue &scriptValue, T *ptr)
+{
+ QVariant v;
+ v.setValue<quintptr>(reinterpret_cast<quintptr>(ptr));
+ scriptValue.setData(scriptValue.engine()->newVariant(v));
+}
+
+template <class T>
+T *attachedPointer(const QScriptValue &scriptValue)
+{
+ const quintptr ptr = scriptValue.data().toVariant().value<quintptr>();
+ return reinterpret_cast<T *>(ptr);
+}
+
} // namespace Internal
} // namespace qbs