aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4value_def_p.h
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-09-30 22:41:12 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-02 16:07:33 +0200
commitd49cc03df130353665edd89112fd4e1f3cdab9b6 (patch)
treecc55f49b6a2bc6b3b94e47fbdebe9d87f4857a07 /src/qml/jsruntime/qv4value_def_p.h
parentac8afca822031f3039dce31525a6ab48c741e73b (diff)
Use SafeValue instead of Value in ScopedValue methods
Change-Id: Ie463efe600d498ce77d4b9e8b48abcfd61c1ab78 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4value_def_p.h')
-rw-r--r--src/qml/jsruntime/qv4value_def_p.h18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/qml/jsruntime/qv4value_def_p.h b/src/qml/jsruntime/qv4value_def_p.h
index 11b70ef37c..f552798a4b 100644
--- a/src/qml/jsruntime/qv4value_def_p.h
+++ b/src/qml/jsruntime/qv4value_def_p.h
@@ -50,6 +50,18 @@ namespace QV4 {
typedef uint Bool;
+template <typename T>
+struct Returned : private T
+{
+ static Returned<T> *create(T *t) { return static_cast<Returned<T> *>(t); }
+ T *getPointer() { return this; }
+ template<typename X>
+ static T *getPointer(Returned<X> *x) { return x->getPointer(); }
+ template<typename X>
+ Returned<X> *as() { return Returned<X>::create(Returned<X>::getPointer(this)); }
+ using T::asReturnedValue;
+};
+
struct Q_QML_EXPORT Value
{
/*
@@ -273,7 +285,6 @@ struct Q_QML_EXPORT Value
return val;
}
- static Value fromObject(Object *o);
static Value fromManaged(Managed *o);
int toUInt16() const;
@@ -349,9 +360,10 @@ struct SafeValue : public Value
val = v.val;
return *this;
}
-
template<typename T>
- Returned<T> *as();
+ inline Returned<T> *as();
+ template<typename T>
+ inline Referenced<T> asRef();
};
struct Q_QML_EXPORT Primitive : public Value