aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4value_def_p.h
diff options
context:
space:
mode:
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)
{