Back to index

lightning-sunbird  0.9+nobinonly
Classes | Defines | Typedefs | Enumerations | Functions | Variables
jsxml.h File Reference
#include "jsstddef.h"
#include "jspubtd.h"
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  JSXMLNamespace
struct  JSXMLQName
struct  JSXMLArray
struct  JSXMLArrayCursor
struct  JSXML
union  JSXML.u
struct  JSXMLListVar.u.list
struct  JSXMLVar.u.elem

Defines

#define JSXML_PRESET_CAPACITY   JS_BIT(31)
#define JSXML_CAPACITY_MASK   JS_BITMASK(31)
#define JSXML_CAPACITY(array)   ((array)->capacity & JSXML_CAPACITY_MASK)
#define JSXML_CLASS_HAS_KIDS(class_)   ((class_) < JSXML_CLASS_ATTRIBUTE)
#define JSXML_CLASS_HAS_VALUE(class_)   ((class_) >= JSXML_CLASS_ATTRIBUTE)
#define JSXML_CLASS_HAS_NAME(class_)
#define xml_kids   u.list.kids
#define xml_target   u.list.target
#define xml_targetprop   u.list.targetprop
#define xml_namespaces   u.elem.namespaces
#define xml_attrs   u.elem.attrs
#define xml_value   u.value
#define XMLF_WHITESPACE_TEXT   0x1
#define JSXML_HAS_KIDS(xml)   JSXML_CLASS_HAS_KIDS((xml)->xml_class)
#define JSXML_HAS_VALUE(xml)   JSXML_CLASS_HAS_VALUE((xml)->xml_class)
#define JSXML_HAS_NAME(xml)   JSXML_CLASS_HAS_NAME((xml)->xml_class)
#define JSXML_LENGTH(xml)
#define OBJECT_IS_XML(cx, obj)   ((obj)->map->ops == &js_XMLObjectOps.base)
#define VALUE_IS_XML(cx, v)

Typedefs

typedef JSBool(* JS_DLL_CALLBACK )(const void *a, const void *b)
typedef enum JSXMLClass JSXMLClass

Enumerations

enum  JSXMLClass {
  JSXML_CLASS_LIST, JSXML_CLASS_ELEMENT, JSXML_CLASS_ATTRIBUTE, JSXML_CLASS_PROCESSING_INSTRUCTION,
  JSXML_CLASS_TEXT, JSXML_CLASS_COMMENT, JSXML_CLASS_LIMIT
}

Functions

JSXMLNamespacejs_NewXMLNamespace (JSContext *cx, JSString *prefix, JSString *uri, JSBool declared)
void js_MarkXMLNamespace (JSContext *cx, JSXMLNamespace *ns)
void js_FinalizeXMLNamespace (JSContext *cx, JSXMLNamespace *ns)
JSObjectjs_NewXMLNamespaceObject (JSContext *cx, JSString *prefix, JSString *uri, JSBool declared)
JSObjectjs_GetXMLNamespaceObject (JSContext *cx, JSXMLNamespace *ns)
JSXMLQNamejs_NewXMLQName (JSContext *cx, JSString *uri, JSString *prefix, JSString *localName)
void js_MarkXMLQName (JSContext *cx, JSXMLQName *qn)
void js_FinalizeXMLQName (JSContext *cx, JSXMLQName *qn)
JSObjectjs_NewXMLQNameObject (JSContext *cx, JSString *uri, JSString *prefix, JSString *localName)
JSObjectjs_GetXMLQNameObject (JSContext *cx, JSXMLQName *qn)
JSObjectjs_GetAttributeNameObject (JSContext *cx, JSXMLQName *qn)
JSObjectjs_ConstructXMLQNameObject (JSContext *cx, jsval nsval, jsval lnval)
JSXMLjs_NewXML (JSContext *cx, JSXMLClass xml_class)
void js_MarkXML (JSContext *cx, JSXML *xml)
void js_FinalizeXML (JSContext *cx, JSXML *xml)
JSObjectjs_ParseNodeToXMLObject (JSContext *cx, JSParseNode *pn)
JSObjectjs_NewXMLObject (JSContext *cx, JSXMLClass xml_class)
JSObjectjs_GetXMLObject (JSContext *cx, JSXML *xml)
 JS_FRIEND_DATA (JSXMLObjectOps) js_XMLObjectOps
 JS_FRIEND_DATA (JSClass) js_XMLClass
 JS_FRIEND_DATA (JSExtendedClass) js_NamespaceClass
JSObjectjs_InitNamespaceClass (JSContext *cx, JSObject *obj)
JSObjectjs_InitQNameClass (JSContext *cx, JSObject *obj)
JSObjectjs_InitAttributeNameClass (JSContext *cx, JSObject *obj)
JSObjectjs_InitAnyNameClass (JSContext *cx, JSObject *obj)
JSObjectjs_InitXMLClass (JSContext *cx, JSObject *obj)
JSObjectjs_InitXMLClasses (JSContext *cx, JSObject *obj)
JSBool js_GetFunctionNamespace (JSContext *cx, jsval *vp)
JSBool js_GetDefaultXMLNamespace (JSContext *cx, jsval *vp)
JSBool js_SetDefaultXMLNamespace (JSContext *cx, jsval v)
JSBool js_IsXMLName (JSContext *cx, jsval v)
JSBool js_ToAttributeName (JSContext *cx, jsval *vp)
JSStringjs_EscapeAttributeValue (JSContext *cx, JSString *str)
JSStringjs_AddAttributePart (JSContext *cx, JSBool isName, JSString *str, JSString *str2)
JSStringjs_EscapeElementValue (JSContext *cx, JSString *str)
JSStringjs_ValueToXMLString (JSContext *cx, jsval v)
JSBool js_GetAnyName (JSContext *cx, jsval *vp)
JSBool js_FindXMLProperty (JSContext *cx, jsval name, JSObject **objp, jsval *namep)
JSBool js_GetXMLProperty (JSContext *cx, JSObject *obj, jsval name, jsval *vp)
JSBool js_GetXMLFunction (JSContext *cx, JSObject *obj, jsid id, jsval *vp)
JSBool js_SetXMLProperty (JSContext *cx, JSObject *obj, jsval name, jsval *vp)
JSBool js_GetXMLDescendants (JSContext *cx, JSObject *obj, jsval id, jsval *vp)
JSBool js_DeleteXMLListElements (JSContext *cx, JSObject *listobj)
JSBool js_FilterXMLList (JSContext *cx, JSObject *obj, jsbytecode *pc, jsval *vp)
JSObjectjs_ValueToXMLObject (JSContext *cx, jsval v)
JSObjectjs_ValueToXMLListObject (JSContext *cx, jsval v)
JSObjectjs_CloneXMLObject (JSContext *cx, JSObject *obj)
JSObjectjs_NewXMLSpecialObject (JSContext *cx, JSXMLClass xml_class, JSString *name, JSString *value)
JSStringjs_MakeXMLCDATAString (JSContext *cx, JSString *str)
JSStringjs_MakeXMLCommentString (JSContext *cx, JSString *str)
JSStringjs_MakeXMLPIString (JSContext *cx, JSString *name, JSString *str)

Variables

const char js_AnyName_str []
const char js_AttributeName_str []
const char js_isXMLName_str []
const char js_XMLList_str []
const char js_amp_entity_str []
const char js_gt_entity_str []
const char js_lt_entity_str []
const char js_quot_entity_str []

Class Documentation

struct JSXMLNamespace

Definition at line 55 of file jsxml.h.

Collaboration diagram for JSXMLNamespace:
Class Members
JSBool declared
JSObject * object
JSString * prefix
JSString * uri
struct JSXMLQName

Definition at line 79 of file jsxml.h.

Collaboration diagram for JSXMLQName:
Class Members
JSString * localName
JSObject * object
JSString * prefix
JSString * uri
struct JSXMLArray

Definition at line 112 of file jsxml.h.

Collaboration diagram for JSXMLArray:
Class Members
uint32 capacity
JSXMLArrayCursor * cursors
uint32 length
void ** vector
struct JSXMLArrayCursor

Definition at line 123 of file jsxml.h.

Collaboration diagram for JSXMLArrayCursor:
Class Members
JSXMLArray * array
uint32 index
JSXMLArrayCursor * next
JSXMLArrayCursor ** prevp
void * root
struct JSXML

Definition at line 155 of file jsxml.h.

Collaboration diagram for JSXML:
Class Members
void * domnode
JSXMLQName * name
JSObject * object
JSXML * parent
union JSXML u
uint16 xml_class
uint16 xml_flags
union JSXML.u

Definition at line 166 of file jsxml.h.

Class Members
u elem
u list
JSString * value
struct JSXML::JSXMLListVar.u.list

Definition at line 167 of file jsxml.h.

Class Members
JSXMLArray kids
JSXML * target
JSXMLQName * targetprop
struct JSXML::JSXMLVar.u.elem

Definition at line 172 of file jsxml.h.

Class Members
JSXMLArray attrs
JSXMLArray kids
JSXMLArray namespaces

Define Documentation

Definition at line 121 of file jsxml.h.

Definition at line 120 of file jsxml.h.

#define JSXML_CLASS_HAS_KIDS (   class_)    ((class_) < JSXML_CLASS_ATTRIBUTE)

Definition at line 145 of file jsxml.h.

Value:

Definition at line 147 of file jsxml.h.

#define JSXML_CLASS_HAS_VALUE (   class_)    ((class_) >= JSXML_CLASS_ATTRIBUTE)

Definition at line 146 of file jsxml.h.

#define JSXML_HAS_KIDS (   xml)    JSXML_CLASS_HAS_KIDS((xml)->xml_class)

Definition at line 195 of file jsxml.h.

#define JSXML_HAS_NAME (   xml)    JSXML_CLASS_HAS_NAME((xml)->xml_class)

Definition at line 197 of file jsxml.h.

#define JSXML_HAS_VALUE (   xml)    JSXML_CLASS_HAS_VALUE((xml)->xml_class)

Definition at line 196 of file jsxml.h.

Value:
(JSXML_CLASS_HAS_KIDS((xml)->xml_class)       \
                                 ? (xml)->xml_kids.length                     \
                                 : 0)

Definition at line 198 of file jsxml.h.

Definition at line 119 of file jsxml.h.

#define OBJECT_IS_XML (   cx,
  obj 
)    ((obj)->map->ops == &js_XMLObjectOps.base)

Definition at line 231 of file jsxml.h.

#define VALUE_IS_XML (   cx,
  v 
)
Value:
(!JSVAL_IS_PRIMITIVE(v) &&                    \
                                 OBJECT_IS_XML(cx, JSVAL_TO_OBJECT(v)))

Definition at line 232 of file jsxml.h.

Definition at line 188 of file jsxml.h.

#define xml_kids   u.list.kids

Definition at line 184 of file jsxml.h.

#define xml_namespaces   u.elem.namespaces

Definition at line 187 of file jsxml.h.

Definition at line 185 of file jsxml.h.

#define xml_targetprop   u.list.targetprop

Definition at line 186 of file jsxml.h.

Definition at line 189 of file jsxml.h.

Definition at line 192 of file jsxml.h.


Typedef Documentation

Definition at line 110 of file jsxml.h.

typedef enum JSXMLClass JSXMLClass

Enumeration Type Documentation

enum JSXMLClass
Enumerator:
JSXML_CLASS_LIST 
JSXML_CLASS_ELEMENT 
JSXML_CLASS_ATTRIBUTE 
JSXML_CLASS_PROCESSING_INSTRUCTION 
JSXML_CLASS_TEXT 
JSXML_CLASS_COMMENT 
JSXML_CLASS_LIMIT 

Definition at line 135 of file jsxml.h.


Function Documentation

JSString* js_AddAttributePart ( JSContext cx,
JSBool  isName,
JSString str,
JSString str2 
)

Definition at line 7916 of file jsxml.c.

{
    size_t len, len2, newlen;
    jschar *chars;

    if (JSSTRING_IS_DEPENDENT(str) ||
        !(*js_GetGCThingFlags(str) & GCF_MUTABLE)) {
        str = js_NewStringCopyN(cx, JSSTRING_CHARS(str), JSSTRING_LENGTH(str),
                                0);
        if (!str)
            return NULL;
    }

    len = str->length;
    len2 = JSSTRING_LENGTH(str2);
    newlen = (isName) ? len + 1 + len2 : len + 2 + len2 + 1;
    chars = (jschar *) JS_realloc(cx, str->chars, (newlen+1) * sizeof(jschar));
    if (!chars)
        return NULL;

    /*
     * Reallocating str (because we know it has no other references) requires
     * purging any deflated string cached for it.
     */
    js_PurgeDeflatedStringCache(cx->runtime, str);

    str->chars = chars;
    str->length = newlen;
    chars += len;
    if (isName) {
        *chars++ = ' ';
        js_strncpy(chars, JSSTRING_CHARS(str2), len2);
        chars += len2;
    } else {
        *chars++ = '=';
        *chars++ = '"';
        js_strncpy(chars, JSSTRING_CHARS(str2), len2);
        chars += len2;
        *chars++ = '"';
    }
    *chars = 0;
    return str;
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSObject* js_CloneXMLObject ( JSContext cx,
JSObject obj 
)

Definition at line 8309 of file jsxml.c.

{
    uintN flags;
    JSXML *xml;

    if (!GetXMLSettingFlags(cx, &flags))
        return NULL;
    xml = (JSXML *) JS_GetPrivate(cx, obj);
    if (flags & (XSF_IGNORE_COMMENTS |
                 XSF_IGNORE_PROCESSING_INSTRUCTIONS |
                 XSF_IGNORE_WHITESPACE)) {
        xml = DeepCopy(cx, xml, NULL, flags);
        if (!xml)
            return NULL;
        return xml->object;
    }
    return NewXMLObject(cx, xml);
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSObject* js_ConstructXMLQNameObject ( JSContext cx,
jsval  nsval,
jsval  lnval 
)

Definition at line 656 of file jsxml.c.

{
    jsval argv[2];

    /*
     * ECMA-357 11.1.2,
     * The _QualifiedIdentifier : PropertySelector :: PropertySelector_
     * production, step 2.
     */
    if (!JSVAL_IS_PRIMITIVE(nsval) &&
        OBJ_GET_CLASS(cx, JSVAL_TO_OBJECT(nsval)) == &js_AnyNameClass) {
        nsval = JSVAL_NULL;
    }

    argv[0] = nsval;
    argv[1] = lnval;
    return js_ConstructObject(cx, &js_QNameClass.base, NULL, NULL, 2, argv);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 8190 of file jsxml.c.

{
    JSXML *list;
    uint32 n;
    jsval junk;

    list = (JSXML *) JS_GetPrivate(cx, listobj);
    for (n = list->xml_kids.length; n != 0; --n) {
        if (!DeleteProperty(cx, listobj, INT_TO_JSID(0), &junk))
            return JS_FALSE;
    }
    return JS_TRUE;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 7910 of file jsxml.c.

{
    return EscapeAttributeValue(cx, NULL, str);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 7961 of file jsxml.c.

{
    return EscapeElementValue(cx, NULL, str);
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSBool js_FilterXMLList ( JSContext cx,
JSObject obj,
jsbytecode pc,
jsval vp 
)

Definition at line 8205 of file jsxml.c.

{
    JSBool ok, match;
    JSStackFrame *fp;
    uint32 flags;
    JSObject *scobj, *listobj, *resobj, *withobj, *kidobj, *obj2;
    JSXML *xml, *list, *result, *kid;
    JSXMLArrayCursor cursor;

    ok = js_EnterLocalRootScope(cx);
    if (!ok)
        return JS_FALSE;

    /* All control flow after this point must exit via label out or bad. */
    *vp = JSVAL_NULL;
    fp = cx->fp;
    flags = fp->flags;
    fp->flags = flags | JSFRAME_FILTERING;
    scobj = js_GetScopeChain(cx, fp);
    withobj = NULL;
    if (!scobj)
        goto bad;
    xml = GetPrivate(cx, obj, "filtering predicate operator");
    if (!xml)
        goto bad;

    if (xml->xml_class == JSXML_CLASS_LIST) {
        list = xml;
    } else {
        listobj = js_NewXMLObject(cx, JSXML_CLASS_LIST);
        if (!listobj)
            goto bad;
        list = (JSXML *) JS_GetPrivate(cx, listobj);
        ok = Append(cx, list, xml);
        if (!ok)
            goto out;
    }

    resobj = js_NewXMLObject(cx, JSXML_CLASS_LIST);
    if (!resobj)
        goto bad;
    result = (JSXML *) JS_GetPrivate(cx, resobj);

    /* Hoist the scope chain update out of the loop over kids. */
    withobj = js_NewWithObject(cx, NULL, scobj, -1);
    if (!withobj)
        goto bad;
    fp->scopeChain = withobj;

    XMLArrayCursorInit(&cursor, &list->xml_kids);
    while ((kid = (JSXML *) XMLArrayCursorNext(&cursor)) != NULL) {
        kidobj = js_GetXMLObject(cx, kid);
        if (!kidobj)
            break;
        OBJ_SET_PROTO(cx, withobj, kidobj);
        ok = js_Interpret(cx, pc, vp) && js_ValueToBoolean(cx, *vp, &match);
        for (obj2 = fp->scopeChain;
             obj2 != withobj;
             obj2 = OBJ_GET_PARENT(cx, obj2)) {
            if (OBJ_GET_CLASS(cx, obj2) == &js_BlockClass) {
                if (JS_GetPrivate(cx, obj2) != fp)
                    break;
                ok &= js_PutBlockObject(cx, obj2);
            }
        }
        if (ok && match)
            ok = Append(cx, result, kid);
        if (!ok)
            break;
    }
    XMLArrayCursorFinish(&cursor);
    if (!ok)
        goto out;
    if (kid)
        goto bad;

    *vp = OBJECT_TO_JSVAL(resobj);

out:
    fp->flags = flags | (fp->flags & JSFRAME_POP_BLOCKS);
    if (withobj) {
        fp->scopeChain = scobj;
        JS_SetPrivate(cx, withobj, NULL);
    }
    js_LeaveLocalRootScopeWithResult(cx, *vp);
    return ok;
bad:
    ok = JS_FALSE;
    goto out;
}

Here is the call graph for this function:

Here is the caller graph for this function:

void js_FinalizeXML ( JSContext cx,
JSXML xml 
)

Definition at line 7540 of file jsxml.c.

{
    if (JSXML_HAS_KIDS(xml)) {
        XMLArrayFinish(cx, &xml->xml_kids);
        if (xml->xml_class == JSXML_CLASS_ELEMENT) {
            XMLArrayFinish(cx, &xml->xml_namespaces);
            XMLArrayFinish(cx, &xml->xml_attrs);
        }
    }

#ifdef DEBUG_notme
    JS_REMOVE_LINK(&xml->links);
#endif

    UNMETER(xml_stats.livexml);
}

Here is the call graph for this function:

Definition at line 311 of file jsxml.c.

{
    UNMETER(xml_stats.livenamespace);
}

Definition at line 586 of file jsxml.c.

{
    UNMETER(xml_stats.liveqname);
}
JSBool js_FindXMLProperty ( JSContext cx,
jsval  name,
JSObject **  objp,
jsval namep 
)

Definition at line 8055 of file jsxml.c.

{
    JSXMLQName *qn;
    jsid funid, id;
    JSObject *obj, *pobj, *lastobj;
    JSProperty *prop;
    const char *printable;

    qn = ToXMLName(cx, name, &funid);
    if (!qn)
        return JS_FALSE;
    id = OBJECT_TO_JSID(qn->object);

    obj = cx->fp->scopeChain;
    do {
        if (!OBJ_LOOKUP_PROPERTY(cx, obj, id, &pobj, &prop))
            return JS_FALSE;
        if (prop) {
            OBJ_DROP_PROPERTY(cx, pobj, prop);

            /*
             * Call OBJ_THIS_OBJECT to skip any With object that wraps an XML
             * object to carry scope chain linkage in js_FilterXMLList.
             */
            pobj = OBJ_THIS_OBJECT(cx, obj);
            if (OBJECT_IS_XML(cx, pobj)) {
                *objp = pobj;
                *namep = ID_TO_VALUE(id);
                return JS_TRUE;
            }
        }

        lastobj = obj;
    } while ((obj = OBJ_GET_PARENT(cx, obj)) != NULL);

    printable = js_ValueToPrintableString(cx, name);
    if (printable) {
        JS_ReportErrorFlagsAndNumber(cx, JSREPORT_ERROR,
                                     js_GetErrorMessage, NULL,
                                     JSMSG_UNDEFINED_XML_NAME, printable);
    }
    return JS_FALSE;
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSBool js_GetAnyName ( JSContext cx,
jsval vp 
)

Definition at line 7981 of file jsxml.c.

{
    JSRuntime *rt;
    JSObject *obj;
    JSXMLQName *qn;
    JSBool ok;

    /* Optimize by avoiding JS_LOCK_GC(rt) for the common case. */
    rt = cx->runtime;
    obj = rt->anynameObject;
    if (!obj) {
        JS_LOCK_GC(rt);
        obj = rt->anynameObject;
        if (!obj) {
            JS_UNLOCK_GC(rt);

            /*
             * Protect multiple newborns created below, in the do-while(0)
             * loop used to ensure that we leave this local root scope.
             */
            ok = js_EnterLocalRootScope(cx);
            if (!ok)
                return JS_FALSE;

            do {
                qn = js_NewXMLQName(cx, rt->emptyString, rt->emptyString,
                                    ATOM_TO_STRING(rt->atomState.starAtom));
                if (!qn) {
                    ok = JS_FALSE;
                    break;
                }

                obj = js_NewObject(cx, &js_AnyNameClass, NULL, NULL);
                if (!obj || !JS_SetPrivate(cx, obj, qn)) {
                    cx->weakRoots.newborn[GCX_OBJECT] = NULL;
                    ok = JS_FALSE;
                    break;
                }
                qn->object = obj;
                METER(xml_stats.qnameobj);
                METER(xml_stats.liveqnameobj);

                /*
                 * Avoid entraining any Object.prototype found via cx's scope
                 * chain or global object.  This loses the default toString,
                 * but no big deal: we want to customize toString anyway for
                 * clearer diagnostics.
                 */
                if (!JS_DefineFunction(cx, obj, js_toString_str,
                                       anyname_toString, 0, 0)) {
                    ok = JS_FALSE;
                    break;
                }
                OBJ_SET_PROTO(cx, obj, NULL);
                JS_ASSERT(!OBJ_GET_PARENT(cx, obj));
            } while (0);

            js_LeaveLocalRootScopeWithResult(cx, OBJECT_TO_JSVAL(obj));
            if (!ok)
                return JS_FALSE;

            JS_LOCK_GC(rt);
            if (!rt->anynameObject)
                rt->anynameObject = obj;
            else
                obj = rt->anynameObject;
        }
        JS_UNLOCK_GC(rt);
    }
    *vp = OBJECT_TO_JSVAL(obj);
    return JS_TRUE;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 630 of file jsxml.c.

{
    JSObject *obj;

    obj = qn->object;
    if (obj) {
        if (OBJ_GET_CLASS(cx, obj) == &js_AttributeNameClass)
            return obj;
        qn = js_NewXMLQName(cx, qn->uri, qn->prefix, qn->localName);
        if (!qn)
            return NULL;
    }

    obj = js_NewObject(cx, &js_AttributeNameClass, NULL, NULL);
    if (!obj || !JS_SetPrivate(cx, obj, qn)) {
        cx->weakRoots.newborn[GCX_OBJECT] = NULL;
        return NULL;
    }

    qn->object = obj;
    METER(xml_stats.qnameobj);
    METER(xml_stats.liveqnameobj);
    return obj;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 7827 of file jsxml.c.

{
    JSStackFrame *fp;
    JSObject *nsobj, *obj, *tmp;
    jsval v;

    fp = cx->fp;
    nsobj = fp->xmlNamespace;
    if (nsobj) {
        *vp = OBJECT_TO_JSVAL(nsobj);
        return JS_TRUE;
    }

    obj = NULL;
    for (tmp = fp->scopeChain; tmp; tmp = OBJ_GET_PARENT(cx, obj)) {
        obj = tmp;
        if (!OBJ_GET_PROPERTY(cx, obj, JS_DEFAULT_XML_NAMESPACE_ID, &v))
            return JS_FALSE;
        if (!JSVAL_IS_PRIMITIVE(v)) {
            fp->xmlNamespace = JSVAL_TO_OBJECT(v);
            *vp = v;
            return JS_TRUE;
        }
    }

    nsobj = js_ConstructObject(cx, &js_NamespaceClass.base, NULL, obj, 0, NULL);
    if (!nsobj)
        return JS_FALSE;
    v = OBJECT_TO_JSVAL(nsobj);
    if (obj &&
        !OBJ_DEFINE_PROPERTY(cx, obj, JS_DEFAULT_XML_NAMESPACE_ID, v,
                             JS_PropertyStub, JS_PropertyStub,
                             JSPROP_PERMANENT, NULL)) {
        return JS_FALSE;
    }
    fp->xmlNamespace = nsobj;
    *vp = v;
    return JS_TRUE;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 7753 of file jsxml.c.

{
    JSRuntime *rt;
    JSObject *obj;
    JSAtom *atom;
    JSString *prefix, *uri;

    /* An invalid URI, for internal use only, guaranteed not to collide. */
    static const char anti_uri[] = "@mozilla.org/js/function";

    /* Optimize by avoiding JS_LOCK_GC(rt) for the common case. */
    rt = cx->runtime;
    obj = rt->functionNamespaceObject;
    if (!obj) {
        JS_LOCK_GC(rt);
        obj = rt->functionNamespaceObject;
        if (!obj) {
            JS_UNLOCK_GC(rt);

            /*
             * Note that any race to atomize anti_uri here is resolved by
             * the atom table code, such that at most one atom for anti_uri
             * is created.  We store in rt->atomState.lazy unconditionally,
             * since we are guaranteed to overwrite either null or the same
             * atom pointer.
             */
            atom = js_Atomize(cx, anti_uri, sizeof anti_uri - 1, ATOM_PINNED);
            if (!atom)
                return JS_FALSE;
            rt->atomState.lazy.functionNamespaceURIAtom = atom;

            prefix = ATOM_TO_STRING(rt->atomState.typeAtoms[JSTYPE_FUNCTION]);
            uri = ATOM_TO_STRING(atom);
            obj = js_NewXMLNamespaceObject(cx, prefix, uri, JS_FALSE);
            if (!obj)
                return JS_FALSE;

            /*
             * Avoid entraining any in-scope Object.prototype.  The loss of
             * Namespace.prototype is not detectable, as there is no way to
             * refer to this instance in scripts.  When used to qualify method
             * names, its prefix and uri references are copied to the QName.
             */
            OBJ_SET_PROTO(cx, obj, NULL);
            OBJ_SET_PARENT(cx, obj, NULL);

            JS_LOCK_GC(rt);
            if (!rt->functionNamespaceObject)
                rt->functionNamespaceObject = obj;
            else
                obj = rt->functionNamespaceObject;
        }
        JS_UNLOCK_GC(rt);
    }
    *vp = OBJECT_TO_JSVAL(obj);
    return JS_TRUE;
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSBool js_GetXMLDescendants ( JSContext cx,
JSObject obj,
jsval  id,
jsval vp 
)

Definition at line 8174 of file jsxml.c.

{
    JSXML *xml, *list;

    xml = GetPrivate(cx, obj, "descendants internal method");
    if (!xml)
        return JS_FALSE;

    list = Descendants(cx, xml, id);
    if (!list)
        return JS_FALSE;
    *vp = OBJECT_TO_JSVAL(list->object);
    return JS_TRUE;
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSBool js_GetXMLFunction ( JSContext cx,
JSObject obj,
jsid  id,
jsval vp 
)

Definition at line 8106 of file jsxml.c.

{
    JSObject *target;
    JSXML *xml;
    JSTempValueRooter tvr;
    JSBool ok;

    JS_ASSERT(OBJECT_IS_XML(cx, obj));

    /* After this point, control must flow through label out: to exit. */
    JS_PUSH_TEMP_ROOT_OBJECT(cx, NULL, &tvr);

    /*
     * See comments before xml_lookupProperty about the need for the proto
     * chain lookup.
     */
    target = obj;
    for (;;) {
        ok = js_GetProperty(cx, target, id, vp);
        if (!ok)
            goto out;
        if (VALUE_IS_FUNCTION(cx, *vp)) {
            ok = JS_TRUE;
            goto out;
        }
        target = OBJ_GET_PROTO(cx, target);
        if (target == NULL)
            break;
        tvr.u.object = target;
    }

    xml = (JSXML *) JS_GetPrivate(cx, obj);
    if (HasSimpleContent(xml)) {
        /* Search in String.prototype to implement 11.2.2.1 Step 3(f). */
        ok = js_GetClassPrototype(cx, NULL, INT_TO_JSID(JSProto_String),
                                  &tvr.u.object);
        if (!ok)
            goto out;
        JS_ASSERT(tvr.u.object);
        ok = OBJ_GET_PROPERTY(cx, tvr.u.object, id, vp);
    }

  out:
    JS_POP_TEMP_ROOT(cx, &tvr);
    return ok;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 335 of file jsxml.c.

{
    JSObject *obj;

    obj = ns->object;
    if (obj) {
        JS_ASSERT(JS_GetPrivate(cx, obj) == ns);
        return obj;
    }
    obj = js_NewObject(cx, &js_NamespaceClass.base, NULL, NULL);
    if (!obj || !JS_SetPrivate(cx, obj, ns)) {
        cx->weakRoots.newborn[GCX_OBJECT] = NULL;
        return NULL;
    }
    ns->object = obj;
    METER(xml_stats.namespaceobj);
    METER(xml_stats.livenamespaceobj);
    return obj;
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSObject* js_GetXMLObject ( JSContext cx,
JSXML xml 
)

Definition at line 7614 of file jsxml.c.

{
    JSObject *obj;

    obj = xml->object;
    if (obj) {
        JS_ASSERT(JS_GetPrivate(cx, obj) == xml);
        return obj;
    }

    /*
     * A JSXML cannot be shared among threads unless it has an object.
     * A JSXML cannot be given an object unless:
     * (a) it has no parent; or
     * (b) its parent has no object (therefore is thread-private); or
     * (c) its parent's object is locked.
     *
     * Once given an object, a JSXML is immutable.
     */
    JS_ASSERT(!xml->parent ||
              !xml->parent->object ||
              JS_IS_OBJ_LOCKED(cx, xml->parent->object));

    obj = NewXMLObject(cx, xml);
    if (!obj)
        return NULL;
    xml->object = obj;
    return obj;
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSBool js_GetXMLProperty ( JSContext cx,
JSObject obj,
jsval  name,
jsval vp 
)

Definition at line 8100 of file jsxml.c.

{
    return GetProperty(cx, obj, name, vp);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 609 of file jsxml.c.

{
    JSObject *obj;

    obj = qn->object;
    if (obj) {
        JS_ASSERT(JS_GetPrivate(cx, obj) == qn);
        return obj;
    }
    obj = js_NewObject(cx, &js_QNameClass.base, NULL, NULL);
    if (!obj || !JS_SetPrivate(cx, obj, qn)) {
        cx->weakRoots.newborn[GCX_OBJECT] = NULL;
        return NULL;
    }
    qn->object = obj;
    METER(xml_stats.qnameobj);
    METER(xml_stats.liveqnameobj);
    return obj;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 7666 of file jsxml.c.

{
    jsval v;

    if (!js_GetAnyName(cx, &v))
        return NULL;
    return JSVAL_TO_OBJECT(v);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 7659 of file jsxml.c.

{
    return JS_InitClass(cx, obj, NULL, &js_AttributeNameClass, AttributeName, 2,
                        qname_props, qname_methods, NULL, NULL);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 7645 of file jsxml.c.

{
    return JS_InitClass(cx, obj, NULL, &js_NamespaceClass.base, Namespace, 2,
                        namespace_props, namespace_methods, NULL, NULL);
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSObject* js_InitQNameClass ( JSContext cx,
JSObject obj 
)

Definition at line 7652 of file jsxml.c.

{
    return JS_InitClass(cx, obj, NULL, &js_QNameClass.base, QName, 2,
                        qname_props, qname_methods, NULL, NULL);
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSObject* js_InitXMLClass ( JSContext cx,
JSObject obj 
)

Definition at line 7676 of file jsxml.c.

{
    JSObject *proto, *pobj, *ctor;
    JSFunction *fun;
    JSXML *xml;
    JSProperty *prop;
    JSScopeProperty *sprop;
    jsval cval, argv[1], junk;

    /* Define the isXMLName function. */
    if (!JS_DefineFunction(cx, obj, js_isXMLName_str, xml_isXMLName, 1, 0))
        return NULL;

    /* Define the XML class constructor and prototype. */
    proto = JS_InitClass(cx, obj, NULL, &js_XMLClass, XML, 1,
                         NULL, xml_methods,
                         xml_static_props, xml_static_methods);
    if (!proto)
        return NULL;

    xml = js_NewXML(cx, JSXML_CLASS_TEXT);
    if (!xml || !JS_SetPrivate(cx, proto, xml))
        return NULL;
    xml->object = proto;
    METER(xml_stats.xmlobj);
    METER(xml_stats.livexmlobj);

    /*
     * Prepare to set default settings on the XML constructor we just made.
     * NB: We can't use JS_GetConstructor, because it calls OBJ_GET_PROPERTY,
     * which is xml_getProperty, which creates a new XMLList every time!  We
     * must instead call js_LookupProperty directly.
     */
    if (!js_LookupProperty(cx, proto,
                           ATOM_TO_JSID(cx->runtime->atomState.constructorAtom),
                           &pobj, &prop)) {
        return NULL;
    }
    JS_ASSERT(prop);
    sprop = (JSScopeProperty *) prop;
    JS_ASSERT(SPROP_HAS_VALID_SLOT(sprop, OBJ_SCOPE(pobj)));
    cval = OBJ_GET_SLOT(cx, pobj, sprop->slot);
    OBJ_DROP_PROPERTY(cx, pobj, prop);
    JS_ASSERT(VALUE_IS_FUNCTION(cx, cval));

    /* Set default settings. */
    ctor = JSVAL_TO_OBJECT(cval);
    argv[0] = JSVAL_VOID;
    if (!xml_setSettings(cx, ctor, 1, argv, &junk))
        return NULL;

    /* Define the XMLList function and give it the same prototype as XML. */
    fun = JS_DefineFunction(cx, obj, js_XMLList_str, XMLList, 1, 0);
    if (!fun)
        return NULL;
    if (!js_SetClassPrototype(cx, fun->object, proto,
                              JSPROP_READONLY | JSPROP_PERMANENT)) {
        return NULL;
    }
    return proto;
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSObject* js_InitXMLClasses ( JSContext cx,
JSObject obj 
)

Definition at line 7739 of file jsxml.c.

{
    if (!js_InitNamespaceClass(cx, obj))
        return NULL;
    if (!js_InitQNameClass(cx, obj))
        return NULL;
    if (!js_InitAttributeNameClass(cx, obj))
        return NULL;
    if (!js_InitAnyNameClass(cx, obj))
        return NULL;
    return js_InitXMLClass(cx, obj);
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSBool js_IsXMLName ( JSContext cx,
jsval  v 
)

Definition at line 694 of file jsxml.c.

{
    JSClass *clasp;
    JSXMLQName *qn;
    JSString *name;
    JSErrorReporter older;

    /*
     * Inline specialization of the QName constructor called with v passed as
     * the only argument, to compute the localName for the constructed qname,
     * without actually allocating the object or computing its uri and prefix.
     * See ECMA-357 13.1.2.1 step 1 and 13.3.2.
     */
    if (!JSVAL_IS_PRIMITIVE(v) &&
        (clasp = OBJ_GET_CLASS(cx, JSVAL_TO_OBJECT(v)),
         clasp == &js_QNameClass.base ||
         clasp == &js_AttributeNameClass ||
         clasp == &js_AnyNameClass)) {
        qn = (JSXMLQName *) JS_GetPrivate(cx, JSVAL_TO_OBJECT(v));
        name = qn->localName;
    } else {
        older = JS_SetErrorReporter(cx, NULL);
        name = js_ValueToString(cx, v);
        JS_SetErrorReporter(cx, older);
        if (!name) {
            JS_ClearPendingException(cx);
            return JS_FALSE;
        }
    }

    return IsXMLName(JSSTRING_CHARS(name), JSSTRING_LENGTH(name));
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 8362 of file jsxml.c.

{
    return MakeXMLCDATAString(cx, NULL, str);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 8368 of file jsxml.c.

{
    return MakeXMLCommentString(cx, NULL, str);
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSString* js_MakeXMLPIString ( JSContext cx,
JSString name,
JSString str 
)

Definition at line 8374 of file jsxml.c.

{
    return MakeXMLPIString(cx, NULL, name, str);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void js_MarkXML ( JSContext cx,
JSXML xml 
)

Definition at line 7502 of file jsxml.c.

{
    GC_MARK(cx, xml->object, "object");
    GC_MARK(cx, xml->name, "name");
    GC_MARK(cx, xml->parent, "xml_parent");

    if (JSXML_HAS_VALUE(xml)) {
        GC_MARK(cx, xml->xml_value, "value");
        return;
    }

    xml_mark_vector(cx,
                    (JSXML **) xml->xml_kids.vector,
                    xml->xml_kids.length);
    XMLArrayCursorMark(cx, xml->xml_kids.cursors);
    XMLArrayTrim(&xml->xml_kids);

    if (xml->xml_class == JSXML_CLASS_LIST) {
        if (xml->xml_target)
            GC_MARK(cx, xml->xml_target, "target");
        if (xml->xml_targetprop)
            GC_MARK(cx, xml->xml_targetprop, "targetprop");
    } else {
        namespace_mark_vector(cx,
                              (JSXMLNamespace **) xml->xml_namespaces.vector,
                              xml->xml_namespaces.length);
        XMLArrayCursorMark(cx, xml->xml_namespaces.cursors);
        XMLArrayTrim(&xml->xml_namespaces);

        xml_mark_vector(cx,
                        (JSXML **) xml->xml_attrs.vector,
                        xml->xml_attrs.length);
        XMLArrayCursorMark(cx, xml->xml_attrs.cursors);
        XMLArrayTrim(&xml->xml_attrs);
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 303 of file jsxml.c.

{
    GC_MARK(cx, ns->object, "object");
    GC_MARK(cx, ns->prefix, "prefix");
    GC_MARK(cx, ns->uri, "uri");
}

Here is the caller graph for this function:

void js_MarkXMLQName ( JSContext cx,
JSXMLQName qn 
)

Definition at line 577 of file jsxml.c.

{
    GC_MARK(cx, qn->object, "object");
    GC_MARK(cx, qn->uri, "uri");
    GC_MARK(cx, qn->prefix, "prefix");
    GC_MARK(cx, qn->localName, "localName");
}

Here is the caller graph for this function:

JSXML* js_NewXML ( JSContext cx,
JSXMLClass  xml_class 
)

Definition at line 7465 of file jsxml.c.

{
    JSXML *xml;

    xml = (JSXML *) js_NewGCThing(cx, GCX_XML, sizeof_JSXML[xml_class]);
    if (!xml)
        return NULL;

    xml->object = NULL;
    xml->domnode = NULL;
    xml->parent = NULL;
    xml->name = NULL;
    xml->xml_class = xml_class;
    xml->xml_flags = 0;
    if (JSXML_CLASS_HAS_VALUE(xml_class)) {
        xml->xml_value = cx->runtime->emptyString;
    } else {
        XMLArrayInit(cx, &xml->xml_kids, 0);
        if (xml_class == JSXML_CLASS_LIST) {
            xml->xml_target = NULL;
            xml->xml_targetprop = NULL;
        } else {
            XMLArrayInit(cx, &xml->xml_namespaces, 0);
            XMLArrayInit(cx, &xml->xml_attrs, 0);
        }
    }

#ifdef DEBUG_notme
    JS_APPEND_LINK(&xml->links, &xml_leaks);
    xml->serial = xml_serial++;
#endif
    METER(xml_stats.xml);
    METER(xml_stats.livexml);
    return xml;
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSXMLNamespace* js_NewXMLNamespace ( JSContext cx,
JSString prefix,
JSString uri,
JSBool  declared 
)

Definition at line 284 of file jsxml.c.

{
    JSXMLNamespace *ns;

    ns = (JSXMLNamespace *)
         js_NewGCThing(cx, GCX_NAMESPACE, sizeof(JSXMLNamespace));
    if (!ns)
        return NULL;
    ns->object = NULL;
    ns->prefix = prefix;
    ns->uri = uri;
    ns->declared = declared;
    METER(xml_stats.namespace);
    METER(xml_stats.livenamespace);
    return ns;
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSObject* js_NewXMLNamespaceObject ( JSContext cx,
JSString prefix,
JSString uri,
JSBool  declared 
)

Definition at line 317 of file jsxml.c.

{
    JSXMLNamespace *ns;
    JSTempValueRooter tvr;
    JSObject *obj;

    ns = js_NewXMLNamespace(cx, prefix, uri, declared);
    if (!ns)
        return NULL;

    JS_PUSH_TEMP_ROOT_NAMESPACE(cx, ns, &tvr);
    obj = js_GetXMLNamespaceObject(cx, ns);
    JS_POP_TEMP_ROOT(cx, &tvr);
    return obj;
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSObject* js_NewXMLObject ( JSContext cx,
JSXMLClass  xml_class 
)

Definition at line 7583 of file jsxml.c.

{
    JSXML *xml;
    JSObject *obj;
    JSTempValueRooter tvr;

    xml = js_NewXML(cx, xml_class);
    if (!xml)
        return NULL;
    JS_PUSH_TEMP_ROOT_XML(cx, xml, &tvr);
    obj = js_GetXMLObject(cx, xml);
    JS_POP_TEMP_ROOT(cx, &tvr);
    return obj;
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSXMLQName* js_NewXMLQName ( JSContext cx,
JSString uri,
JSString prefix,
JSString localName 
)

Definition at line 559 of file jsxml.c.

{
    JSXMLQName *qn;

    qn = (JSXMLQName *) js_NewGCThing(cx, GCX_QNAME, sizeof(JSXMLQName));
    if (!qn)
        return NULL;
    qn->object = NULL;
    qn->uri = uri;
    qn->prefix = prefix;
    qn->localName = localName;
    METER(xml_stats.qname);
    METER(xml_stats.liveqname);
    return qn;
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSObject* js_NewXMLQNameObject ( JSContext cx,
JSString uri,
JSString prefix,
JSString localName 
)

Definition at line 592 of file jsxml.c.

{
    JSXMLQName *qn;
    JSTempValueRooter tvr;
    JSObject *obj;

    qn = js_NewXMLQName(cx, uri, prefix, localName);
    if (!qn)
        return NULL;
    JS_PUSH_TEMP_ROOT_QNAME(cx, qn, &tvr);
    obj = js_GetXMLQNameObject(cx, qn);
    JS_POP_TEMP_ROOT(cx, &tvr);
    return obj;
}

Here is the call graph for this function:

JSObject* js_NewXMLSpecialObject ( JSContext cx,
JSXMLClass  xml_class,
JSString name,
JSString value 
)

Definition at line 8329 of file jsxml.c.

{
    uintN flags;
    JSObject *obj;
    JSXML *xml;
    JSXMLQName *qn;

    if (!GetXMLSettingFlags(cx, &flags))
        return NULL;

    if ((xml_class == JSXML_CLASS_COMMENT &&
         (flags & XSF_IGNORE_COMMENTS)) ||
        (xml_class == JSXML_CLASS_PROCESSING_INSTRUCTION &&
         (flags & XSF_IGNORE_PROCESSING_INSTRUCTIONS))) {
        return js_NewXMLObject(cx, JSXML_CLASS_TEXT);
    }

    obj = js_NewXMLObject(cx, xml_class);
    if (!obj)
        return NULL;
    xml = (JSXML *) JS_GetPrivate(cx, obj);
    if (name) {
        qn = js_NewXMLQName(cx, cx->runtime->emptyString, NULL, name);
        if (!qn)
            return NULL;
        xml->name = qn;
    }
    xml->xml_value = value;
    return obj;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 7558 of file jsxml.c.

{
    jsval nsval;
    JSXMLNamespace *ns;
    JSXMLArray nsarray;
    JSXML *xml;

    if (!js_GetDefaultXMLNamespace(cx, &nsval))
        return NULL;
    JS_ASSERT(!JSVAL_IS_PRIMITIVE(nsval));
    ns = (JSXMLNamespace *) JS_GetPrivate(cx, JSVAL_TO_OBJECT(nsval));

    if (!XMLArrayInit(cx, &nsarray, 1))
        return NULL;

    XMLARRAY_APPEND(cx, &nsarray, ns);
    xml = ParseNodeToXML(cx, pn, &nsarray, XSF_PRECOMPILED_ROOT);
    XMLArrayFinish(cx, &nsarray);
    if (!xml)
        return NULL;

    return xml->object;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 7868 of file jsxml.c.

{
    jsval argv[2];
    JSObject *nsobj, *varobj;
    JSStackFrame *fp;

    argv[0] = STRING_TO_JSVAL(cx->runtime->emptyString);
    argv[1] = v;
    nsobj = js_ConstructObject(cx, &js_NamespaceClass.base, NULL, NULL,
                               2, argv);
    if (!nsobj)
        return JS_FALSE;
    v = OBJECT_TO_JSVAL(nsobj);

    fp = cx->fp;
    varobj = fp->varobj;
    if (varobj) {
        if (!OBJ_DEFINE_PROPERTY(cx, varobj, JS_DEFAULT_XML_NAMESPACE_ID, v,
                                 JS_PropertyStub, JS_PropertyStub,
                                 JSPROP_PERMANENT, NULL)) {
            return JS_FALSE;
        }
    } else {
        JS_ASSERT(fp->fun && !JSFUN_HEAVYWEIGHT_TEST(fp->fun->flags));
    }
    fp->xmlNamespace = JSVAL_TO_OBJECT(v);
    return JS_TRUE;
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSBool js_SetXMLProperty ( JSContext cx,
JSObject obj,
jsval  name,
jsval vp 
)

Definition at line 8154 of file jsxml.c.

{
    return PutProperty(cx, obj, name, vp);
}

Here is the call graph for this function:

Here is the caller graph for this function:

JSBool js_ToAttributeName ( JSContext cx,
jsval vp 
)

Definition at line 7898 of file jsxml.c.

{
    JSXMLQName *qn;

    qn = ToAttributeName(cx, *vp);
    if (!qn)
        return JS_FALSE;
    *vp = OBJECT_TO_JSVAL(qn->object);
    return JS_TRUE;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 8303 of file jsxml.c.

{
    return ToXMLList(cx, v);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 8297 of file jsxml.c.

{
    return ToXML(cx, v);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 7967 of file jsxml.c.

{
    return ToXMLString(cx, v);
}

Here is the call graph for this function:

Here is the caller graph for this function:


Variable Documentation

Definition at line 127 of file jsxml.c.

Definition at line 128 of file jsxml.c.

Definition at line 119 of file jsxml.c.

Definition at line 129 of file jsxml.c.

Definition at line 130 of file jsxml.c.

Definition at line 120 of file jsxml.c.