diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-09-18 11:00:38 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-22 01:06:20 +0200 |
commit | 50624234f2c0b6d3b0985edb8ff0b6aad5cad761 (patch) | |
tree | 2852c8917788d870100278d1cdc0129b94c5b599 /src/qml/jsruntime/qv4value_def_p.h | |
parent | 8b3623ee7b707e1b26ad48bdbf7816b95d9e0e24 (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.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) { |