summaryrefslogtreecommitdiff
path: root/doc/example.bnd
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2016-11-27 22:07:45 +0000
committerVincent Sanders <vince@kyllikki.org>2016-11-27 22:07:45 +0000
commitc9f68158c10adbe8ddcd27aa3971728bee7c72ce (patch)
treed0d37a43385c296f14eb3788a17ce5ab4a18c4b1 /doc/example.bnd
parent4486feb85d51473763aeefe4a7a46e1992336bf6 (diff)
downloadnsgenbind-c9f68158c10adbe8ddcd27aa3971728bee7c72ce.tar.gz
nsgenbind-c9f68158c10adbe8ddcd27aa3971728bee7c72ce.tar.bz2
Add doxygen generator
Diffstat (limited to 'doc/example.bnd')
-rw-r--r--doc/example.bnd269
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 %{
-%}