From 7855666842cc25c4124a218aac7650e3bf3e2e55 Mon Sep 17 00:00:00 2001 From: ishmal Date: Sun, 27 Aug 2006 14:46:38 +0000 Subject: [PATCH] provide skeleton wrappers for all DOM core classes. add content later --- src/dom/jsbind.cpp | 5041 +++++++++++++++++++++++++++++++++++++------- src/dom/jsengine.h | 33 +- 2 files changed, 4327 insertions(+), 747 deletions(-) diff --git a/src/dom/jsbind.cpp b/src/dom/jsbind.cpp index 3243703b1..35031b6cd 100644 --- a/src/dom/jsbind.cpp +++ b/src/dom/jsbind.cpp @@ -36,13 +36,37 @@ { namespace dom { - + + /** * To ensure that we at least attempt to bind ECMAScript to DOM as closely as * possible, we will include the entire Appendix H of the XML Level 3 Core spec: * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/ecma-script-binding.html */ + +//######################################################################## +//# U T I L I T Y +//######################################################################## + + +/** + * The name of the property is an enumeration, so just return the value. + */ +static JSBool JSGetEnumProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) +{ + *vp = id; + return JS_TRUE; +} + + + + +//######################################################################## +//# C L A S S E S +//######################################################################## + /** * Appendix H: ECMAScript Language Binding * @@ -74,6 +98,120 @@ * */ +class ECMA_DOMImplementationRegistry +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getDOMImplementation(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getDOMImplementationList(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_DOMImplementationRegistry::classDef = +{ + "DOMImplementationRegistry", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_DOMImplementationRegistry::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_DOMImplementationRegistry::methods[] = +{ + { "getDOMImplementation", getDOMImplementation, 1, 0, 0 }, + { "getDOMImplementationList", getDOMImplementationList, 1, 0, 0 }, + { 0 } +}; + + + + /** @@ -128,6 +266,170 @@ * */ +class ECMA_DOMException +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + staticProperties, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + if (!JSVAL_IS_INT(id)) + return JS_FALSE; + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + switch( JSVAL_TO_INT( id ) ) + { + case code_prop: + { + *vp = INT_TO_JSVAL(p->code); + return JS_TRUE; + } + } + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + if (!JSVAL_IS_INT(id)) + return JS_FALSE; + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + switch( JSVAL_TO_INT( id ) ) + { + case code_prop: + { + p->code = JSVAL_TO_INT( *vp ); + return JS_TRUE; + } + } + return JS_FALSE; + } + + + +private: + + // Standard JS Binding fields + static JSClass classDef; + enum + { + code_prop + }; + static JSPropertySpec properties[]; + static JSPropertySpec staticProperties[]; + static JSFunctionSpec methods[]; + static JSFunctionSpec staticMethods[]; + +}; + +JSClass ECMA_DOMException::classDef = +{ + "Node", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_DOMException::properties[] = +{ + { "code", code_prop, + JSPROP_ENUMERATE }, + { 0 } +}; + +JSPropertySpec ECMA_DOMException::staticProperties[] = +{ + { "INDEX_SIZE_ERR", DOMException::INDEX_SIZE_ERR, + JSPROP_READONLY, JSGetEnumProperty }, + { "DOMSTRING_SIZE_ERR", DOMException::DOMSTRING_SIZE_ERR, + JSPROP_READONLY, JSGetEnumProperty }, + { "HIERARCHY_REQUEST_ERR", DOMException::HIERARCHY_REQUEST_ERR, + JSPROP_READONLY, JSGetEnumProperty }, + { "WRONG_DOCUMENT_ERR", DOMException::WRONG_DOCUMENT_ERR, + JSPROP_READONLY, JSGetEnumProperty }, + { "INVALID_CHARACTER_ERR", DOMException::INVALID_CHARACTER_ERR, + JSPROP_READONLY, JSGetEnumProperty }, + { "NO_DATA_ALLOWED_ERR", DOMException::NO_DATA_ALLOWED_ERR, + JSPROP_READONLY, JSGetEnumProperty }, + { "NO_MODIFICATION_ALLOWED_ERR", DOMException::NO_MODIFICATION_ALLOWED_ERR, + JSPROP_READONLY, JSGetEnumProperty }, + { "NOT_FOUND_ERR", DOMException::NOT_FOUND_ERR, + JSPROP_READONLY, JSGetEnumProperty }, + { "NOT_SUPPORTED_ERR", DOMException::NOT_SUPPORTED_ERR, + JSPROP_READONLY, JSGetEnumProperty }, + { "INUSE_ATTRIBUTE_ERR", DOMException::INUSE_ATTRIBUTE_ERR, + JSPROP_READONLY, JSGetEnumProperty }, + { "INVALID_STATE_ERR", DOMException::INVALID_STATE_ERR, + JSPROP_READONLY, JSGetEnumProperty }, + { "SYNTAX_ERR", DOMException::SYNTAX_ERR, + JSPROP_READONLY, JSGetEnumProperty }, + { "INVALID_MODIFICATION_ERR", DOMException::INVALID_MODIFICATION_ERR, + JSPROP_READONLY, JSGetEnumProperty }, + { "NAMESPACE_ERR", DOMException::NAMESPACE_ERR, + JSPROP_READONLY, JSGetEnumProperty }, + { "INVALID_ACCESS_ERR", DOMException::INVALID_ACCESS_ERR, + JSPROP_READONLY, JSGetEnumProperty }, + { "VALIDATION_ERR", DOMException::VALIDATION_ERR, + JSPROP_READONLY, JSGetEnumProperty }, + { "TYPE_MISMATCH_ERR", DOMException::TYPE_MISMATCH_ERR, + JSPROP_READONLY, JSGetEnumProperty }, + { 0 } +}; + +JSFunctionSpec ECMA_DOMException::methods[] = +{ + { 0 } +}; + + + + /** * Objects that implement the DOMStringList interface: * @@ -151,14 +453,140 @@ * */ +class ECMA_DOMStringList +{ +public: + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMStringList *p = new DOMStringList(); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } -/** - * Objects that implement the NameList interface: - * - * Properties of objects that implement the NameList interface: - * - * length + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMStringList *p = (DOMStringList *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + if (JSVAL_IS_INT(id)) + { + DOMStringList *p = (DOMStringList *) JS_GetPrivate(cx, obj); + if (JSVAL_TO_INT(id) == prop_length) + *vp = JSVAL_TO_INT(p->getLength()); + return JS_TRUE; + } + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool item(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + enum + { + prop_length + }; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_DOMStringList::classDef = +{ + "DOMStringList", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_DOMStringList::properties[] = +{ + { "length", prop_length, JSPROP_READONLY }, + { 0 } +}; + +JSFunctionSpec ECMA_DOMStringList::methods[] = +{ + { "item", item, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { 0 } +}; + + + + + + +/** + * Objects that implement the NameList interface: + * + * Properties of objects that implement the NameList interface: + * + * length * This read-only property is a Number. * * Functions of objects that implement the NameList interface: @@ -178,6 +606,140 @@ * The name parameter is a String. */ +class ECMA_NameList +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getName(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getNamespaceURI(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool containsNS(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_NameList::classDef = +{ + "NameList", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_NameList::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_NameList::methods[] = +{ + { "getName", getName, 1, 0, 0 }, + { "getNamespaceURI", getNamespaceURI, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { "containsNS", containsNS, 2, 0, 0 }, + { 0 } +}; + + + + /** * Objects that implement the DOMImplementationList interface: @@ -199,311 +761,267 @@ * */ -/** - * Objects that implement the DOMImplementationSource interface: - * - * Functions of objects that implement the DOMImplementationSource interface: - * - * getDOMImplementation(features) - * This function returns an object that implements the DOMImplementation interface. - * The features parameter is a String. - * getDOMImplementationList(features) - * This function returns an object that implements the DOMImplementationList - * interface. - * The features parameter is a String. - */ +class ECMA_DOMImplementationList +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool item(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_DOMImplementationList::classDef = +{ + "DOMImplementationRegistry", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_DOMImplementationList::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_DOMImplementationList::methods[] = +{ + { "item", item, 1, 0, 0 }, + { 0 } +}; -/** - * Objects that implement the DOMImplementation interface: - * - * Functions of objects that implement the DOMImplementation interface: - * - * hasFeature(feature, version) - * This function returns a Boolean. - * The feature parameter is a String. - * The version parameter is a String. - * createDocumentType(qualifiedName, publicId, systemId) - * This function returns an object that implements the DocumentType interface. - * The qualifiedName parameter is a String. - * The publicId parameter is a String. - * The systemId parameter is a String. - * This function can raise an object that implements the DOMException interface. - * createDocument(namespaceURI, qualifiedName, doctype) - * This function returns an object that implements the Document interface. - * The namespaceURI parameter is a String. - * The qualifiedName parameter is a String. - * The doctype parameter is an object that implements the DocumentType interface. - * This function can raise an object that implements the DOMException interface. - * getFeature(feature, version) - * This function returns an object that implements the Object interface. - * The feature parameter is a String. - * The version parameter is a String. - */ -/** - * Objects that implement the DocumentFragment interface: - * - * Objects that implement the DocumentFragment interface have all properties and - * functions of the Node interface. - */ /** - * Objects that implement the Document interface: - * - * Objects that implement the Document interface have all properties and functions - * of the Node interface as well as the properties and functions defined below. - * Properties of objects that implement the Document interface: - * + * Objects that implement the DOMImplementationSource interface: * - * doctype - * This read-only property is an object that implements the DocumentType interface. - * implementation - * This read-only property is an object that implements the DOMImplementation - * interface. - * documentElement - * This read-only property is an object that implements the Element interface. - * inputEncoding - * This read-only property is a String. - * xmlEncoding - * This read-only property is a String. - * xmlStandalone - * This property is a Boolean and can raise an object that implements the - * DOMException interface on setting. - * xmlVersion - * This property is a String and can raise an object that implements the - * DOMException interface on setting. - * strictErrorChecking - * This property is a Boolean. - * documentURI - * This property is a String. - * domConfig - * This read-only property is an object that implements the DOMConfiguration - * interface. + * Functions of objects that implement the DOMImplementationSource interface: * + * getDOMImplementation(features) + * This function returns an object that implements the DOMImplementation interface. + * The features parameter is a String. + * getDOMImplementationList(features) + * This function returns an object that implements the DOMImplementationList + * interface. + * The features parameter is a String. + */ + +class ECMA_DOMImplementationSource +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getDOMImplementation(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getDOMImplementationList(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_DOMImplementationSource::classDef = +{ + "DOMImplementationSource", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_DOMImplementationSource::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_DOMImplementationSource::methods[] = +{ + { "getDOMImplementation", getDOMImplementation, 1, 0, 0 }, + { "getDOMImplementationList", getDOMImplementationList, 1, 0, 0 }, + { 0 } +}; + + + + + +/** + * Objects that implement the DOMImplementation interface: * - * Functions of objects that implement the Document interface: + * Functions of objects that implement the DOMImplementation interface: * - * createElement(tagName) - * This function returns an object that implements the Element interface. - * The tagName parameter is a String. - * This function can raise an object that implements the DOMException interface. - * createDocumentFragment() - * This function returns an object that implements the DocumentFragment interface. - * createTextNode(data) - * This function returns an object that implements the Text interface. - * The data parameter is a String. - * createComment(data) - * This function returns an object that implements the Comment interface. - * The data parameter is a String. - * createCDATASection(data) - * This function returns an object that implements the CDATASection interface. - * The data parameter is a String. - * This function can raise an object that implements the DOMException interface. - * createProcessingInstruction(target, data) - * This function returns an object that implements the ProcessingInstruction interface. - * The target parameter is a String. - * The data parameter is a String. - * This function can raise an object that implements the DOMException interface. - * createAttribute(name) - * This function returns an object that implements the Attr interface. - * The name parameter is a String. - * This function can raise an object that implements the DOMException interface. - * createEntityReference(name) - * This function returns an object that implements the EntityReference interface. - * The name parameter is a String. - * This function can raise an object that implements the DOMException interface. - * getElementsByTagName(tagname) - * This function returns an object that implements the NodeList interface. - * The tagname parameter is a String. - * importNode(importedNode, deep) - * This function returns an object that implements the Node interface. - * The importedNode parameter is an object that implements the Node interface. - * The deep parameter is a Boolean. - * This function can raise an object that implements the DOMException interface. - * createElementNS(namespaceURI, qualifiedName) - * This function returns an object that implements the Element interface. - * The namespaceURI parameter is a String. + * hasFeature(feature, version) + * This function returns a Boolean. + * The feature parameter is a String. + * The version parameter is a String. + * createDocumentType(qualifiedName, publicId, systemId) + * This function returns an object that implements the DocumentType interface. * The qualifiedName parameter is a String. + * The publicId parameter is a String. + * The systemId parameter is a String. * This function can raise an object that implements the DOMException interface. - * createAttributeNS(namespaceURI, qualifiedName) - * This function returns an object that implements the Attr interface. + * createDocument(namespaceURI, qualifiedName, doctype) + * This function returns an object that implements the Document interface. * The namespaceURI parameter is a String. * The qualifiedName parameter is a String. + * The doctype parameter is an object that implements the DocumentType interface. * This function can raise an object that implements the DOMException interface. - * getElementsByTagNameNS(namespaceURI, localName) - * This function returns an object that implements the NodeList interface. - * The namespaceURI parameter is a String. - * The localName parameter is a String. - * getElementById(elementId) - * This function returns an object that implements the Element interface. - * The elementId parameter is a String. - * adoptNode(source) - * This function returns an object that implements the Node interface. - * The source parameter is an object that implements the Node interface. - * This function can raise an object that implements the DOMException interface. - * normalizeDocument() - * This function has no return value. - * renameNode(n, namespaceURI, qualifiedName) - * This function returns an object that implements the Node interface. - * The n parameter is an object that implements the Node interface. - * The namespaceURI parameter is a String. - * The qualifiedName parameter is a String. - * This function can raise an object that implements the DOMException interface. - */ - - -/** - * Properties of the Node Constructor function: - * - * Node.ELEMENT_NODE - * The value of the constant Node.ELEMENT_NODE is 1. - * Node.ATTRIBUTE_NODE - * The value of the constant Node.ATTRIBUTE_NODE is 2. - * Node.TEXT_NODE - * The value of the constant Node.TEXT_NODE is 3. - * Node.CDATA_SECTION_NODE - * The value of the constant Node.CDATA_SECTION_NODE is 4. - * Node.ENTITY_REFERENCE_NODE - * The value of the constant Node.ENTITY_REFERENCE_NODE is 5. - * Node.ENTITY_NODE - * The value of the constant Node.ENTITY_NODE is 6. - * Node.PROCESSING_INSTRUCTION_NODE - * The value of the constant Node.PROCESSING_INSTRUCTION_NODE is 7. - * Node.COMMENT_NODE - * The value of the constant Node.COMMENT_NODE is 8. - * Node.DOCUMENT_NODE - * The value of the constant Node.DOCUMENT_NODE is 9. - * Node.DOCUMENT_TYPE_NODE - * The value of the constant Node.DOCUMENT_TYPE_NODE is 10. - * Node.DOCUMENT_FRAGMENT_NODE - * The value of the constant Node.DOCUMENT_FRAGMENT_NODE is 11. - * Node.NOTATION_NODE - * The value of the constant Node.NOTATION_NODE is 12. - * Node.DOCUMENT_POSITION_DISCONNECTED - * The value of the constant Node.DOCUMENT_POSITION_DISCONNECTED is 0x01. - * Node.DOCUMENT_POSITION_PRECEDING - * The value of the constant Node.DOCUMENT_POSITION_PRECEDING is 0x02. - * Node.DOCUMENT_POSITION_FOLLOWING - * The value of the constant Node.DOCUMENT_POSITION_FOLLOWING is 0x04. - * Node.DOCUMENT_POSITION_CONTAINS - * The value of the constant Node.DOCUMENT_POSITION_CONTAINS is 0x08. - * Node.DOCUMENT_POSITION_CONTAINED_BY - * The value of the constant Node.DOCUMENT_POSITION_CONTAINED_BY is 0x10. - * Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC - * The value of the constant Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC is 0x20. - * - * Objects that implement the Node interface: - * - * Properties of objects that implement the Node interface: - * - * nodeName - * This read-only property is a String. - * nodeValue - * This property is a String, can raise an object that implements the DOMException - * interface on setting and can raise an object that implements the DOMException - * interface on retrieval. - * nodeType - * This read-only property is a Number. - * parentNode - * This read-only property is an object that implements the Node interface. - * childNodes - * This read-only property is an object that implements the NodeList interface. - * firstChild - * This read-only property is an object that implements the Node interface. - * lastChild - * This read-only property is an object that implements the Node interface. - * previousSibling - * This read-only property is an object that implements the Node interface. - * nextSibling - * This read-only property is an object that implements the Node interface. - * attributes - * This read-only property is an object that implements the NamedNodeMap interface. - * ownerDocument - * This read-only property is an object that implements the Document interface. - * namespaceURI - * This read-only property is a String. - * prefix - * This property is a String and can raise an object that implements the - * DOMException interface on setting. - * localName - * This read-only property is a String. - * baseURI - * This read-only property is a String. - * textContent - * This property is a String, can raise an object that implements the DOMException - * interface on setting and can raise an object that implements the DOMException - * interface on retrieval. - * - * - * Functions of objects that implement the Node interface: - * - * insertBefore(newChild, refChild) - * This function returns an object that implements the Node interface. - * The newChild parameter is an object that implements the Node interface. - * The refChild parameter is an object that implements the Node interface. - * This function can raise an object that implements the DOMException interface. - * replaceChild(newChild, oldChild) - * This function returns an object that implements the Node interface. - * The newChild parameter is an object that implements the Node interface. - * The oldChild parameter is an object that implements the Node interface. - * This function can raise an object that implements the DOMException interface. - * removeChild(oldChild) - * This function returns an object that implements the Node interface. - * The oldChild parameter is an object that implements the Node interface. - * This function can raise an object that implements the DOMException interface. - * appendChild(newChild) - * This function returns an object that implements the Node interface. - * The newChild parameter is an object that implements the Node interface. - * This function can raise an object that implements the DOMException interface. - * hasChildNodes() - * This function returns a Boolean. - * cloneNode(deep) - * This function returns an object that implements the Node interface. - * The deep parameter is a Boolean. - * normalize() - * This function has no return value. - * isSupported(feature, version) - * This function returns a Boolean. - * The feature parameter is a String. - * The version parameter is a String. - * hasAttributes() - * This function returns a Boolean. - * compareDocumentPosition(other) - * This function returns a Number. - * The other parameter is an object that implements the Node interface. - * This function can raise an object that implements the DOMException interface. - * isSameNode(other) - * This function returns a Boolean. - * The other parameter is an object that implements the Node interface. - * lookupPrefix(namespaceURI) - * This function returns a String. - * The namespaceURI parameter is a String. - * isDefaultNamespace(namespaceURI) - * This function returns a Boolean. - * The namespaceURI parameter is a String. - * lookupNamespaceURI(prefix) - * This function returns a String. - * The prefix parameter is a String. - * isEqualNode(arg) - * This function returns a Boolean. - * The arg parameter is an object that implements the Node interface. * getFeature(feature, version) * This function returns an object that implements the Object interface. * The feature parameter is a String. * The version parameter is a String. - * setUserData(key, data, handler) - * This function returns an object that implements the any type interface. - * The key parameter is a String. - * The data parameter is an object that implements the any type interface. - * The handler parameter is an object that implements the UserDataHandler interface. - * getUserData(key) - * This function returns an object that implements the any type interface. - * The key parameter is a String. - * */ -class JSNode +class ECMA_DOMImplementation { public: @@ -513,7 +1031,9 @@ public: static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { - Node *p = new NodeImpl(); + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); if ( ! JS_SetPrivate(cx, obj, p) ) return JS_FALSE; *rval = OBJECT_TO_JSVAL(obj); @@ -528,7 +1048,7 @@ public: JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, JSConstructor, 0, properties, methods, - staticProperties, staticMethods); + NULL, NULL); return newObj; } @@ -537,7 +1057,7 @@ public: */ static void JSDestructor(JSContext *cx, JSObject *obj) { - Node *p = (Node *) JS_GetPrivate(cx, obj); + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); delete p; p = NULL; } @@ -548,21 +1068,6 @@ public: static JSBool JSGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) { - if (!JSVAL_IS_INT(id)) - return JS_FALSE; - Node *p = (Node *) JS_GetPrivate(cx, obj); - switch( JSVAL_TO_INT( id ) ) - { - case name_prop: - { - return JS_TRUE; - } - case age_prop: - { - //*vp = INT_TO_JSVAL(priv->getNode()->GetAge()); - return JS_TRUE; - } - } return JS_FALSE; } @@ -572,542 +1077,3345 @@ public: static JSBool JSSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) { - if (!JSVAL_IS_INT(id)) - return JS_FALSE; - Node *p = (Node *) JS_GetPrivate(cx, obj); - switch( JSVAL_TO_INT( id ) ) - { - case name_prop: - { - return JS_TRUE; - } - case age_prop: - { - //*vp = INT_TO_JSVAL(priv->getNode()->GetAge()); - return JS_TRUE; - } - } return JS_FALSE; } + /** + * + */ + static JSBool hasFeature(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool createDocumentType(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool createDocument(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getFeature(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } private: // Standard JS Binding fields static JSClass classDef; - enum - { - name_prop, - age_prop - }; static JSPropertySpec properties[]; - static JSPropertySpec staticProperties[]; static JSFunctionSpec methods[]; - static JSFunctionSpec staticMethods[]; }; -// JSCustomer.cpp -JSClass JSNode::classDef = +JSClass ECMA_DOMImplementation::classDef = { - "Node", + "DOMImplementation", JSCLASS_HAS_PRIVATE, JS_PropertyStub, JS_PropertyStub, - JSNode::JSGetProperty, JSNode::JSSetProperty, + JSGetProperty, JSSetProperty, JS_EnumerateStub, JS_ResolveStub, - JS_ConvertStub, JSNode::JSDestructor + JS_ConvertStub, JSDestructor }; -JSPropertySpec JSNode::properties[] = -{ - { "name", JSNode::name_prop, JSPROP_ENUMERATE }, - { "age", JSNode::age_prop, JSPROP_ENUMERATE }, - { 0 } -}; -JSPropertySpec JSNode::staticProperties[] = + +JSPropertySpec ECMA_DOMImplementation::properties[] = { { 0 } }; -JSFunctionSpec JSNode::methods[] = -{ -// { "computeReduction", computeReduction, 1, 0, 0 }, - { 0 } -}; - -JSFunctionSpec JSNode::staticMethods[] = +JSFunctionSpec ECMA_DOMImplementation::methods[] = { + { "hasFeature", hasFeature, 2, 0, 0 }, + { "createDocumentType", createDocumentType, 3, 0, 0 }, + { "createDocument", createDocument, 3, 0, 0 }, + { "getFeature", getFeature, 2, 0, 0 }, { 0 } }; +/** + * Objects that implement the DocumentFragment interface: + * + * Objects that implement the DocumentFragment interface have all properties and + * functions of the Node interface. + */ + +class ECMA_DocumentFragment +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getDOMImplementation(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getDOMImplementationList(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_DocumentFragment::classDef = +{ + "DocumentFragment", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_DocumentFragment::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_DocumentFragment::methods[] = +{ + { "getDOMImplementation", getDOMImplementation, 1, 0, 0 }, + { "getDOMImplementationList", getDOMImplementationList, 1, 0, 0 }, + { 0 } +}; /** - * Objects that implement the NodeList interface: - * - * Properties of objects that implement the NodeList interface: - * - * length - * This read-only property is a Number. - * - * Functions of objects that implement the NodeList interface: - * - * item(index) - * This function returns an object that implements the Node interface. - * The index parameter is a Number. - * Note: This object can also be dereferenced using square bracket notation - * (e.g. obj[1]). Dereferencing with an integer index is equivalent - * to invoking the item function with that index. - * - * - */ - -/** - * Objects that implement the NamedNodeMap interface: + * Objects that implement the Document interface: * - * Properties of objects that implement the NamedNodeMap interface: + * Objects that implement the Document interface have all properties and functions + * of the Node interface as well as the properties and functions defined below. + * Properties of objects that implement the Document interface: * - * length - * This read-only property is a Number. * - * Functions of objects that implement the NamedNodeMap interface: + * doctype + * This read-only property is an object that implements the DocumentType interface. + * implementation + * This read-only property is an object that implements the DOMImplementation + * interface. + * documentElement + * This read-only property is an object that implements the Element interface. + * inputEncoding + * This read-only property is a String. + * xmlEncoding + * This read-only property is a String. + * xmlStandalone + * This property is a Boolean and can raise an object that implements the + * DOMException interface on setting. + * xmlVersion + * This property is a String and can raise an object that implements the + * DOMException interface on setting. + * strictErrorChecking + * This property is a Boolean. + * documentURI + * This property is a String. + * domConfig + * This read-only property is an object that implements the DOMConfiguration + * interface. * - * getNamedItem(name) - * This function returns an object that implements the Node interface. - * The name parameter is a String. - * setNamedItem(arg) - * This function returns an object that implements the Node interface. - * The arg parameter is an object that implements the Node interface. + * + * Functions of objects that implement the Document interface: + * + * createElement(tagName) + * This function returns an object that implements the Element interface. + * The tagName parameter is a String. * This function can raise an object that implements the DOMException interface. - * removeNamedItem(name) - * This function returns an object that implements the Node interface. + * createDocumentFragment() + * This function returns an object that implements the DocumentFragment interface. + * createTextNode(data) + * This function returns an object that implements the Text interface. + * The data parameter is a String. + * createComment(data) + * This function returns an object that implements the Comment interface. + * The data parameter is a String. + * createCDATASection(data) + * This function returns an object that implements the CDATASection interface. + * The data parameter is a String. + * This function can raise an object that implements the DOMException interface. + * createProcessingInstruction(target, data) + * This function returns an object that implements the ProcessingInstruction interface. + * The target parameter is a String. + * The data parameter is a String. + * This function can raise an object that implements the DOMException interface. + * createAttribute(name) + * This function returns an object that implements the Attr interface. * The name parameter is a String. * This function can raise an object that implements the DOMException interface. - * item(index) - * This function returns an object that implements the Node interface. - * The index parameter is a Number. - * Note: This object can also be dereferenced using square bracket notation - * (e.g. obj[1]). Dereferencing with an integer index is equivalent - * to invoking the item function with that index. - * getNamedItemNS(namespaceURI, localName) + * createEntityReference(name) + * This function returns an object that implements the EntityReference interface. + * The name parameter is a String. + * This function can raise an object that implements the DOMException interface. + * getElementsByTagName(tagname) + * This function returns an object that implements the NodeList interface. + * The tagname parameter is a String. + * importNode(importedNode, deep) * This function returns an object that implements the Node interface. + * The importedNode parameter is an object that implements the Node interface. + * The deep parameter is a Boolean. + * This function can raise an object that implements the DOMException interface. + * createElementNS(namespaceURI, qualifiedName) + * This function returns an object that implements the Element interface. * The namespaceURI parameter is a String. - * The localName parameter is a String. + * The qualifiedName parameter is a String. * This function can raise an object that implements the DOMException interface. - * setNamedItemNS(arg) + * createAttributeNS(namespaceURI, qualifiedName) + * This function returns an object that implements the Attr interface. + * The namespaceURI parameter is a String. + * The qualifiedName parameter is a String. + * This function can raise an object that implements the DOMException interface. + * getElementsByTagNameNS(namespaceURI, localName) + * This function returns an object that implements the NodeList interface. + * The namespaceURI parameter is a String. + * The localName parameter is a String. + * getElementById(elementId) + * This function returns an object that implements the Element interface. + * The elementId parameter is a String. + * adoptNode(source) * This function returns an object that implements the Node interface. - * The arg parameter is an object that implements the Node interface. + * The source parameter is an object that implements the Node interface. * This function can raise an object that implements the DOMException interface. - * removeNamedItemNS(namespaceURI, localName) + * normalizeDocument() + * This function has no return value. + * renameNode(n, namespaceURI, qualifiedName) * This function returns an object that implements the Node interface. + * The n parameter is an object that implements the Node interface. * The namespaceURI parameter is a String. - * The localName parameter is a String. + * The qualifiedName parameter is a String. * This function can raise an object that implements the DOMException interface. */ +class ECMA_Document +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getDOMImplementation(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getDOMImplementationList(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_Document::classDef = +{ + "Document", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_Document::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_Document::methods[] = +{ + { "getDOMImplementation", getDOMImplementation, 1, 0, 0 }, + { "getDOMImplementationList", getDOMImplementationList, 1, 0, 0 }, + { 0 } +}; + + + -/** - * Objects that implement the CharacterData interface: - * - * Objects that implement the CharacterData interface have all properties and - * functions of the Node interface as well as the properties and functions defined - * below. Properties of objects that implement the CharacterData interface: - * - * - * data - * This property is a String, can raise an object that implements the DOMException - * interface on setting and can raise an object that implements the DOMException - * interface on retrieval. - * length - * This read-only property is a Number. - * - * Functions of objects that implement the CharacterData interface: - * - * substringData(offset, count) - * This function returns a String. - * The offset parameter is a Number. - * The count parameter is a Number. - * This function can raise an object that implements the DOMException interface. - * appendData(arg) - * This function has no return value. - * The arg parameter is a String. - * This function can raise an object that implements the DOMException interface. - * insertData(offset, arg) - * This function has no return value. - * The offset parameter is a Number. - * The arg parameter is a String. - * This function can raise an object that implements the DOMException interface. - * deleteData(offset, count) - * This function has no return value. - * The offset parameter is a Number. - * The count parameter is a Number. - * This function can raise an object that implements the DOMException interface. - * replaceData(offset, count, arg) - * This function has no return value. - * The offset parameter is a Number. - * The count parameter is a Number. - * The arg parameter is a String. - * This function can raise an object that implements the DOMException interface. - */ /** - * Objects that implement the Attr interface: + * Properties of the Node Constructor function: * - * Objects that implement the Attr interface have all properties and functions of - * the Node interface as well as the properties and functions defined below. - * Properties of objects that implement the Attr interface: + * Node.ELEMENT_NODE + * The value of the constant Node.ELEMENT_NODE is 1. + * Node.ATTRIBUTE_NODE + * The value of the constant Node.ATTRIBUTE_NODE is 2. + * Node.TEXT_NODE + * The value of the constant Node.TEXT_NODE is 3. + * Node.CDATA_SECTION_NODE + * The value of the constant Node.CDATA_SECTION_NODE is 4. + * Node.ENTITY_REFERENCE_NODE + * The value of the constant Node.ENTITY_REFERENCE_NODE is 5. + * Node.ENTITY_NODE + * The value of the constant Node.ENTITY_NODE is 6. + * Node.PROCESSING_INSTRUCTION_NODE + * The value of the constant Node.PROCESSING_INSTRUCTION_NODE is 7. + * Node.COMMENT_NODE + * The value of the constant Node.COMMENT_NODE is 8. + * Node.DOCUMENT_NODE + * The value of the constant Node.DOCUMENT_NODE is 9. + * Node.DOCUMENT_TYPE_NODE + * The value of the constant Node.DOCUMENT_TYPE_NODE is 10. + * Node.DOCUMENT_FRAGMENT_NODE + * The value of the constant Node.DOCUMENT_FRAGMENT_NODE is 11. + * Node.NOTATION_NODE + * The value of the constant Node.NOTATION_NODE is 12. + * Node.DOCUMENT_POSITION_DISCONNECTED + * The value of the constant Node.DOCUMENT_POSITION_DISCONNECTED is 0x01. + * Node.DOCUMENT_POSITION_PRECEDING + * The value of the constant Node.DOCUMENT_POSITION_PRECEDING is 0x02. + * Node.DOCUMENT_POSITION_FOLLOWING + * The value of the constant Node.DOCUMENT_POSITION_FOLLOWING is 0x04. + * Node.DOCUMENT_POSITION_CONTAINS + * The value of the constant Node.DOCUMENT_POSITION_CONTAINS is 0x08. + * Node.DOCUMENT_POSITION_CONTAINED_BY + * The value of the constant Node.DOCUMENT_POSITION_CONTAINED_BY is 0x10. + * Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC + * The value of the constant Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC is 0x20. * + * Objects that implement the Node interface: * - * name + * Properties of objects that implement the Node interface: + * + * nodeName * This read-only property is a String. - * specified - * This read-only property is a Boolean. - * value + * nodeValue + * This property is a String, can raise an object that implements the DOMException + * interface on setting and can raise an object that implements the DOMException + * interface on retrieval. + * nodeType + * This read-only property is a Number. + * parentNode + * This read-only property is an object that implements the Node interface. + * childNodes + * This read-only property is an object that implements the NodeList interface. + * firstChild + * This read-only property is an object that implements the Node interface. + * lastChild + * This read-only property is an object that implements the Node interface. + * previousSibling + * This read-only property is an object that implements the Node interface. + * nextSibling + * This read-only property is an object that implements the Node interface. + * attributes + * This read-only property is an object that implements the NamedNodeMap interface. + * ownerDocument + * This read-only property is an object that implements the Document interface. + * namespaceURI + * This read-only property is a String. + * prefix * This property is a String and can raise an object that implements the * DOMException interface on setting. - * ownerElement - * This read-only property is an object that implements the Element interface. - * schemaTypeInfo - * This read-only property is an object that implements the TypeInfo interface. - * isId - * This read-only property is a Boolean. - * - */ - -/** - * Objects that implement the Element interface: - * - * Objects that implement the Element interface have all properties and functions - * of the Node interface as well as the properties and functions defined below. - * Properties of objects that implement the Element interface: - * - * - * tagName + * localName * This read-only property is a String. - * schemaTypeInfo - * This read-only property is an object that implements the TypeInfo interface. + * baseURI + * This read-only property is a String. + * textContent + * This property is a String, can raise an object that implements the DOMException + * interface on setting and can raise an object that implements the DOMException + * interface on retrieval. * - * Functions of objects that implement the Element interface: * - * getAttribute(name) - * This function returns a String. - * The name parameter is a String. - * setAttribute(name, value) - * This function has no return value. - * The name parameter is a String. - * The value parameter is a String. + * Functions of objects that implement the Node interface: + * + * insertBefore(newChild, refChild) + * This function returns an object that implements the Node interface. + * The newChild parameter is an object that implements the Node interface. + * The refChild parameter is an object that implements the Node interface. * This function can raise an object that implements the DOMException interface. - * removeAttribute(name) - * This function has no return value. - * The name parameter is a String. + * replaceChild(newChild, oldChild) + * This function returns an object that implements the Node interface. + * The newChild parameter is an object that implements the Node interface. + * The oldChild parameter is an object that implements the Node interface. * This function can raise an object that implements the DOMException interface. - * getAttributeNode(name) - * This function returns an object that implements the Attr interface. - * The name parameter is a String. - * setAttributeNode(newAttr) - * This function returns an object that implements the Attr interface. - * The newAttr parameter is an object that implements the Attr interface. + * removeChild(oldChild) + * This function returns an object that implements the Node interface. + * The oldChild parameter is an object that implements the Node interface. * This function can raise an object that implements the DOMException interface. - * removeAttributeNode(oldAttr) - * This function returns an object that implements the Attr interface. - * The oldAttr parameter is an object that implements the Attr interface. + * appendChild(newChild) + * This function returns an object that implements the Node interface. + * The newChild parameter is an object that implements the Node interface. * This function can raise an object that implements the DOMException interface. - * getElementsByTagName(name) - * This function returns an object that implements the NodeList interface. - * The name parameter is a String. - * getAttributeNS(namespaceURI, localName) - * This function returns a String. - * The namespaceURI parameter is a String. - * The localName parameter is a String. + * hasChildNodes() + * This function returns a Boolean. + * cloneNode(deep) + * This function returns an object that implements the Node interface. + * The deep parameter is a Boolean. + * normalize() + * This function has no return value. + * isSupported(feature, version) + * This function returns a Boolean. + * The feature parameter is a String. + * The version parameter is a String. + * hasAttributes() + * This function returns a Boolean. + * compareDocumentPosition(other) + * This function returns a Number. + * The other parameter is an object that implements the Node interface. * This function can raise an object that implements the DOMException interface. - * setAttributeNS(namespaceURI, qualifiedName, value) - * This function has no return value. - * The namespaceURI parameter is a String. - * The qualifiedName parameter is a String. + * isSameNode(other) + * This function returns a Boolean. + * The other parameter is an object that implements the Node interface. + * lookupPrefix(namespaceURI) + * This function returns a String. + * The namespaceURI parameter is a String. + * isDefaultNamespace(namespaceURI) + * This function returns a Boolean. + * The namespaceURI parameter is a String. + * lookupNamespaceURI(prefix) + * This function returns a String. + * The prefix parameter is a String. + * isEqualNode(arg) + * This function returns a Boolean. + * The arg parameter is an object that implements the Node interface. + * getFeature(feature, version) + * This function returns an object that implements the Object interface. + * The feature parameter is a String. + * The version parameter is a String. + * setUserData(key, data, handler) + * This function returns an object that implements the any type interface. + * The key parameter is a String. + * The data parameter is an object that implements the any type interface. + * The handler parameter is an object that implements the UserDataHandler interface. + * getUserData(key) + * This function returns an object that implements the any type interface. + * The key parameter is a String. + * + */ + +class ECMA_Node +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + Node *p = new NodeImpl(); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + staticProperties, staticMethods); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + Node *p = (Node *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + if (!JSVAL_IS_INT(id)) + return JS_FALSE; + Node *p = (Node *) JS_GetPrivate(cx, obj); + switch( JSVAL_TO_INT( id ) ) + { + case name_prop: + { + return JS_TRUE; + } + case age_prop: + { + //*vp = INT_TO_JSVAL(priv->getNode()->GetAge()); + return JS_TRUE; + } + } + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + if (!JSVAL_IS_INT(id)) + return JS_FALSE; + Node *p = (Node *) JS_GetPrivate(cx, obj); + switch( JSVAL_TO_INT( id ) ) + { + case name_prop: + { + return JS_TRUE; + } + case age_prop: + { + //*vp = INT_TO_JSVAL(priv->getNode()->GetAge()); + return JS_TRUE; + } + } + return JS_FALSE; + } + + + +private: + + // Standard JS Binding fields + static JSClass classDef; + enum + { + name_prop, + age_prop + }; + static JSPropertySpec properties[]; + static JSPropertySpec staticProperties[]; + static JSFunctionSpec methods[]; + static JSFunctionSpec staticMethods[]; + +}; + +JSClass ECMA_Node::classDef = +{ + "Node", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_Node::properties[] = +{ + { "ELEMENT_NODE", Node::ELEMENT_NODE, + JSPROP_READONLY, JSGetEnumProperty }, + { "ATTRIBUTE_NODE", Node::ATTRIBUTE_NODE, + JSPROP_READONLY, JSGetEnumProperty }, + { "TEXT_NODE", Node::TEXT_NODE, + JSPROP_READONLY, JSGetEnumProperty }, + { "CDATA_SECTION_NODE", Node::CDATA_SECTION_NODE, + JSPROP_READONLY, JSGetEnumProperty }, + { "ENTITY_REFERENCE_NODE", Node::ENTITY_REFERENCE_NODE, + JSPROP_READONLY, JSGetEnumProperty }, + { "ENTITY_NODE", Node::ENTITY_NODE, + JSPROP_READONLY, JSGetEnumProperty }, + { "PROCESSING_INSTRUCTION_NODE", Node::PROCESSING_INSTRUCTION_NODE, + JSPROP_READONLY, JSGetEnumProperty }, + { "COMMENT_NODE", Node::COMMENT_NODE, + JSPROP_READONLY, JSGetEnumProperty }, + { "DOCUMENT_NODE", Node::DOCUMENT_NODE, + JSPROP_READONLY, JSGetEnumProperty }, + { "DOCUMENT_TYPE_NODE", Node::DOCUMENT_TYPE_NODE, + JSPROP_READONLY, JSGetEnumProperty }, + { "DOCUMENT_FRAGMENT_NODE", Node::DOCUMENT_FRAGMENT_NODE, + JSPROP_READONLY, JSGetEnumProperty }, + { "NOTATION_NODE", Node::NOTATION_NODE, + JSPROP_READONLY, JSGetEnumProperty }, + { "DOCUMENT_POSITION_DISCONNECTED", 0x01, + JSPROP_READONLY, JSGetEnumProperty }, + { "DOCUMENT_POSITION_PRECEDING", 0x02, + JSPROP_READONLY, JSGetEnumProperty }, + { "DOCUMENT_POSITION_FOLLOWING", 0x04, + JSPROP_READONLY, JSGetEnumProperty }, + { "DOCUMENT_POSITION_CONTAINS", 0x08, + JSPROP_READONLY, JSGetEnumProperty }, + { "DOCUMENT_POSITION_CONTAINED_BY", 0x10, + JSPROP_READONLY, JSGetEnumProperty }, + { "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC", 0x20, + JSPROP_READONLY, JSGetEnumProperty }, + { 0 } +}; + +JSPropertySpec ECMA_Node::staticProperties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_Node::methods[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_Node::staticMethods[] = +{ + { 0 } +}; + + + + + + + +/** + * Objects that implement the NodeList interface: + * + * Properties of objects that implement the NodeList interface: + * + * length + * This read-only property is a Number. + * + * Functions of objects that implement the NodeList interface: + * + * item(index) + * This function returns an object that implements the Node interface. + * The index parameter is a Number. + * Note: This object can also be dereferenced using square bracket notation + * (e.g. obj[1]). Dereferencing with an integer index is equivalent + * to invoking the item function with that index. + * + * + */ + +class ECMA_NodeList +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getName(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getNamespaceURI(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool containsNS(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_NodeList::classDef = +{ + "NodeList", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_NodeList::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_NodeList::methods[] = +{ + { "getName", getName, 1, 0, 0 }, + { "getNamespaceURI", getNamespaceURI, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { "containsNS", containsNS, 2, 0, 0 }, + { 0 } +}; + + + +/** + * Objects that implement the NamedNodeMap interface: + * + * Properties of objects that implement the NamedNodeMap interface: + * + * length + * This read-only property is a Number. + * + * Functions of objects that implement the NamedNodeMap interface: + * + * getNamedItem(name) + * This function returns an object that implements the Node interface. + * The name parameter is a String. + * setNamedItem(arg) + * This function returns an object that implements the Node interface. + * The arg parameter is an object that implements the Node interface. + * This function can raise an object that implements the DOMException interface. + * removeNamedItem(name) + * This function returns an object that implements the Node interface. + * The name parameter is a String. + * This function can raise an object that implements the DOMException interface. + * item(index) + * This function returns an object that implements the Node interface. + * The index parameter is a Number. + * Note: This object can also be dereferenced using square bracket notation + * (e.g. obj[1]). Dereferencing with an integer index is equivalent + * to invoking the item function with that index. + * getNamedItemNS(namespaceURI, localName) + * This function returns an object that implements the Node interface. + * The namespaceURI parameter is a String. + * The localName parameter is a String. + * This function can raise an object that implements the DOMException interface. + * setNamedItemNS(arg) + * This function returns an object that implements the Node interface. + * The arg parameter is an object that implements the Node interface. + * This function can raise an object that implements the DOMException interface. + * removeNamedItemNS(namespaceURI, localName) + * This function returns an object that implements the Node interface. + * The namespaceURI parameter is a String. + * The localName parameter is a String. + * This function can raise an object that implements the DOMException interface. + */ + + +class ECMA_NamedNodeMap +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getName(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getNamespaceURI(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool containsNS(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_NamedNodeMap::classDef = +{ + "NamedNodeMap", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_NamedNodeMap::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_NamedNodeMap::methods[] = +{ + { "getName", getName, 1, 0, 0 }, + { "getNamespaceURI", getNamespaceURI, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { "containsNS", containsNS, 2, 0, 0 }, + { 0 } +}; + + + +/** + * Objects that implement the CharacterData interface: + * + * Objects that implement the CharacterData interface have all properties and + * functions of the Node interface as well as the properties and functions defined + * below. Properties of objects that implement the CharacterData interface: + * + * + * data + * This property is a String, can raise an object that implements the DOMException + * interface on setting and can raise an object that implements the DOMException + * interface on retrieval. + * length + * This read-only property is a Number. + * + * Functions of objects that implement the CharacterData interface: + * + * substringData(offset, count) + * This function returns a String. + * The offset parameter is a Number. + * The count parameter is a Number. + * This function can raise an object that implements the DOMException interface. + * appendData(arg) + * This function has no return value. + * The arg parameter is a String. + * This function can raise an object that implements the DOMException interface. + * insertData(offset, arg) + * This function has no return value. + * The offset parameter is a Number. + * The arg parameter is a String. + * This function can raise an object that implements the DOMException interface. + * deleteData(offset, count) + * This function has no return value. + * The offset parameter is a Number. + * The count parameter is a Number. + * This function can raise an object that implements the DOMException interface. + * replaceData(offset, count, arg) + * This function has no return value. + * The offset parameter is a Number. + * The count parameter is a Number. + * The arg parameter is a String. + * This function can raise an object that implements the DOMException interface. + */ + +class ECMA_CharacterData +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getName(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getNamespaceURI(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool containsNS(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_CharacterData::classDef = +{ + "CharacterData", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_CharacterData::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_CharacterData::methods[] = +{ + { "getName", getName, 1, 0, 0 }, + { "getNamespaceURI", getNamespaceURI, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { "containsNS", containsNS, 2, 0, 0 }, + { 0 } +}; + + + +/** + * Objects that implement the Attr interface: + * + * Objects that implement the Attr interface have all properties and functions of + * the Node interface as well as the properties and functions defined below. + * Properties of objects that implement the Attr interface: + * + * + * name + * This read-only property is a String. + * specified + * This read-only property is a Boolean. + * value + * This property is a String and can raise an object that implements the + * DOMException interface on setting. + * ownerElement + * This read-only property is an object that implements the Element interface. + * schemaTypeInfo + * This read-only property is an object that implements the TypeInfo interface. + * isId + * This read-only property is a Boolean. + * + */ + +class ECMA_Attr +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getName(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getNamespaceURI(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool containsNS(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_Attr::classDef = +{ + "Attr", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_Attr::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_Attr::methods[] = +{ + { "getName", getName, 1, 0, 0 }, + { "getNamespaceURI", getNamespaceURI, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { "containsNS", containsNS, 2, 0, 0 }, + { 0 } +}; + + + +/** + * Objects that implement the Element interface: + * + * Objects that implement the Element interface have all properties and functions + * of the Node interface as well as the properties and functions defined below. + * Properties of objects that implement the Element interface: + * + * + * tagName + * This read-only property is a String. + * schemaTypeInfo + * This read-only property is an object that implements the TypeInfo interface. + * + * Functions of objects that implement the Element interface: + * + * getAttribute(name) + * This function returns a String. + * The name parameter is a String. + * setAttribute(name, value) + * This function has no return value. + * The name parameter is a String. + * The value parameter is a String. + * This function can raise an object that implements the DOMException interface. + * removeAttribute(name) + * This function has no return value. + * The name parameter is a String. + * This function can raise an object that implements the DOMException interface. + * getAttributeNode(name) + * This function returns an object that implements the Attr interface. + * The name parameter is a String. + * setAttributeNode(newAttr) + * This function returns an object that implements the Attr interface. + * The newAttr parameter is an object that implements the Attr interface. + * This function can raise an object that implements the DOMException interface. + * removeAttributeNode(oldAttr) + * This function returns an object that implements the Attr interface. + * The oldAttr parameter is an object that implements the Attr interface. + * This function can raise an object that implements the DOMException interface. + * getElementsByTagName(name) + * This function returns an object that implements the NodeList interface. + * The name parameter is a String. + * getAttributeNS(namespaceURI, localName) + * This function returns a String. + * The namespaceURI parameter is a String. + * The localName parameter is a String. + * This function can raise an object that implements the DOMException interface. + * setAttributeNS(namespaceURI, qualifiedName, value) + * This function has no return value. + * The namespaceURI parameter is a String. + * The qualifiedName parameter is a String. * The value parameter is a String. * This function can raise an object that implements the DOMException interface. - * removeAttributeNS(namespaceURI, localName) + * removeAttributeNS(namespaceURI, localName) + * This function has no return value. + * The namespaceURI parameter is a String. + * The localName parameter is a String. + * This function can raise an object that implements the DOMException interface. + * getAttributeNodeNS(namespaceURI, localName) + * This function returns an object that implements the Attr interface. + * The namespaceURI parameter is a String. + * The localName parameter is a String. + * This function can raise an object that implements the DOMException interface. + * setAttributeNodeNS(newAttr) + * This function returns an object that implements the Attr interface. + * The newAttr parameter is an object that implements the Attr interface. + * This function can raise an object that implements the DOMException interface. + * getElementsByTagNameNS(namespaceURI, localName) + * This function returns an object that implements the NodeList interface. + * The namespaceURI parameter is a String. + * The localName parameter is a String. + * This function can raise an object that implements the DOMException interface. + * hasAttribute(name) + * This function returns a Boolean. + * The name parameter is a String. + * hasAttributeNS(namespaceURI, localName) + * This function returns a Boolean. + * The namespaceURI parameter is a String. + * The localName parameter is a String. + * This function can raise an object that implements the DOMException interface. + * setIdAttribute(name, isId) + * This function has no return value. + * The name parameter is a String. + * The isId parameter is a Boolean. + * This function can raise an object that implements the DOMException interface. + * setIdAttributeNS(namespaceURI, localName, isId) + * This function has no return value. + * The namespaceURI parameter is a String. + * The localName parameter is a String. + * The isId parameter is a Boolean. + * This function can raise an object that implements the DOMException interface. + * setIdAttributeNode(idAttr, isId) + * This function has no return value. + * The idAttr parameter is an object that implements the Attr interface. + * The isId parameter is a Boolean. + * This function can raise an object that implements the DOMException interface. + */ + +class ECMA_Element +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getName(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getNamespaceURI(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool containsNS(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_Element::classDef = +{ + "Element", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_Element::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_Element::methods[] = +{ + { "getName", getName, 1, 0, 0 }, + { "getNamespaceURI", getNamespaceURI, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { "containsNS", containsNS, 2, 0, 0 }, + { 0 } +}; + + + + + +/** + * Objects that implement the Text interface: + * + * Objects that implement the Text interface have all properties and functions of + * the CharacterData interface as well as the properties and functions defined + * below. Properties of objects that implement the Text interface: + * + * + * isElementContentWhitespace + * This read-only property is a Boolean. + * wholeText + * This read-only property is a String. + * + * Functions of objects that implement the Text interface: + * + * splitText(offset) + * This function returns an object that implements the Text interface. + * The offset parameter is a Number. + * This function can raise an object that implements the DOMException interface. + * replaceWholeText(content) + * This function returns an object that implements the Text interface. + * The content parameter is a String. + * This function can raise an object that implements the DOMException interface. + */ + +class ECMA_Text +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getName(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getNamespaceURI(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool containsNS(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_Text::classDef = +{ + "Text", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_Text::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_Text::methods[] = +{ + { "getName", getName, 1, 0, 0 }, + { "getNamespaceURI", getNamespaceURI, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { "containsNS", containsNS, 2, 0, 0 }, + { 0 } +}; + + + +/** + * Objects that implement the Comment interface: + * + * Objects that implement the Comment interface have all properties and functions + * of the CharacterData interface. + * + */ + +class ECMA_Comment +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getName(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getNamespaceURI(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool containsNS(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_Comment::classDef = +{ + "Comment", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_Comment::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_Comment::methods[] = +{ + { "getName", getName, 1, 0, 0 }, + { "getNamespaceURI", getNamespaceURI, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { "containsNS", containsNS, 2, 0, 0 }, + { 0 } +}; + + + +/** + * Properties of the TypeInfo Constructor function: + * + * TypeInfo.DERIVATION_RESTRICTION + * The value of the constant TypeInfo.DERIVATION_RESTRICTION is 0x00000001. + * TypeInfo.DERIVATION_EXTENSION + * The value of the constant TypeInfo.DERIVATION_EXTENSION is 0x00000002. + * TypeInfo.DERIVATION_UNION + * The value of the constant TypeInfo.DERIVATION_UNION is 0x00000004. + * TypeInfo.DERIVATION_LIST + * The value of the constant TypeInfo.DERIVATION_LIST is 0x00000008. + * + * Objects that implement the TypeInfo interface: + * + * Properties of objects that implement the TypeInfo interface: + * + * typeName + * This read-only property is a String. + * typeNamespace + * This read-only property is a String. + * + * Functions of objects that implement the TypeInfo interface: + * + * isDerivedFrom(typeNamespaceArg, typeNameArg, derivationMethod) + * This function returns a Boolean. + * The typeNamespaceArg parameter is a String. + * The typeNameArg parameter is a String. + * The derivationMethod parameter is a Number. + */ + +class ECMA_TypeInfo +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getName(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getNamespaceURI(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool containsNS(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_TypeInfo::classDef = +{ + "TypeInfo", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_TypeInfo::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_TypeInfo::methods[] = +{ + { "getName", getName, 1, 0, 0 }, + { "getNamespaceURI", getNamespaceURI, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { "containsNS", containsNS, 2, 0, 0 }, + { 0 } +}; + + + + +/** + * Properties of the UserDataHandler Constructor function: + * + * UserDataHandler.NODE_CLONED + * The value of the constant UserDataHandler.NODE_CLONED is 1. + * UserDataHandler.NODE_IMPORTED + * The value of the constant UserDataHandler.NODE_IMPORTED is 2. + * UserDataHandler.NODE_DELETED + * The value of the constant UserDataHandler.NODE_DELETED is 3. + * UserDataHandler.NODE_RENAMED + * The value of the constant UserDataHandler.NODE_RENAMED is 4. + * UserDataHandler.NODE_ADOPTED + * The value of the constant UserDataHandler.NODE_ADOPTED is 5. + * + * UserDataHandler function: + * This function has no return value. The first parameter is a Number. The second + * parameter is a String. The third parameter is an object that implements the any + * type interface. The fourth parameter is an object that implements the Node + * interface. The fifth parameter is an object that implements the Node interface. + * Properties of the DOMError Constructor function: + * + * + * DOMError.SEVERITY_WARNING + * The value of the constant DOMError.SEVERITY_WARNING is 1. + * DOMError.SEVERITY_ERROR + * The value of the constant DOMError.SEVERITY_ERROR is 2. + * DOMError.SEVERITY_FATAL_ERROR + * The value of the constant DOMError.SEVERITY_FATAL_ERROR is 3. + */ + + +class ECMA_UserDataHandler +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getName(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getNamespaceURI(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool containsNS(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_UserDataHandler::classDef = +{ + "UserDataHandler", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_UserDataHandler::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_UserDataHandler::methods[] = +{ + { "getName", getName, 1, 0, 0 }, + { "getNamespaceURI", getNamespaceURI, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { "containsNS", containsNS, 2, 0, 0 }, + { 0 } +}; + + + +/** + * Objects that implement the DOMError interface: + * + * Properties of objects that implement the DOMError interface: + * + * severity + * This read-only property is a Number. + * message + * This read-only property is a String. + * type + * This read-only property is a String. + * relatedException + * This read-only property is an object that implements the Object interface. + * relatedData + * This read-only property is an object that implements the Object interface. + * location + * This read-only property is an object that implements the DOMLocator interface. + * + * DOMErrorHandler function: + * This function returns a Boolean. The parameter is an object that implements the + * DOMError interface. + * + * + */ + +class ECMA_DOMError +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getName(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getNamespaceURI(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool containsNS(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_DOMError::classDef = +{ + "DOMError", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_DOMError::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_DOMError::methods[] = +{ + { "getName", getName, 1, 0, 0 }, + { "getNamespaceURI", getNamespaceURI, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { "containsNS", containsNS, 2, 0, 0 }, + { 0 } +}; + + + + +/** + * Objects that implement the DOMLocator interface: + * + * Properties of objects that implement the DOMLocator interface: + * + * lineNumber + * This read-only property is a Number. + * columnNumber + * This read-only property is a Number. + * byteOffset + * This read-only property is a Number. + * utf16Offset + * This read-only property is a Number. + * relatedNode + * This read-only property is an object that implements the Node interface. + * uri + * This read-only property is a String. + */ + +class ECMA_DOMLocator +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getName(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getNamespaceURI(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool containsNS(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_DOMLocator::classDef = +{ + "DOMLocator", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_DOMLocator::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_DOMLocator::methods[] = +{ + { "getName", getName, 1, 0, 0 }, + { "getNamespaceURI", getNamespaceURI, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { "containsNS", containsNS, 2, 0, 0 }, + { 0 } +}; + + + + +/** + * Objects that implement the DOMConfiguration interface: + * + * Properties of objects that implement the DOMConfiguration interface: + * + * parameterNames + * This read-only property is an object that implements the DOMStringList interface. + * + * Functions of objects that implement the DOMConfiguration interface: + * + * setParameter(name, value) * This function has no return value. - * The namespaceURI parameter is a String. - * The localName parameter is a String. - * This function can raise an object that implements the DOMException interface. - * getAttributeNodeNS(namespaceURI, localName) - * This function returns an object that implements the Attr interface. - * The namespaceURI parameter is a String. - * The localName parameter is a String. - * This function can raise an object that implements the DOMException interface. - * setAttributeNodeNS(newAttr) - * This function returns an object that implements the Attr interface. - * The newAttr parameter is an object that implements the Attr interface. + * The name parameter is a String. + * The value parameter is an object that implements the any type interface. * This function can raise an object that implements the DOMException interface. - * getElementsByTagNameNS(namespaceURI, localName) - * This function returns an object that implements the NodeList interface. - * The namespaceURI parameter is a String. - * The localName parameter is a String. + * getParameter(name) + * This function returns an object that implements the any type interface. + * The name parameter is a String. * This function can raise an object that implements the DOMException interface. - * hasAttribute(name) - * This function returns a Boolean. - * The name parameter is a String. - * hasAttributeNS(namespaceURI, localName) + * canSetParameter(name, value) * This function returns a Boolean. - * The namespaceURI parameter is a String. - * The localName parameter is a String. - * This function can raise an object that implements the DOMException interface. - * setIdAttribute(name, isId) - * This function has no return value. * The name parameter is a String. - * The isId parameter is a Boolean. - * This function can raise an object that implements the DOMException interface. - * setIdAttributeNS(namespaceURI, localName, isId) - * This function has no return value. - * The namespaceURI parameter is a String. - * The localName parameter is a String. - * The isId parameter is a Boolean. - * This function can raise an object that implements the DOMException interface. - * setIdAttributeNode(idAttr, isId) - * This function has no return value. - * The idAttr parameter is an object that implements the Attr interface. - * The isId parameter is a Boolean. - * This function can raise an object that implements the DOMException interface. + * The value parameter is an object that implements the any type interface. + */ + + +class ECMA_DOMConfiguration +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getName(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getNamespaceURI(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool containsNS(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_DOMConfiguration::classDef = +{ + "DOMConfiguration", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_DOMConfiguration::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_DOMConfiguration::methods[] = +{ + { "getName", getName, 1, 0, 0 }, + { "getNamespaceURI", getNamespaceURI, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { "containsNS", containsNS, 2, 0, 0 }, + { 0 } +}; + + + +/** + * Objects that implement the CDATASection interface: + * + * Objects that implement the CDATASection interface have all properties and + * functions of the Text interface. + * */ +class ECMA_CDATASection +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getName(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getNamespaceURI(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool containsNS(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_CDATASection::classDef = +{ + "CDATASection", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_CDATASection::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_CDATASection::methods[] = +{ + { "getName", getName, 1, 0, 0 }, + { "getNamespaceURI", getNamespaceURI, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { "containsNS", containsNS, 2, 0, 0 }, + { 0 } +}; + + + /** - * Objects that implement the Text interface: + * Objects that implement the DocumentType interface: * - * Objects that implement the Text interface have all properties and functions of - * the CharacterData interface as well as the properties and functions defined - * below. Properties of objects that implement the Text interface: + * Objects that implement the DocumentType interface have all properties and + * functions of the Node interface as well as the properties and functions defined + * below. Properties of objects that implement the DocumentType interface: * * - * isElementContentWhitespace - * This read-only property is a Boolean. - * wholeText + * name + * This read-only property is a String. + * entities + * This read-only property is an object that implements the NamedNodeMap interface. + * notations + * This read-only property is an object that implements the NamedNodeMap interface. + * publicId + * This read-only property is a String. + * systemId + * This read-only property is a String. + * internalSubset * This read-only property is a String. - * - * Functions of objects that implement the Text interface: - * - * splitText(offset) - * This function returns an object that implements the Text interface. - * The offset parameter is a Number. - * This function can raise an object that implements the DOMException interface. - * replaceWholeText(content) - * This function returns an object that implements the Text interface. - * The content parameter is a String. - * This function can raise an object that implements the DOMException interface. */ -/** - * Objects that implement the Comment interface: - * - * Objects that implement the Comment interface have all properties and functions - * of the CharacterData interface. - * - */ + +class ECMA_DocumentType +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getName(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getNamespaceURI(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool containsNS(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_DocumentType::classDef = +{ + "DocumentType", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_DocumentType::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_DocumentType::methods[] = +{ + { "getName", getName, 1, 0, 0 }, + { "getNamespaceURI", getNamespaceURI, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { "containsNS", containsNS, 2, 0, 0 }, + { 0 } +}; + + /** - * Properties of the TypeInfo Constructor function: - * - * TypeInfo.DERIVATION_RESTRICTION - * The value of the constant TypeInfo.DERIVATION_RESTRICTION is 0x00000001. - * TypeInfo.DERIVATION_EXTENSION - * The value of the constant TypeInfo.DERIVATION_EXTENSION is 0x00000002. - * TypeInfo.DERIVATION_UNION - * The value of the constant TypeInfo.DERIVATION_UNION is 0x00000004. - * TypeInfo.DERIVATION_LIST - * The value of the constant TypeInfo.DERIVATION_LIST is 0x00000008. + * Objects that implement the Notation interface: * - * Objects that implement the TypeInfo interface: + * Objects that implement the Notation interface have all properties and functions + * of the Node interface as well as the properties and functions defined below. + * Properties of objects that implement the Notation interface: * - * Properties of objects that implement the TypeInfo interface: * - * typeName + * publicId * This read-only property is a String. - * typeNamespace + * systemId * This read-only property is a String. - * - * Functions of objects that implement the TypeInfo interface: - * - * isDerivedFrom(typeNamespaceArg, typeNameArg, derivationMethod) - * This function returns a Boolean. - * The typeNamespaceArg parameter is a String. - * The typeNameArg parameter is a String. - * The derivationMethod parameter is a Number. */ -/** - * Properties of the UserDataHandler Constructor function: - * - * UserDataHandler.NODE_CLONED - * The value of the constant UserDataHandler.NODE_CLONED is 1. - * UserDataHandler.NODE_IMPORTED - * The value of the constant UserDataHandler.NODE_IMPORTED is 2. - * UserDataHandler.NODE_DELETED - * The value of the constant UserDataHandler.NODE_DELETED is 3. - * UserDataHandler.NODE_RENAMED - * The value of the constant UserDataHandler.NODE_RENAMED is 4. - * UserDataHandler.NODE_ADOPTED - * The value of the constant UserDataHandler.NODE_ADOPTED is 5. - * - * UserDataHandler function: - * This function has no return value. The first parameter is a Number. The second - * parameter is a String. The third parameter is an object that implements the any - * type interface. The fourth parameter is an object that implements the Node - * interface. The fifth parameter is an object that implements the Node interface. - * Properties of the DOMError Constructor function: - * - * - * DOMError.SEVERITY_WARNING - * The value of the constant DOMError.SEVERITY_WARNING is 1. - * DOMError.SEVERITY_ERROR - * The value of the constant DOMError.SEVERITY_ERROR is 2. - * DOMError.SEVERITY_FATAL_ERROR - * The value of the constant DOMError.SEVERITY_FATAL_ERROR is 3. - */ +class ECMA_Notation +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getName(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getNamespaceURI(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + /** + * + */ + static JSBool containsNS(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } -/** - * Objects that implement the DOMError interface: - * - * Properties of objects that implement the DOMError interface: - * - * severity - * This read-only property is a Number. - * message - * This read-only property is a String. - * type - * This read-only property is a String. - * relatedException - * This read-only property is an object that implements the Object interface. - * relatedData - * This read-only property is an object that implements the Object interface. - * location - * This read-only property is an object that implements the DOMLocator interface. - * - * DOMErrorHandler function: - * This function returns a Boolean. The parameter is an object that implements the - * DOMError interface. - * - * - */ -/** - * Objects that implement the DOMLocator interface: - * - * Properties of objects that implement the DOMLocator interface: - * - * lineNumber - * This read-only property is a Number. - * columnNumber - * This read-only property is a Number. - * byteOffset - * This read-only property is a Number. - * utf16Offset - * This read-only property is a Number. - * relatedNode - * This read-only property is an object that implements the Node interface. - * uri - * This read-only property is a String. - */ +private: -/** - * Objects that implement the DOMConfiguration interface: - * - * Properties of objects that implement the DOMConfiguration interface: - * - * parameterNames - * This read-only property is an object that implements the DOMStringList interface. - * - * Functions of objects that implement the DOMConfiguration interface: - * - * setParameter(name, value) - * This function has no return value. - * The name parameter is a String. - * The value parameter is an object that implements the any type interface. - * This function can raise an object that implements the DOMException interface. - * getParameter(name) - * This function returns an object that implements the any type interface. - * The name parameter is a String. - * This function can raise an object that implements the DOMException interface. - * canSetParameter(name, value) - * This function returns a Boolean. - * The name parameter is a String. - * The value parameter is an object that implements the any type interface. - */ + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_Notation::classDef = +{ + "Notation", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_Notation::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_Notation::methods[] = +{ + { "getName", getName, 1, 0, 0 }, + { "getNamespaceURI", getNamespaceURI, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { "containsNS", containsNS, 2, 0, 0 }, + { 0 } +}; -/** - * Objects that implement the CDATASection interface: - * - * Objects that implement the CDATASection interface have all properties and - * functions of the Text interface. - * - */ /** - * Objects that implement the DocumentType interface: + * Objects that implement the Entity interface: * - * Objects that implement the DocumentType interface have all properties and - * functions of the Node interface as well as the properties and functions defined - * below. Properties of objects that implement the DocumentType interface: + * Objects that implement the Entity interface have all properties and functions + * of the Node interface as well as the properties and functions defined below. + * Properties of objects that implement the Entity + * interface: * * - * name - * This read-only property is a String. - * entities - * This read-only property is an object that implements the NamedNodeMap interface. - * notations - * This read-only property is an object that implements the NamedNodeMap interface. * publicId * This read-only property is a String. * systemId * This read-only property is a String. - * internalSubset + * notationName + * This read-only property is a String. + * inputEncoding + * This read-only property is a String. + * xmlEncoding + * This read-only property is a String. + * xmlVersion * This read-only property is a String. */ +class ECMA_Entity +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getName(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getNamespaceURI(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool containsNS(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_Entity::classDef = +{ + "Entity", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_Entity::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_Entity::methods[] = +{ + { "getName", getName, 1, 0, 0 }, + { "getNamespaceURI", getNamespaceURI, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { "containsNS", containsNS, 2, 0, 0 }, + { 0 } +}; -/** - * Objects that implement the Notation interface: - * - * Objects that implement the Notation interface have all properties and functions - * of the Node interface as well as the properties and functions defined below. - * Properties of objects that implement the Notation interface: - * - * - * publicId - * This read-only property is a String. - * systemId - * This read-only property is a String. - */ -/** - * Objects that implement the Entity interface: - * - * Objects that implement the Entity interface have all properties and functions - * of the Node interface as well as the properties and functions defined below. - * Properties of objects that implement the Entity - * interface: - * - * - * publicId - * This read-only property is a String. - * systemId - * This read-only property is a String. - * notationName - * This read-only property is a String. - * inputEncoding - * This read-only property is a String. - * xmlEncoding - * This read-only property is a String. - * xmlVersion - * This read-only property is a String. - */ /** * Objects that implement the EntityReference interface: @@ -1118,6 +4426,140 @@ JSFunctionSpec JSNode::staticMethods[] = */ +class ECMA_EntityReference +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getName(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getNamespaceURI(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool containsNS(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_EntityReference::classDef = +{ + "EntityReference", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_EntityReference::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_EntityReference::methods[] = +{ + { "getName", getName, 1, 0, 0 }, + { "getNamespaceURI", getNamespaceURI, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { "containsNS", containsNS, 2, 0, 0 }, + { 0 } +}; + + + + /** * Objects that implement the ProcessingInstruction interface: * @@ -1135,6 +4577,139 @@ JSFunctionSpec JSNode::staticMethods[] = */ +class ECMA_ProcessingInstruction +{ +public: + + /** + * JSConstructor - Callback for when a this object is created + */ + static JSBool JSConstructor(JSContext *cx, JSObject *obj, uintN argc, + jsval *argv, jsval *rval) + { + if (argc != 1) + return JS_FALSE; + DOMException *p = new DOMException(JSVAL_TO_INT( argv[0] )); + if ( ! JS_SetPrivate(cx, obj, p) ) + return JS_FALSE; + *rval = OBJECT_TO_JSVAL(obj); + return JS_TRUE; + } + + /** + * JSInit - Create a prototype for this class + */ + static JSObject* JSInit(JSContext *cx, JSObject *obj, JSObject *proto = NULL) + { + JSObject *newObj = JS_InitClass(cx, obj, proto, &classDef, + JSConstructor, 0, + properties, methods, + NULL, NULL); + return newObj; + } + + /** + * JSDestructor - Callback for when a this object is destroyed + */ + static void JSDestructor(JSContext *cx, JSObject *obj) + { + DOMException *p = (DOMException *) JS_GetPrivate(cx, obj); + delete p; + p = NULL; + } + + /** + * JSGetProperty - Callback for retrieving properties + */ + static JSBool JSGetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * JSSetProperty - Callback for setting properties + */ + static JSBool JSSetProperty(JSContext *cx, JSObject *obj, + jsval id, jsval *vp) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getName(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool getNamespaceURI(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool contains(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + /** + * + */ + static JSBool containsNS(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *rval) + { + return JS_FALSE; + } + + +private: + + // Standard JS Binding fields + static JSClass classDef; + static JSPropertySpec properties[]; + static JSFunctionSpec methods[]; + +}; + +JSClass ECMA_ProcessingInstruction::classDef = +{ + "ProcessingInstruction", + JSCLASS_HAS_PRIVATE, + JS_PropertyStub, JS_PropertyStub, + JSGetProperty, JSSetProperty, + JS_EnumerateStub, JS_ResolveStub, + JS_ConvertStub, JSDestructor +}; + + + +JSPropertySpec ECMA_ProcessingInstruction::properties[] = +{ + { 0 } +}; + +JSFunctionSpec ECMA_ProcessingInstruction::methods[] = +{ + { "getName", getName, 1, 0, 0 }, + { "getNamespaceURI", getNamespaceURI, 1, 0, 0 }, + { "contains", contains, 1, 0, 0 }, + { "containsNS", containsNS, 2, 0, 0 }, + { 0 } +}; + + + /** * Note: In addition of having DOMConfiguration parameters exposed to the * application using the setParameter and getParameter, those parameters are also @@ -1144,10 +4719,6 @@ JSFunctionSpec JSNode::staticMethods[] = * being replaced by its uppercase equivalent. */ - //######################################################################## -//# C L A S S E S -//######################################################################## - //######################################################################## diff --git a/src/dom/jsengine.h b/src/dom/jsengine.h index 1390afe7e..8b775c98b 100644 --- a/src/dom/jsengine.h +++ b/src/dom/jsengine.h @@ -41,45 +41,47 @@ namespace dom { /** - * + * Encapsulate a Spidermonkey JavaScript interpreter. Init classes, then + * wrap around any objects that are needed. */ class JavascriptEngine { public: /** - * + * Constructor */ JavascriptEngine() { init(); } /** - * + * Copy constructor */ JavascriptEngine(const JavascriptEngine &other) { assign(other); } /** - * + * Assignment operator */ JavascriptEngine &operator=(const JavascriptEngine &other) { assign(other); return *this; } /** - * + * Destructor */ - bool startup(); + virtual ~JavascriptEngine() + {} /** - * + * Startup the javascript engine */ - bool shutdown(); + bool startup(); /** - * + * Shutdown the javascript engine */ - virtual ~JavascriptEngine() - {} + bool shutdown(); + private: @@ -99,11 +101,18 @@ private: } /** - * + * Bind with the basic DOM classes */ bool createClasses(); + /** + * Ouput a printf-formatted error message + */ void error(char *fmt, ...); + + /** + * Ouput a printf-formatted error message + */ void trace(char *fmt, ...); JSRuntime *rt; -- 2.30.2