aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4value_def_p.h
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-09-18 11:00:38 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-22 01:06:20 +0200
commit50624234f2c0b6d3b0985edb8ff0b6aad5cad761 (patch)
tree2852c8917788d870100278d1cdc0129b94c5b599 /src/qml/jsruntime/qv4value_def_p.h
parent8b3623ee7b707e1b26ad48bdbf7816b95d9e0e24 (diff)
Add a Safe<T> class and start using it
The class denotes objects that are stored safely in areas controlled by the GC. These we can convert fast to a StringRef etc. Change-Id: I6b154eccaefddc42d4fafca55b7ee9e77179830c Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4value_def_p.h')
-rw-r--r--src/qml/jsruntime/qv4value_def_p.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/qml/jsruntime/qv4value_def_p.h b/src/qml/jsruntime/qv4value_def_p.h
index 7d97d4531e..3e0728bcc2 100644
--- a/src/qml/jsruntime/qv4value_def_p.h
+++ b/src/qml/jsruntime/qv4value_def_p.h
@@ -361,6 +361,22 @@ struct SafeValue : public Value
Returned<T> *as();
};
+template <typename T>
+struct Safe : public Value
+{
+ Safe &operator =(T *t);
+ Safe &operator =(const Scoped<T> &v);
+ Safe &operator =(Returned<T> *t);
+ Safe &operator =(const Safe<T> &t);
+
+ // ### GC: remove me
+ operator T*() { return static_cast<T *>(managed()); }
+ Value *operator->() { return this; }
+ operator Returned<T> *();
+};
+typedef Safe<String> SafeString;
+typedef Safe<Object> SafeObject;
+
template<typename T>
T *value_cast(const Value &v)
{