This article covers features introduced in SpiderMonkey 17
Reference to a T that has been rooted elsewhere. The underlying storage can be changed. This is useful for outparams.
Syntax
bool
someFunction(JSContext *cx, JS::MutableHandle<T> outParam) {
...
}
Methods
Here, ptr represents the private member of JS::MutableHandle<T>, typed with T *.
| Method | Description |
|---|---|
const T &get() const |
Returns *ptr. |
operator const T&() const |
|
T operator->() const |
|
T *address() |
Returns ptr. |
void set(T v) |
Sets the value of *ptr to v. |
Description
JS::MutableHandle<T> is a non-const reference to JS::Rooted<T>. It is used in the same way as JS::Handle<T> and includes a |set(const T &v)| method to allow updating the value of the referenced JS::Rooted<T>. A JS::MutableHandle<T> can be created from a JS::Rooted<T> by using |JS::Rooted<T>::operator&()|.
If you want to add additional methods to JS::MutableHandle for a specific specialization, define a js::MutableHandleBase<T> specialization containing them.
There are typedefs available for the main types:
namespace JS {
typedef MutableHandle<JSFunction*> MutableHandleFunction;
typedef MutableHandle<jsid> MutableHandleId;
typedef MutableHandle<JSObject*> MutableHandleObject;
typedef MutableHandle<JSScript*> MutableHandleScript;
typedef MutableHandle<JSString*> MutableHandleString;
typedef MutableHandle<JS::Symbol*> MutableHandleSymbol;
typedef MutableHandle<Value> MutableHandleValue;
}
See Also
- MXR ID Search for
JS::MutableHandle - MXR ID Search for
JS::MutableHandleFunction - MXR ID Search for
JS::MutableHandleId - MXR ID Search for
JS::MutableHandleObject - MXR ID Search for
JS::MutableHandleScript - MXR ID Search for
JS::MutableHandleString - MXR ID Search for
JS::MutableHandleSymbol - MXR ID Search for
JS::MutableHandleValue JS::RootedJS::Handle- GC Rooting Guide
- bug 770759
- bug 761391 - added
JS::MutableHandleScript - bug 645416 - added
JS::MutableHandleSymbol