diff options
author | Vincent Sanders <vince@kyllikki.org> | 2016-11-27 22:07:45 +0000 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2016-11-27 22:07:45 +0000 |
commit | c9f68158c10adbe8ddcd27aa3971728bee7c72ce (patch) | |
tree | d0d37a43385c296f14eb3788a17ce5ab4a18c4b1 /doc/example.bnd | |
parent | 4486feb85d51473763aeefe4a7a46e1992336bf6 (diff) | |
download | nsgenbind-c9f68158c10adbe8ddcd27aa3971728bee7c72ce.tar.gz nsgenbind-c9f68158c10adbe8ddcd27aa3971728bee7c72ce.tar.bz2 |
Add doxygen generator
Diffstat (limited to 'doc/example.bnd')
-rw-r--r-- | doc/example.bnd | 269 |
1 files changed, 0 insertions, 269 deletions
diff --git a/doc/example.bnd b/doc/example.bnd deleted file mode 100644 index 7caebf0..0000000 --- a/doc/example.bnd +++ /dev/null @@ -1,269 +0,0 @@ -/* Example binding to generate Example interface - * - * The js_libdom (javascript to libdom) binding type is currently the - * only one implemented and this principly describes that binding. - * - * Copyright 2012 Vincent Sanders <vince@netsurf-browser.org> - * - * This file is part of NetSurf, http://www.netsurf-browser.org/ - * - * Released under the terms of the MIT License, - * http://www.opensource.org/licenses/mit-license - */ - - -/* directive to read WebIDL file and add its contents to the webidl AST */ -webidlfile "html.idl"; - -/* The hdrcomment are added into the geenrated output comment header */ -hdrcomment "Copyright 2012 Vincent Sanders <vince@netsurf-browser.org>"; -hdrcomment "This file is part of NetSurf, http://www.netsurf-browser.org/"; -hdrcomment "Released under the terms of the MIT License,"; -hdrcomment " http://www.opensource.org/licenses/mit-license"; - -/* the preamble block is copied verbatum into the generated output - * - * This can be used for includes, comments or whatever else is desired - */ -preamble %{ - -#include <dom/dom.h> - -#include "utils/config.h" -#include "utils/log.h" - -#include "javascript/jsapi.h" -#include "javascript/jsapi/binding.h" - -%} - -/* code block emitted immediately before the binding function bodies */ -prologue %{ -%} - -/* code block emmitted at the end of the output */ -epilogue %{ -%} - -/* additional binding fragments may be included - * Note: this is not preprocessed despite the #include name, the - * parser will simply switch input to the included file and carry on - * cosntructing the bindings Abstract Syntax Tree (AST) - */ -#include "dom.bnd" - - -/* This block describes the binding to be generated - * - * Depending on the type of binding being generated multiple blocks - * may be allowed. - * - * Note: the jsapi_libdom (spidermonkey javascript to libdom) binding - * is the only type currently implemented - */ -binding jsapi_libdom { - - - /* Interface with specified flags - * - * global - the generated interface will be a global object - * jsapi_constructor - a c function will be generated to - * instansiate the interface (class) - * js_constructor - the interface (class) can be instnsiated from - * javascript - * - */ - interface Example { - flags global, jsapi_constructor, js_constructor; - } - - /* The WebIDL interface to generate a binding for. With no flags - * the default of jsapi_constructor is used - */ - interface Navigator; - - /* private members: - * - stored in private context structure. - * - passed as parameters to constructor and stored automatically. - * - are *not* considered for property getters/setters. - */ - private "dom_document *" node; - - /* internal members: - * - value stored in private context structure - * - not passed to constructor - * - must be instantiated by constructor - * - are considered for property getters/setters. - */ - internal "void *" fluff; - - /* property handler specifiers: - * - (un)shared flag allows control of the properties JSAPI shared state. - * The default for all unnamed properties on the interface - * is shared without a type handler. - * - type flag allows a set of properties whose type matches the - * identifier to be handled by the same callback function. - */ - property shared bar; /* the default - a noop */ - property shared type EventHandler; - property unshared foo; - property unshared type WindowProxy; -} - -/* operation implementation code. - * - * The body is copied verbatum into operation binding - * - * several values are generated automatically: - * - * - The generated operations use a macro to create a JSNative JSAPI - * callback. The interface allows a uniform interface despite the - * evolution of the interface over differing spidermonkey versions. - * - * - The above implies the javascript context is in a variable called cx - * - * - If private or internal binding members are present they may be - * accessed through a structure named "private" - * - * - if there are arguemnts they may be accesed via an argc/argv jsval - * vector. - * - * - Arguments are automatically converted into c variables (named as - * per the WebIDL names. - * - * - Return values (excepting void return types where its omitted) are - * always named "retval" and are of the appropriate c type. The - * initial value is set appropriately. - */ -operation foo %{ - retval = JS_NewStringCopyN(cx, "foo", SLEN("foo")); -%} - -/* property getter implementation code. - * - * The body is copied verbatum into property getter binding - * - * several values are generated automatically: - * - * - The generated operations use a macro to create a JSPropertyOp - * JSAPI callback. The interface allows a uniform interface despite - * the evolution of the interface over differing spidermonkey - * versions. - * - * - The above implies the javascript context is available in a - * variable called "cx". - * - * - If private or internal binding members are present they may be - * accessed through a structure named "private" - * - * - Return values (void on a getter is not possible) are always named - * "retval" and are of the appropriate c type. The initial value is - * set appropriately. - * - * - If the getter is omitted altogether but an internal or private - * value of the same name appears in the private structure a getter - * is automatically constructed to return that value. - */ -getter bar %{ - retval = JS_NewStringCopyN(cx, "bar", SLEN("bar")); -%} - -/* property setter implementation code. - * - * The body is copied verbatum into property getter binding - * - * several values are generated automatically: - * - * - The generated operations use a macro to create a JSPropertyOp - * JSAPI callback. The interface allows a uniform interface despite - * the evolution of the interface over differing spidermonkey - * versions. - * - * - The above implies the javascript context is available in a - * variable called "cx". - * - * - If private or internal binding members are present they may be - * accessed through a structure named "private" - * - * - Value to set is placed in a c variable named "setval" of the - * appropriate type. - * - * - Return value, named retval" is a boolean (default true) which - * indicates if the set was performed. - * - * - If the setter is omitted altogether but an internal or private - * value of the same name appears in the private structure a setter - * is automatically constructed to assign that value. - */ -setter baz %{ - printf("%s\n", setval); -%} - -/* implementation of the class initilisation - * - * This allows the default JS_InitClass to be overriden - currently - * only used for the window (global) object to cause all the other class - * initialisors to be called. - * - * function prototype is: - * JSObject *jsapi_InitClass_HTMLElement(JSContext *cx, JSObject *parent) - */ -api init %{ -%} - -/* implementation of the c instance creation - * - * This allows the overriding of the construction of an interface instance. - * - * The body is copied verbatum and must return the new object in the - * "newobject" variable. - * - * The base prototype is - * JSObject *jsapi_new_HTMLElement(JSContext *cx, JSObject *prototype, JSObject *parent, ...) - * The varadic elements are private variables as specified in the binding - * - * If there are private or internal values the private struct is - * constructed and instantiated. The struct is available during the - * new function and is automatically attached as the private value to - * the object. - * - * The default implemenattion simply calls JS_NewObject() - * - * Note this does *not* rely upon (or even call) the instances - * javascript constructor allowing the c code to create objects that - * cannot be instantiated from javascript. - * - */ -api new %{ -%} - -/* additional code in the instance finalise operation. - * - * The body is copied verbatim into the output - * - * Prototype is - * void jsclass_finalize(JSContext *cx, JSObject *obj) - * - * private is available (if appropriate) and freed after the body - */ -api finalise %{ -%} - -/* resolver code - * - * A resolver is only generated if this api is provided. This is a - * JSResolveOp with JSCLASS_NEW_RESOLVE specified and must provide a - * complete implementation. - * - * The body is copied verbatim into the output - * - * Prototype is: - * JSBool jsclass_resolve(JSContext *cx, JSObject *obj, jsval id, uintN flags, JSObject **objp) - * - * By default returns JS_TRUE implying that *objp has been updated - * - * The minimal implementation would be "*objp = NULL;" but is - * equivalent to simply omitting this directive and using the default stub. - */ -api resolve %{ -%} |