Class jac::ObjectWrapper
template <bool managed>
ClassList > jac > ObjectWrapper
A wrapper for JSValue with Object type with RAII. More...
#include <values.h>
Inherits the following classes: jac::ValueWrapper
Inherited by the following classes: jac::ArrayBufferWrapper, jac::ArrayWrapper, jac::FunctionWrapper, jac::PromiseWrapper
Public Functions
| Type | Name |
|---|---|
| ObjectWrapper (ValueWrapper< managed > value) Wrap an existing JSValue. If managed is true, JSValue will be freed when the Object is destroyed. |
|
| ObjectWrapper (ContextRef ctx, JSValue val) |
|
| void | defineProperty (Id id, Value value, PropFlags flags=PropFlags::Default) Define a property of the object. |
| void | deleteProperty (Id id) Delete a property of the object. |
| T | get (Atom prop) Get a property of the object. |
| T | get (const std::string & name) |
| T | get (uint32_t idx) |
| Object | getPrototype () Get the prototype of the object. |
| bool | hasProperty (Id id) Check if the object has a property. |
| Res | invoke (Atom key, Args... args) Invoke a method of the object. |
| Res | invoke (const std::string & key, Args... args) |
| Res | invoke (uint32_t idx, Args... args) |
| void | set (Atom prop, T val) Set a property of the object. |
| void | set (const std::string & name, T val) |
| void | set (uint32_t idx, T val) |
| void | setPrototype (Object proto) Set the prototype of the object. |
Public Functions inherited from jac::ValueWrapper
| Type | Name |
|---|---|
| ValueWrapper (ContextRef ctx, JSValue val) Wrap an existing JSValue. If managed is true, JSValue will be freed when the Value is destroyed. |
|
| ValueWrapper (const ValueWrapper & other) |
|
| ValueWrapper (ValueWrapper && other) |
|
| JSValue & | getVal () Get reference to the underlying JSValue. |
| bool | isArray () Check if the Value is an array. |
| bool | isFunction () Check if the Value is a function. |
| bool | isNull () Check if the Value is null. |
| bool | isObject () Check if the Value is an object. |
| bool | isUndefined () Check if the Value is undefined. |
| std::pair< ContextRef, JSValue > | loot () Release ownership of the JSValue. The JSValue will have to be freed manually. |
| operator ValueWeak () |
|
| ValueWrapper & | operator= (const ValueWrapper & other) |
| ValueWrapper & | operator= (ValueWrapper && other) |
| Value | stringify (int indent=0) Convert the Value to a JSON representation. |
| T | to () Convert the Value to a specified type. |
| StringView | toString () Convert the Value to a StringView . |
| ~ValueWrapper () |
Public Static Functions
| Type | Name |
|---|---|
| Object | create (ContextRef ctx) Create a new empty object. |
Public Static Functions inherited from jac::ValueWrapper
| Type | Name |
|---|---|
| Value | from (ContextRef ctx, T val) Create a new Value by converting a given value. |
| Value | fromJSON (ContextRef ctx, std::string json, std::string filename="<json>", bool extended=false) Create a new Value from a given JSON string. |
| Value | null (ContextRef ctx) Create a new Value containing null. |
| Value | undefined (ContextRef ctx) Create a new Value containing undefined. |
Protected Attributes inherited from jac::ValueWrapper
| Type | Name |
|---|---|
| ContextRef | _ctx |
| JSValue | _val |
Detailed Description
Template parameters:
managedwhether the JSValue should be freed when the wrapper is destroyed.
Public Functions Documentation
function ObjectWrapper [1/2]
Wrap an existing JSValue. If managed is true, JSValue will be freed when the Object is destroyed.
Note:
Used internally when directly working with QuickJS API. New Object should be created using Object::create() or by converting an existing Value to an Object using Value::to<Object>().
Parameters:
ctxcontext to work invalJSValue to wrap
function ObjectWrapper [2/2]
function defineProperty
Define a property of the object.
template<typename Id>
inline void jac::ObjectWrapper::defineProperty (
Id id,
Value value,
PropFlags flags=PropFlags::Default
)
Template parameters:
Idthe type of the property identifier (Atom, std::string, uint32_t)
Parameters:
idthe property identifiervaluethe value to setflagsthe property flags
function deleteProperty
Delete a property of the object.
Template parameters:
Idthe type of the property identifier (Atom, std::string, uint32_t)
Parameters:
idthe property identifier
function get [1/3]
Get a property of the object.
Template parameters:
Ttype to convert the property to
Parameters:
propthe property identifier
Returns:
The resulting value
function get [2/3]
function get [3/3]
function getPrototype
Get the prototype of the object.
Returns:
The prototype
function hasProperty
Check if the object has a property.
Template parameters:
Idthe type of the property identifier (Atom, std::string, uint32_t)
Parameters:
idthe property identifier
Returns:
true if the object has the property, false otherwise
function invoke [1/3]
Invoke a method of the object.
Note:
The call will automatically convert the arguments to their JavaScript counterparts, the result will be converted to the specified type and Exceptions thrown in JS will be propagated to C++ as jac::Exception.
Template parameters:
Restype to convert the result toArgstypes of the arguments
Parameters:
propthe property identifierargsthe arguments
Returns:
The resulting value
function invoke [2/3]
template<typename Res, typename... Args>
inline Res jac::ObjectWrapper::invoke (
const std::string & key,
Args... args
)
function invoke [3/3]
template<typename Res, typename... Args>
inline Res jac::ObjectWrapper::invoke (
uint32_t idx,
Args... args
)
function set [1/3]
Set a property of the object.
Template parameters:
Ttype of the value to set
Parameters:
propthe property identifiervalthe value to set
function set [2/3]
function set [3/3]
function setPrototype
Set the prototype of the object.
Parameters:
protothe prototype
Public Static Functions Documentation
function create
Create a new empty object.
Parameters:
ctxthe context to create the object in
Returns:
The new object
The documentation for this class was generated from the following file src/jac/machine/values.h