JSCContext

JSCContext — JavaScript execution context

Functions

Properties

JSCVirtualMachine * virtual-machine Read / Write / Construct Only

Types and Values

Object Hierarchy

    GObject
    ╰── JSCContext

Description

JSCContext represents a JavaScript execution context, where all operations take place and where the values will be associated.

When a new context is created, a global object is allocated and the built-in JavaScript objects (Object, Function, String, Array) are populated. You can execute JavaScript in the context by using jsc_context_evaluate() or jsc_context_evaluate_with_source_uri(). It's also possible to register custom objects in the context with jsc_context_register_class().

Functions

JSCExceptionHandler ()

void
(*JSCExceptionHandler) (JSCContext *context,
                        JSCException *exception,
                        gpointer user_data);

Function used to handle JavaScript exceptions in a JSCContext.

Parameters

context

a JSCContext

 

exception

a JSCException

 

user_data

user data

 

jsc_context_new ()

JSCContext *
jsc_context_new (void);

Create a new JSCContext. The context is created in a new JSCVirtualMachine. Use jsc_context_new_with_virtual_machine() to create a new JSCContext in an existing JSCVirtualMachine.

Returns

the newly created JSCContext.

[transfer full]


jsc_context_new_with_virtual_machine ()

JSCContext *
jsc_context_new_with_virtual_machine (JSCVirtualMachine *vm);

Create a new JSCContext in virtual_machine .

Parameters

Returns

the newly created JSCContext.

[transfer full]


jsc_context_get_virtual_machine ()

JSCVirtualMachine *
jsc_context_get_virtual_machine (JSCContext *context);

Get the JSCVirtualMachine where context was created.

Parameters

context

a JSCContext

 

Returns

the JSCVirtualMachine where the JSCContext was created.

[transfer none]


jsc_context_get_exception ()

JSCException *
jsc_context_get_exception (JSCContext *context);

Get the last unhandled exception thrown in context by API functions calls.

Parameters

context

a JSCContext

 

Returns

a JSCException or NULL if there isn't any unhandled exception in the JSCContext.

[transfer none][nullable]


jsc_context_throw ()

void
jsc_context_throw (JSCContext *context,
                   const char *error_message);

Throw an exception to context using the given error message. The created JSCException can be retrieved with jsc_context_get_exception().

Parameters

context

a JSCContext

 

error_message

an error message

 

jsc_context_throw_exception ()

void
jsc_context_throw_exception (JSCContext *context,
                             JSCException *exception);

Throw exception to context .

Parameters

context

a JSCContext

 

exception

a JSCException

 

jsc_context_clear_exception ()

void
jsc_context_clear_exception (JSCContext *context);

Clear the uncaught exception in context if any.

Parameters

context

a JSCContext

 

jsc_context_push_exception_handler ()

void
jsc_context_push_exception_handler (JSCContext *context,
                                    JSCExceptionHandler handler,
                                    gpointer user_data,
                                    GDestroyNotify destroy_notify);

Push an exception handler in context . Whenever a JavaScript exception happens in the JSCContext, the given handler will be called. The default JSCExceptionHandler simply calls jsc_context_throw_exception() to throw the exception to the JSCContext. If you don't want to catch the exception, but only get notified about it, call jsc_context_throw_exception() in handler like the default one does. The last exception handler pushed is the only one used by the JSCContext, use jsc_context_pop_exception_handler() to remove it and set the previous one. When handler is removed from the context, destroy_notify i called with user_data as parameter.

Parameters

context

a JSCContext

 

handler

a JSCExceptionHandler

 

user_data

user data to pass to handler .

[closure]

destroy_notify

destroy notifier for user_data .

[nullable]

jsc_context_pop_exception_handler ()

void
jsc_context_pop_exception_handler (JSCContext *context);

Remove the last JSCExceptionHandler previously pushed to context with jsc_context_push_exception_handler().

Parameters

context

a JSCContext

 

jsc_context_get_current ()

JSCContext *
jsc_context_get_current (void);

Get the JSCContext that is currently executing a function. This should only be called within a function or method callback, otherwise NULL will be returned.

Returns

the JSCContext that is currently executing.

[transfer none][nullable]


jsc_context_evaluate ()

JSCValue *
jsc_context_evaluate (JSCContext *context,
                      const char *code,
                      gssize length);

Evaluate code in context .

Parameters

context

a JSCContext

 

code

a JavaScript script to evaluate

 

length

length of code , or -1 if code is a nul-terminated string

 

Returns

a JSCValue representing the last value generated by the script.

[transfer full]


jsc_context_evaluate_with_source_uri ()

JSCValue *
jsc_context_evaluate_with_source_uri (JSCContext *context,
                                      const char *code,
                                      gssize length,
                                      const char *uri);

Evaluate code in context using uri as the source URI. This is exactly the same as jsc_context_evaluate() but uri will be shown in exceptions. The source uri doesn't affect the behavior of the script.

Parameters

context

a JSCContext

 

code

a JavaScript script to evaluate

 

length

length of code , or -1 if code is a nul-terminated string

 

uri

the source URI

 

Returns

a JSCValue representing the last value generated by the script.

[transfer full]


jsc_context_set_value ()

void
jsc_context_set_value (JSCContext *context,
                       const char *name,
                       JSCValue *value);

Set a property of context global object with name and value .

Parameters

context

a JSCContext

 

name

the value name

 

value

a JSCValue

 

jsc_context_get_value ()

JSCValue *
jsc_context_get_value (JSCContext *context,
                       const char *name);

Get a property of context global object with name .

Parameters

context

a JSCContext

 

name

the value name

 

Returns

a JSCValue.

[transfer full]


jsc_context_register_class ()

JSCClass *
jsc_context_register_class (JSCContext *context,
                            const char *name,
                            JSCClass *parent_class,
                            JSCClassVTable *vtable,
                            GDestroyNotify destroy_notify);

Register a custom class in context using the given name . If the new class inherits from another JSCClass, the parent should be passed as parent_class , otherwise NULL should be used. The optional vtable parameter allows to provide a custom implementation for handling the class, for example, to handle external properties not added to the prototype. When an instance of the JSCClass is cleared in the context, destroy_notify is called with the instance as parameter.

Parameters

context

a JSCContext

 

name

the class name

 

parent_class

a JSCClass or NULL.

[nullable]

vtable

an optional JSCClassVTable or NULL.

[nullable]

destroy_notify

a destroy notifier for class instances.

[nullable]

Returns

a JSCClass.

[transfer none]

Types and Values

JSCContext

typedef struct _JSCContext JSCContext;

Property Details

The “virtual-machine” property

  “virtual-machine”          JSCVirtualMachine *

The JSCVirtualMachine in which the context was created.

Flags: Read / Write / Construct Only