diff options
Diffstat (limited to 'src/qml/jsruntime/qv4value_def_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4value_def_p.h | 16 |
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) { |