User Guide

356 Chapter 21: C-Level Extensibility
The C-level API
The C-level extensibility API consists of the following functions:
typedef JSBool (*JSNative)(JSContext *cx, JSObject *obj, unsigned int
argc, jsval *argv, jsval *rval)
Description
This function signature describes C-level implementations of JavaScript functions in the
following situations:
The cx pointer is a pointer to an opaque JSContext structure, which must be passed to some
of the functions in the JavaScript API. This variable holds the interpreters execution context.
The obj pointer is a pointer to the object in whose context the script executes. While the script
is running, the
this keyword is equal to this object.
The argc integer is the number of arguments being passed to the function.
The argv pointer is a pointer to an array of jsval structures. The array is argc elements
in length.
The rval pointer is a pointer to a single jsval structure. The functions return value should
be written to
*rval.
The function returns
JS_TRUE if successful; JS_FALSE otherwise. If the function returns
JS_FALSE, the current script stops executing and an error message appears.
JSBool JS_DefineFunction()
Description
This function registers a C-level function with the JavaScript interpreter in Dreamweaver. After
the
JS_DefineFunction() function registers the C-level function that you specify in the call
argument, you can invoke it in a JavaScript script by referring to it with the name that you specify
in the
name argument. The name is case-sensitive.
Typically, this function is called from the
MM_Init() function, which Dreamweaver calls
during startup.
Arguments
char *name
, JSNative call, unsigned int nargs
The name argument is the name of the function as it is exposed to JavaScript.
The call argument is a pointer to a C-level function. The function must accept the same
arguments as readContentsOfFile, and it must return a JSBool, which indicates success or
failure.
The nargs argument is the number of arguments that the function expects to receive.
Returns
A Boolean value: JS_TRUE indicates success; JS_FALSE indicates failure.