gi-javascriptcore-6.0.3: JavaScriptCore bindings
CopyrightWill Thompson and Iñaki García Etxebarria
LicenseLGPL-2.1
MaintainerIñaki García Etxebarria
Safe HaskellSafe-Inferred
LanguageHaskell2010

GI.JavaScriptCore.Objects.Value

Description

JSCValue represents a reference to a value in a Context. The JSCValue protects the referenced value from being garbage collected.

Synopsis

Exported types

newtype Value Source #

Memory-managed wrapper type.

Constructors

Value (ManagedPtr Value) 

Instances

Instances details
Eq Value Source # 
Instance details

Defined in GI.JavaScriptCore.Objects.Value

Methods

(==) :: Value -> Value -> Bool #

(/=) :: Value -> Value -> Bool #

GObject Value Source # 
Instance details

Defined in GI.JavaScriptCore.Objects.Value

ManagedPtrNewtype Value Source # 
Instance details

Defined in GI.JavaScriptCore.Objects.Value

Methods

toManagedPtr :: Value -> ManagedPtr Value

TypedObject Value Source # 
Instance details

Defined in GI.JavaScriptCore.Objects.Value

Methods

glibType :: IO GType

HasParentTypes Value Source # 
Instance details

Defined in GI.JavaScriptCore.Objects.Value

IsGValue (Maybe Value) Source #

Convert Value to and from GValue. See toGValue and fromGValue.

Instance details

Defined in GI.JavaScriptCore.Objects.Value

Methods

gvalueGType_ :: IO GType

gvalueSet_ :: Ptr GValue -> Maybe Value -> IO ()

gvalueGet_ :: Ptr GValue -> IO (Maybe Value)

type ParentTypes Value Source # 
Instance details

Defined in GI.JavaScriptCore.Objects.Value

type ParentTypes Value = '[Object]

class (GObject o, IsDescendantOf Value o) => IsValue o Source #

Type class for types which can be safely cast to Value, for instance with toValue.

Instances

Instances details
(GObject o, IsDescendantOf Value o) => IsValue o Source # 
Instance details

Defined in GI.JavaScriptCore.Objects.Value

toValue :: (MonadIO m, IsValue o) => o -> m Value Source #

Cast to Value, for types for which this is known to be safe. For general casts, use castTo.

Methods

arrayBufferGetData

valueArrayBufferGetData Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: A Value

-> Word64

size: location where to store the size of the memory region.

-> m (Ptr ())

Returns: pointer to memory.

Gets a pointer to memory that contains the array buffer data.

Obtains a pointer to the memory region that holds the contents of the ArrayBuffer; modifications done to the data will be visible to JavaScript code. If size is not Nothing, the size in bytes of the memory region will also be stored in the pointed location.

Note that the pointer returned by this function is not guaranteed to remain the same after calls to other JSC API functions. If you plan to access the data of the ArrayBuffer later, you can keep a reference to the value and obtain the data pointer at a later point. Keep in mind that if JavaScript code has a chance to run, for example due to main loop events that result in JSC being called, the contents of the memory region might be modified in the meantime. Consider taking a copy of the data and using the copy instead in asynchronous code.

Since: 2.38

arrayBufferGetSize

valueArrayBufferGetSize Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: A Value

-> m Word64

Returns: size, in bytes.

Gets the size in bytes of the array buffer.

Obtains the size in bytes of the memory region that holds the contents of an ArrayBuffer.

Since: 2.38

constructorCall

valueConstructorCall Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> Maybe [Value]

parameters: the Values to pass as parameters to the constructor, or Nothing

-> m Value

Returns: a Value referencing the newly created object instance.

Invoke <function>new</function> with constructor referenced by value. If nParameters is 0 no parameters will be passed to the constructor.

functionCall

valueFunctionCall Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> Maybe [Value]

parameters: the Values to pass as parameters to the function, or Nothing

-> m Value

Returns: a Value with the return value of the function.

Call function referenced by value, passing the given parameters. If nParameters is 0 no parameters will be passed to the function.

This function always returns a Value, in case of void functions a Value referencing <function>undefined</function> is returned

getContext

valueGetContext Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m Context

Returns: the Value context.

Get the Context in which value was created.

isArray

valueIsArray Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m Bool

Returns: whether the value is an array.

Get whether the value referenced by value is an array.

isArrayBuffer

valueIsArrayBuffer Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: A Value.

-> m Bool

Returns: whether the value is an ArrayBuffer

Check whether the value is an ArrayBuffer.

Since: 2.38

isBoolean

valueIsBoolean Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m Bool

Returns: whether the value is a boolean.

Get whether the value referenced by value is a boolean.

isConstructor

valueIsConstructor Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m Bool

Returns: whether the value is a constructor.

Get whether the value referenced by value is a constructor.

isFunction

valueIsFunction Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m Bool

Returns: whether the value is a function.

Get whether the value referenced by value is a function

isNull

valueIsNull Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m Bool

Returns: whether the value is null.

Get whether the value referenced by value is <function>null</function>.

isNumber

valueIsNumber Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m Bool

Returns: whether the value is a number.

Get whether the value referenced by value is a number.

isObject

valueIsObject Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m Bool

Returns: whether the value is an object.

Get whether the value referenced by value is an object.

isString

valueIsString Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m Bool

Returns: whether the value is a string

Get whether the value referenced by value is a string

isTypedArray

valueIsTypedArray Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m Bool

Returns: Whether value is a typed array.

Determines whether a value is a typed array.

Since: 2.38

isUndefined

valueIsUndefined Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m Bool

Returns: whether the value is undefined.

Get whether the value referenced by value is <function>undefined</function>.

newArrayBuffer

valueNewArrayBuffer Source #

Arguments

:: (HasCallStack, MonadIO m, IsContext a) 
=> a

context: A Context

-> Ptr ()

data: Pointer to a region of memory.

-> Word64

size: Size in bytes of the memory region.

-> Maybe DestroyNotify

destroyNotify: destroy notifier for userData.

-> Ptr ()

userData: user data.

-> m (Maybe Value)

Returns: A Value, or Nothing in case of exception.

Creates a new ArrayBuffer from existing data in memory.

The data is not copied: while this allows sharing data with JavaScript efficiently, the caller must ensure that the memory region remains valid until the newly created object is released by JSC.

Optionally, a destroyNotify callback can be provided, which will be invoked with userData as parameter when the ArrayBuffer object is released. This is intended to be used for freeing resources related to the memory region which contains the data:

!<-- language="C" -->
GMappedFile *f = g_mapped_file_new (file_path, TRUE, NULL);
JSCValue *value = jsc_value_new_array_buffer (context,
    g_mapped_file_get_contents (f), g_mapped_file_get_length (f),
    (GDestroyNotify) g_mapped_file_unref, f);

Note that the userData can be the same value as data:

!<-- language="C" -->
void *bytes = g_malloc0 (100);
JSCValue *value = jsc_value_new_array_buffer (context, bytes, 100, g_free, bytes);

Since: 2.38

newArrayFromGarray

valueNewArrayFromGarray Source #

Arguments

:: (HasCallStack, MonadIO m, IsContext a) 
=> a

context: a Context

-> Maybe [Value]

array: a PtrArray

-> m Value

Returns: a Value.

Create a new Value referencing an array with the items from array. If array is Nothing or empty a new empty array will be created. Elements of array should be pointers to a Value.

newArrayFromStrv

valueNewArrayFromStrv Source #

Arguments

:: (HasCallStack, MonadIO m, IsContext a) 
=> a

context: a Context

-> [Text]

strv: a Nothing-terminated array of strings

-> m Value

Returns: a Value.

Create a new Value referencing an array of strings with the items from strv. If array is Nothing or empty a new empty array will be created.

newBoolean

valueNewBoolean Source #

Arguments

:: (HasCallStack, MonadIO m, IsContext a) 
=> a

context: a Context

-> Bool

value: a Bool

-> m Value

Returns: a Value.

Create a new Value from value

newFromJson

valueNewFromJson Source #

Arguments

:: (HasCallStack, MonadIO m, IsContext a) 
=> a

context: a Context

-> Text

json: the JSON string to be parsed

-> m Value

Returns: a Value.

Create a new Value referencing a new value created by parsing json.

Since: 2.28

newFunction

valueNewFunction Source #

Arguments

:: (HasCallStack, MonadIO m, IsContext a) 
=> a

context: a Context

-> Maybe Text

name: the function name or Nothing

-> Callback

callback: a Callback.

-> GType

returnType: the GType of the function return value, or G_TYPE_NONE if the function is void.

-> Maybe [GType]

parameterTypes: a list of GTypes, one for each parameter, or Nothing

-> m Value

Returns: a Value.

Create a function in context. If name is Nothing an anonymous function will be created. When the function is called by JavaScript or jsc_value_function_call(), callback is called receiving the function parameters and then userData as last parameter. When the function is cleared in context, destroyNotify is called with userData as parameter.

Note that the value returned by callback must be fully transferred. In case of boxed types, you could use G_TYPE_POINTER instead of the actual boxed GType to ensure that the instance owned by Class is used. If you really want to return a new copy of the boxed type, use JSC_TYPE_VALUE and return a Value created with valueNewObject that receives the copy as instance parameter.

newFunctionVariadic

valueNewFunctionVariadic Source #

Arguments

:: (HasCallStack, MonadIO m, IsContext a) 
=> a

context: a Context

-> Maybe Text

name: the function name or Nothing

-> Callback

callback: a Callback.

-> GType

returnType: the GType of the function return value, or G_TYPE_NONE if the function is void.

-> m Value

Returns: a Value.

Create a function in context. If name is Nothing an anonymous function will be created. When the function is called by JavaScript or jsc_value_function_call(), callback is called receiving an PtrArray of Values with the arguments and then userData as last parameter. When the function is cleared in context, destroyNotify is called with userData as parameter.

Note that the value returned by callback must be fully transferred. In case of boxed types, you could use G_TYPE_POINTER instead of the actual boxed GType to ensure that the instance owned by Class is used. If you really want to return a new copy of the boxed type, use JSC_TYPE_VALUE and return a Value created with valueNewObject that receives the copy as instance parameter.

newNull

valueNewNull Source #

Arguments

:: (HasCallStack, MonadIO m, IsContext a) 
=> a

context: a Context

-> m Value

Returns: a Value.

Create a new Value referencing <function>null</function> in context.

newNumber

valueNewNumber Source #

Arguments

:: (HasCallStack, MonadIO m, IsContext a) 
=> a

context: a Context

-> Double

number: a number

-> m Value

Returns: a Value.

Create a new Value from number.

newObject

valueNewObject Source #

Arguments

:: (HasCallStack, MonadIO m, IsContext a, IsClass b) 
=> a

context: a Context

-> Ptr ()

instance: an object instance or Nothing

-> Maybe b

jscClass: the Class of instance

-> m Value

Returns: a Value.

Create a new Value from instance. If instance is Nothing a new empty object is created. When instance is provided, jscClass must be provided too. jscClass takes ownership of instance that will be freed by the DestroyNotify passed to contextRegisterClass.

newString

valueNewString Source #

Arguments

:: (HasCallStack, MonadIO m, IsContext a) 
=> a

context: a Context

-> Maybe Text

string: a null-terminated string

-> m Value

Returns: a Value.

Create a new Value from string. If you need to create a Value from a string containing null characters, use valueNewStringFromBytes instead.

newStringFromBytes

valueNewStringFromBytes Source #

Arguments

:: (HasCallStack, MonadIO m, IsContext a) 
=> a

context: a Context

-> Maybe Bytes

bytes: a Bytes

-> m Value

Returns: a Value.

Create a new Value from bytes.

newTypedArray

valueNewTypedArray Source #

Arguments

:: (HasCallStack, MonadIO m, IsContext a) 
=> a

context: a Context

-> TypedArrayType

type: the type of array elements

-> Word64

length: number of elements in the array

-> m Value

Returns: a Value

Create a new typed array containing a given amount of elements.

Create a Value referencing a new typed array with space for length elements of a given type. As all typed arrays must have an associated ArrayBuffer, a new one of suitable size will be allocated to store the elements, which will be initialized to zero.

The type must *not* be TypedArrayTypeNone.

Since: 2.38

newTypedArrayWithBuffer

valueNewTypedArrayWithBuffer Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

arrayBuffer: a Value.

-> TypedArrayType

type: type of array elements.

-> Word64

offset: offset, in bytes.

-> Int64

length: number of array elements, or -1.

-> m Value

Returns: a Value

Create a new typed array value with elements from an array buffer.

Create a Value referencing a new typed array value containing elements of the given type, where the elements are stored at the memory region represented by the arrayBuffer.

The type must *not* be TypedArrayTypeNone.

The offset and length parameters can be used to indicate which part of the array buffer can be accessed through the typed array. If both are omitted (passing zero as offset, and -1 as length), the whole arrayBuffer is exposed through the typed array. Omitting the length with a non-zero offset will expose the remainder of the arrayBuffer starting at the indicated offset.

Since: 2.38

newUndefined

valueNewUndefined Source #

Arguments

:: (HasCallStack, MonadIO m, IsContext a) 
=> a

context: a Context

-> m Value

Returns: a Value.

Create a new Value referencing <function>undefined</function> in context.

objectDefinePropertyAccessor

valueObjectDefinePropertyAccessor Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> Text

propertyName: the name of the property to define

-> [ValuePropertyFlags]

flags: ValuePropertyFlags

-> GType

propertyType: the GType of the property

-> Maybe Callback

getter: a Callback to be called to get the property value

-> Maybe Callback

setter: a Callback to be called to set the property value

-> m () 

Define or modify a property with propertyName in object referenced by value. When the property value needs to be getted or set, getter and setter callbacks will be called. When the property is cleared in the Class context, destroyNotify is called with userData as parameter. This is equivalent to JavaScript <function>Object.defineProperty()</function> when used with an accessor descriptor.

Note that the value returned by getter must be fully transferred. In case of boxed types, you could use G_TYPE_POINTER instead of the actual boxed GType to ensure that the instance owned by Class is used. If you really want to return a new copy of the boxed type, use JSC_TYPE_VALUE and return a Value created with valueNewObject that receives the copy as instance parameter.

Note that getter and setter are called as functions and not methods, so they don't receive an instance as first parameter. Use classAddProperty if you want to add property accessor invoked as a method.

objectDefinePropertyData

valueObjectDefinePropertyData Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a, IsValue b) 
=> a

value: a Value

-> Text

propertyName: the name of the property to define

-> [ValuePropertyFlags]

flags: ValuePropertyFlags

-> Maybe b

propertyValue: the default property value

-> m () 

Define or modify a property with propertyName in object referenced by value. This is equivalent to JavaScript <function>Object.defineProperty()</function> when used with a data descriptor.

objectDeleteProperty

valueObjectDeleteProperty Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> Text

name: the property name

-> m Bool

Returns: True if the property was deleted, or False otherwise.

Try to delete property with name from value. This function will return False if the property was defined without ValuePropertyFlagsConfigurable flag.

objectEnumerateProperties

valueObjectEnumerateProperties Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m (Maybe [Text])

Returns: a Nothing-terminated array of strings containing the property names, or Nothing if value doesn't have enumerable properties. Use strfreev to free.

Get the list of property names of value. Only properties defined with ValuePropertyFlagsEnumerable flag will be collected.

objectGetProperty

valueObjectGetProperty Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> Text

name: the property name

-> m Value

Returns: the property Value.

Get property with name from value.

objectGetPropertyAtIndex

valueObjectGetPropertyAtIndex Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> Word32

index: the property index

-> m Value

Returns: the property Value.

Get property at index from value.

objectHasProperty

valueObjectHasProperty Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> Text

name: the property name

-> m Bool

Returns: True if value has a property with name, or False otherwise

Get whether value has property with name.

objectInvokeMethod

valueObjectInvokeMethod Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> Text

name: the method name

-> Maybe [Value]

parameters: the Values to pass as parameters to the method, or Nothing

-> m Value

Returns: a Value with the return value of the method.

Invoke method with name on object referenced by value, passing the given parameters. If nParameters is 0 no parameters will be passed to the method. The object instance will be handled automatically even when the method is a custom one registered with jsc_class_add_method(), so it should never be passed explicitly as parameter of this function.

This function always returns a Value, in case of void methods a Value referencing <function>undefined</function> is returned.

objectIsInstanceOf

valueObjectIsInstanceOf Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> Text

name: a class name

-> m Bool

Returns: whether the value is an object instance of class name.

Get whether the value referenced by value is an instance of class name.

objectSetProperty

valueObjectSetProperty Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a, IsValue b) 
=> a

value: a Value

-> Text

name: the property name

-> b

property: the Value to set

-> m () 

Set property with name on value.

objectSetPropertyAtIndex

valueObjectSetPropertyAtIndex Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a, IsValue b) 
=> a

value: a Value

-> Word32

index: the property index

-> b

property: the Value to set

-> m () 

Set property at index on value.

toBoolean

valueToBoolean Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m Bool

Returns: a Bool result of the conversion.

Convert value to a boolean.

toDouble

valueToDouble Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m Double

Returns: a gdouble result of the conversion.

Convert value to a double.

toInt32

valueToInt32 Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m Int32

Returns: a gint32 result of the conversion.

Convert value to a gint32.

toJson

valueToJson Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> Word32

indent: The number of spaces to indent when nesting.

-> m Text

Returns: a null-terminated JSON string with serialization of value

Create a JSON string of value serialization. If indent is 0, the resulting JSON will not contain newlines. The size of the indent is clamped to 10 spaces.

Since: 2.28

toString

valueToString Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m Text

Returns: a null-terminated string result of the conversion.

Convert value to a string. Use valueToStringAsBytes instead, if you need to handle strings containing null characters.

toStringAsBytes

valueToStringAsBytes Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m Bytes

Returns: a Bytes with the result of the conversion.

Convert value to a string and return the results as Bytes. This is needed to handle strings with null characters.

typedArrayGetBuffer

valueTypedArrayGetBuffer Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m Value

Returns: A Value

Obtain the ArrayBuffer for the memory region of the typed array elements.

Since: 2.38

typedArrayGetData

valueTypedArrayGetData Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m (Ptr (), Word64)

Returns: pointer to memory.

Obtains a pointer to the memory region that holds the elements of the typed array; modifications done to them will be visible to JavaScript code. If length is not Nothing, the number of elements contained in the typed array are also stored in the pointed location.

The returned pointer needs to be casted to the appropriate type (see TypedArrayType), and has the offset over the underlying array buffer data applied—that is, points to the first element of the typed array:

C code

if (jsc_value_typed_array_get_type(value) != JSC_TYPED_ARRAY_UINT32)
    g_error ("Only arrays of uint32_t are supported");

gsize count = 0;
uint32_t *elements = jsc_value_typed_array_get_contents (value, &count);
for (gsize i = 0; i < count; i++)
     g_print ("index %zu, value %" PRIu32 "\n", i, elements[i]);

Note that the pointer returned by this function is not guaranteed to remain the same after calls to other JSC API functions. See valueArrayBufferGetData for details.

Since: 2.38

typedArrayGetLength

valueTypedArrayGetLength Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m Word64

Returns: number of elements.

Gets the number of elements in a typed array.

Since: 2.38

typedArrayGetOffset

valueTypedArrayGetOffset Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: A Value

-> m Word64

Returns: offset, in bytes.

Gets the offset over the underlying array buffer data.

Since: 2.38

typedArrayGetSize

valueTypedArrayGetSize Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m Word64

Returns: size, in bytes.

Gets the size of a typed array.

Since: 2.38

typedArrayGetType

valueTypedArrayGetType Source #

Arguments

:: (HasCallStack, MonadIO m, IsValue a) 
=> a

value: a Value

-> m TypedArrayType

Returns: type of the elements, or TypedArrayTypeNone if value is not a typed array.

Gets the type of elements contained in a typed array.

Since: 2.38

Properties

context

The Context in which the value was created.

constructValueContext :: (IsValue o, MonadIO m, IsContext a) => a -> m (GValueConstruct o) Source #

Construct a GValueConstruct with valid value for the “context” property. This is rarely needed directly, but it is used by new.

getValueContext :: (MonadIO m, IsValue o) => o -> m Context Source #

Get the value of the “context” property. When overloading is enabled, this is equivalent to

get value #context