Context

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().

Constructors

this
this(JSCContext* jSCContext, bool ownedRef)

Sets our main struct and passes it to the parent class.

this
this()

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.

this
this(VirtualMachine vm)

Create a new #JSCContext in @virtual_machine.

Members

Functions

checkSyntax
JSCCheckSyntaxResult checkSyntax(string code, ptrdiff_t length, JSCCheckSyntaxMode mode, string uri, uint lineNumber, JException exception)

Check the given @code in @context for syntax errors. The @line_number is the starting line number in @uri; the value is one-based so the first line is 1. @uri and @line_number are only used to fill the @exception. In case of errors @exception will be set to a new #JSCException with the details. You can pass %NULL to @exception to ignore the error details.

clearException
void clearException()

Clear the uncaught exception in @context if any.

evaluate
Value evaluate(string code, ptrdiff_t length)

Evaluate @code in @context.

evaluateInObject
Value evaluateInObject(string code, ptrdiff_t length, void* objectInstance, Class objectClass, string uri, uint lineNumber, Value object)

Evaluate @code and create an new object where symbols defined in @code will be added as properties, instead of being added to @context global object. The new object is returned as @object parameter. Similar to how jsc_value_new_object() works, if @object_instance is not %NULL @object_class must be provided too. The @line_number is the starting line number in @uri; the value is one-based so the first line is 1. @uri and @line_number will be shown in exceptions and they don't affect the behavior of the script.

evaluateWithSourceUri
Value evaluateWithSourceUri(string code, ptrdiff_t length, string uri, uint lineNumber)

Evaluate @code in @context using @uri as the source URI. The @line_number is the starting line number in @uri; the value is one-based so the first line is 1. @uri and @line_number will be shown in exceptions and they don't affect the behavior of the script.

getContextStruct
JSCContext* getContextStruct(bool transferOwnership)

Get the main Gtk struct

getException
JException getException()

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

getGlobalObject
Value getGlobalObject()

Get a #JSCValue referencing the @context global object

getStruct
void* getStruct()

the main Gtk struct as a void*

getValue
Value getValue(string name)

Get a property of @context global object with @name.

getVirtualMachine
VirtualMachine getVirtualMachine()

Get the #JSCVirtualMachine where @context was created.

popExceptionHandler
void popExceptionHandler()

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

pushExceptionHandler
void pushExceptionHandler(JSCExceptionHandler handler, void* userData, GDestroyNotify destroyNotify)

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.

registerClass
Class registerClass(string name, Class parentClass, JSCClassVTable* vtable, GDestroyNotify destroyNotify)

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.

setValue
void setValue(string name, Value value)

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

throwException
void throwException(JException exception)

Throw @exception to @context.

throwMessage
void throwMessage(string errorMessage)

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

throwWithName
void throwWithName(string errorName, string errorMessage)

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

Static functions

getCurrent
Context getCurrent()

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.

getType
GType getType()

Variables

jSCContext
JSCContext* jSCContext;

the main Gtk struct

Meta