Annotation of sbbs/include/mozilla/js/jsxml.h, revision 1.1

1.1     ! root        1: /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
        !             2:  *
        !             3:  * ***** BEGIN LICENSE BLOCK *****
        !             4:  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
        !             5:  *
        !             6:  * The contents of this file are subject to the Mozilla Public License Version
        !             7:  * 1.1 (the "License"); you may not use this file except in compliance with
        !             8:  * the License. You may obtain a copy of the License at
        !             9:  * http://www.mozilla.org/MPL/
        !            10:  *
        !            11:  * Software distributed under the License is distributed on an "AS IS" basis,
        !            12:  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
        !            13:  * for the specific language governing rights and limitations under the
        !            14:  * License.
        !            15:  *
        !            16:  * The Original Code is SpiderMonkey E4X code, released August, 2004.
        !            17:  *
        !            18:  * The Initial Developer of the Original Code is
        !            19:  * Netscape Communications Corporation.
        !            20:  * Portions created by the Initial Developer are Copyright (C) 1998
        !            21:  * the Initial Developer. All Rights Reserved.
        !            22:  *
        !            23:  * Contributor(s):
        !            24:  *
        !            25:  * Alternatively, the contents of this file may be used under the terms of
        !            26:  * either of the GNU General Public License Version 2 or later (the "GPL"),
        !            27:  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
        !            28:  * in which case the provisions of the GPL or the LGPL are applicable instead
        !            29:  * of those above. If you wish to allow use of your version of this file only
        !            30:  * under the terms of either the GPL or the LGPL, and not to allow others to
        !            31:  * use your version of this file under the terms of the MPL, indicate your
        !            32:  * decision by deleting the provisions above and replace them with the notice
        !            33:  * and other provisions required by the GPL or the LGPL. If you do not delete
        !            34:  * the provisions above, a recipient may use your version of this file under
        !            35:  * the terms of any one of the MPL, the GPL or the LGPL.
        !            36:  *
        !            37:  * ***** END LICENSE BLOCK ***** */
        !            38: 
        !            39: #ifndef jsxml_h___
        !            40: #define jsxml_h___
        !            41: 
        !            42: #include "jsstddef.h"
        !            43: #include "jspubtd.h"
        !            44: 
        !            45: extern const char js_AnyName_str[];
        !            46: extern const char js_AttributeName_str[];
        !            47: extern const char js_isXMLName_str[];
        !            48: extern const char js_Namespace_str[];
        !            49: extern const char js_QName_str[];
        !            50: extern const char js_XML_str[];
        !            51: extern const char js_XMLList_str[];
        !            52: 
        !            53: extern const char js_amp_entity_str[];
        !            54: extern const char js_gt_entity_str[];
        !            55: extern const char js_lt_entity_str[];
        !            56: extern const char js_quot_entity_str[];
        !            57: 
        !            58: struct JSXMLNamespace {
        !            59:     JSObject            *object;
        !            60:     JSString            *prefix;
        !            61:     JSString            *uri;
        !            62:     JSBool              declared;       /* true if declared in its XML tag */
        !            63: };
        !            64: 
        !            65: extern JSXMLNamespace *
        !            66: js_NewXMLNamespace(JSContext *cx, JSString *prefix, JSString *uri,
        !            67:                    JSBool declared);
        !            68: 
        !            69: extern void
        !            70: js_MarkXMLNamespace(JSContext *cx, JSXMLNamespace *ns, void *arg);
        !            71: 
        !            72: extern void
        !            73: js_FinalizeXMLNamespace(JSContext *cx, JSXMLNamespace *ns);
        !            74: 
        !            75: extern JSObject *
        !            76: js_NewXMLNamespaceObject(JSContext *cx, JSString *prefix, JSString *uri,
        !            77:                          JSBool declared);
        !            78: 
        !            79: extern JSObject *
        !            80: js_GetXMLNamespaceObject(JSContext *cx, JSXMLNamespace *ns);
        !            81: 
        !            82: struct JSXMLQName {
        !            83:     JSObject            *object;
        !            84:     JSString            *uri;
        !            85:     JSString            *prefix;
        !            86:     JSString            *localName;
        !            87: };
        !            88: 
        !            89: extern JSXMLQName *
        !            90: js_NewXMLQName(JSContext *cx, JSString *uri, JSString *prefix,
        !            91:                JSString *localName);
        !            92: 
        !            93: extern void
        !            94: js_MarkXMLQName(JSContext *cx, JSXMLQName *qn, void *arg);
        !            95: 
        !            96: extern void
        !            97: js_FinalizeXMLQName(JSContext *cx, JSXMLQName *qn);
        !            98: 
        !            99: extern JSObject *
        !           100: js_NewXMLQNameObject(JSContext *cx, JSString *uri, JSString *prefix,
        !           101:                      JSString *localName);
        !           102: 
        !           103: extern JSObject *
        !           104: js_GetXMLQNameObject(JSContext *cx, JSXMLQName *qn);
        !           105: 
        !           106: extern JSObject *
        !           107: js_GetAttributeNameObject(JSContext *cx, JSXMLQName *qn);
        !           108: 
        !           109: extern JSObject *
        !           110: js_ConstructXMLQNameObject(JSContext *cx, jsval nsval, jsval lnval);
        !           111: 
        !           112: typedef JSBool
        !           113: (* JS_DLL_CALLBACK JSIdentityOp)(const void *a, const void *b);
        !           114: 
        !           115: struct JSXMLArray {
        !           116:     uint32              length;
        !           117:     uint32              capacity;
        !           118:     void                **vector;
        !           119:     JSXMLArrayCursor    *cursors;
        !           120: };
        !           121: 
        !           122: struct JSXMLArrayCursor {
        !           123:     JSXMLArray          *array;
        !           124:     uint32              index;
        !           125:     JSXMLArrayCursor    *next;
        !           126:     JSXMLArrayCursor    **prevp;
        !           127: };
        !           128: 
        !           129: /*
        !           130:  * NB: don't reorder this enum without changing all array initializers that
        !           131:  * depend on it in jsxml.c.
        !           132:  */ 
        !           133: typedef enum JSXMLClass {
        !           134:     JSXML_CLASS_LIST,
        !           135:     JSXML_CLASS_ELEMENT,
        !           136:     JSXML_CLASS_ATTRIBUTE,
        !           137:     JSXML_CLASS_PROCESSING_INSTRUCTION,
        !           138:     JSXML_CLASS_TEXT,
        !           139:     JSXML_CLASS_COMMENT,
        !           140:     JSXML_CLASS_LIMIT
        !           141: } JSXMLClass;
        !           142: 
        !           143: #define JSXML_CLASS_HAS_KIDS(class_)    ((class_) < JSXML_CLASS_ATTRIBUTE)
        !           144: #define JSXML_CLASS_HAS_VALUE(class_)   ((class_) >= JSXML_CLASS_ATTRIBUTE)
        !           145: #define JSXML_CLASS_HAS_NAME(class_)                                          \
        !           146:     ((uintN)((class_) - JSXML_CLASS_ELEMENT) <=                               \
        !           147:      (uintN)(JSXML_CLASS_PROCESSING_INSTRUCTION - JSXML_CLASS_ELEMENT))
        !           148: 
        !           149: #ifdef DEBUG_notme
        !           150: #include "jsclist.h"
        !           151: #endif
        !           152: 
        !           153: struct JSXML {
        !           154: #ifdef DEBUG_notme
        !           155:     JSCList             links;
        !           156:     uint32              serial;
        !           157: #endif
        !           158:     JSObject            *object;
        !           159:     void                *domnode;       /* DOM node if mapped info item */
        !           160:     JSXML               *parent;
        !           161:     JSXMLQName          *name;
        !           162:     uint16              xml_class;      /* discriminates u, below */
        !           163:     uint16              xml_flags;      /* flags, see below */
        !           164:     union {
        !           165:         struct JSXMLListVar {
        !           166:             JSXMLArray  kids;           /* NB: must come first */
        !           167:             JSXML       *target;
        !           168:             JSXMLQName  *targetprop;
        !           169:         } list;
        !           170:         struct JSXMLVar {
        !           171:             JSXMLArray  kids;           /* NB: must come first */
        !           172:             JSXMLArray  namespaces;
        !           173:             JSXMLArray  attrs;
        !           174:         } elem;
        !           175:         JSString        *value;
        !           176:     } u;
        !           177: 
        !           178:     /* Don't add anything after u -- see js_NewXML for why. */
        !           179: };
        !           180: 
        !           181: /* union member shorthands */
        !           182: #define xml_kids        u.list.kids
        !           183: #define xml_target      u.list.target
        !           184: #define xml_targetprop  u.list.targetprop
        !           185: #define xml_namespaces  u.elem.namespaces
        !           186: #define xml_attrs       u.elem.attrs
        !           187: #define xml_value       u.value
        !           188: 
        !           189: /* xml_flags values */
        !           190: #define XMLF_WHITESPACE_TEXT    0x1
        !           191: 
        !           192: /* xml_class-testing macros */
        !           193: #define JSXML_HAS_KIDS(xml)     JSXML_CLASS_HAS_KIDS((xml)->xml_class)
        !           194: #define JSXML_HAS_VALUE(xml)    JSXML_CLASS_HAS_VALUE((xml)->xml_class)
        !           195: #define JSXML_HAS_NAME(xml)     JSXML_CLASS_HAS_NAME((xml)->xml_class)
        !           196: #define JSXML_LENGTH(xml)       (JSXML_CLASS_HAS_KIDS((xml)->xml_class)       \
        !           197:                                  ? (xml)->xml_kids.length                     \
        !           198:                                  : 0)
        !           199: 
        !           200: extern JSXML *
        !           201: js_NewXML(JSContext *cx, JSXMLClass xml_class);
        !           202: 
        !           203: extern void
        !           204: js_MarkXML(JSContext *cx, JSXML *xml, void *arg);
        !           205: 
        !           206: extern void
        !           207: js_FinalizeXML(JSContext *cx, JSXML *xml);
        !           208: 
        !           209: extern JSObject *
        !           210: js_ParseNodeToXMLObject(JSContext *cx, JSParseNode *pn);
        !           211: 
        !           212: extern JSObject *
        !           213: js_NewXMLObject(JSContext *cx, JSXMLClass xml_class);
        !           214: 
        !           215: extern JSObject *
        !           216: js_GetXMLObject(JSContext *cx, JSXML *xml);
        !           217: 
        !           218: extern JS_FRIEND_DATA(JSXMLObjectOps)   js_XMLObjectOps;
        !           219: extern JS_FRIEND_DATA(JSClass)          js_XMLClass;
        !           220: extern JS_FRIEND_DATA(JSExtendedClass)  js_QNameClass;
        !           221: extern JS_FRIEND_DATA(JSClass)          js_AttributeNameClass;
        !           222: extern JS_FRIEND_DATA(JSClass)          js_AnyNameClass;
        !           223: extern JS_FRIEND_DATA(JSExtendedClass)  js_NamespaceClass;
        !           224: 
        !           225: /*
        !           226:  * Macros to test whether an object or a value is of type "xml" (per typeof).
        !           227:  * NB: jsapi.h must be included before any call to VALUE_IS_XML.
        !           228:  */
        !           229: #define OBJECT_IS_XML(cx,obj)   ((obj)->map->ops == &js_XMLObjectOps.base)
        !           230: #define VALUE_IS_XML(cx,v)      (!JSVAL_IS_PRIMITIVE(v) &&                    \
        !           231:                                  OBJECT_IS_XML(cx, JSVAL_TO_OBJECT(v)))
        !           232: 
        !           233: extern JSObject *
        !           234: js_InitNamespaceClass(JSContext *cx, JSObject *obj);
        !           235: 
        !           236: extern JSObject *
        !           237: js_InitQNameClass(JSContext *cx, JSObject *obj);
        !           238: 
        !           239: extern JSObject *
        !           240: js_InitXMLClass(JSContext *cx, JSObject *obj);
        !           241: 
        !           242: extern JSObject *
        !           243: js_InitXMLClasses(JSContext *cx, JSObject *obj);
        !           244: 
        !           245: extern JSBool
        !           246: js_GetFunctionNamespace(JSContext *cx, jsval *vp);
        !           247: 
        !           248: extern JSBool
        !           249: js_GetDefaultXMLNamespace(JSContext *cx, jsval *vp);
        !           250: 
        !           251: extern JSBool
        !           252: js_SetDefaultXMLNamespace(JSContext *cx, jsval v);
        !           253: 
        !           254: /*
        !           255:  * Return true if v is a XML QName object, or if it converts to a string that
        !           256:  * contains a valid XML qualified name (one containing no :), false otherwise.
        !           257:  * NB: This function is an infallible predicate, it hides exceptions.
        !           258:  */
        !           259: extern JSBool
        !           260: js_IsXMLName(JSContext *cx, jsval v);
        !           261: 
        !           262: extern JSBool
        !           263: js_ToAttributeName(JSContext *cx, jsval *vp);
        !           264: 
        !           265: extern JSString *
        !           266: js_EscapeAttributeValue(JSContext *cx, JSString *str);
        !           267: 
        !           268: extern JSString *
        !           269: js_AddAttributePart(JSContext *cx, JSBool isName, JSString *str,
        !           270:                     JSString *str2);
        !           271: 
        !           272: extern JSString *
        !           273: js_EscapeElementValue(JSContext *cx, JSString *str);
        !           274: 
        !           275: extern JSString *
        !           276: js_ValueToXMLString(JSContext *cx, jsval v);
        !           277: 
        !           278: extern JSBool
        !           279: js_GetAnyName(JSContext *cx, jsval *vp);
        !           280: 
        !           281: extern JSBool
        !           282: js_FindXMLProperty(JSContext *cx, jsval name, JSObject **objp, jsval *namep);
        !           283: 
        !           284: extern JSBool
        !           285: js_GetXMLProperty(JSContext *cx, JSObject *obj, jsval name, jsval *vp);
        !           286: 
        !           287: extern JSBool
        !           288: js_SetXMLProperty(JSContext *cx, JSObject *obj, jsval name, jsval *vp);
        !           289: 
        !           290: extern JSBool
        !           291: js_GetXMLDescendants(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
        !           292: 
        !           293: extern JSBool
        !           294: js_DeleteXMLListElements(JSContext *cx, JSObject *listobj);
        !           295: 
        !           296: extern JSBool
        !           297: js_FilterXMLList(JSContext *cx, JSObject *obj, jsbytecode *pc, jsval *vp);
        !           298: 
        !           299: extern JSObject *
        !           300: js_ValueToXMLObject(JSContext *cx, jsval v);
        !           301: 
        !           302: extern JSObject *
        !           303: js_ValueToXMLListObject(JSContext *cx, jsval v);
        !           304: 
        !           305: extern JSObject *
        !           306: js_CloneXMLObject(JSContext *cx, JSObject *obj);
        !           307: 
        !           308: extern JSObject *
        !           309: js_NewXMLSpecialObject(JSContext *cx, JSXMLClass xml_class, JSString *name,
        !           310:                        JSString *value);
        !           311: 
        !           312: #endif /* jsxml_h___ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.