typedef long unsigned int size_t; typedef long int ptrdiff_t; typedef unsigned int uint32_t; typedef unsigned long int uint64_t; typedef uint32_t JSUint32; typedef uint64_t JSUint64; typedef int JSIntn; typedef JSIntn JSBool; typedef JSUint64 uint64; typedef JSUint32 uint32; extern "C" { typedef struct JSString JSString; typedef union jsval_layout { uint64 asBits; } jsval_layout; static jsval_layout STRING_TO_JSVAL_IMPL(JSString * str) { } typedef __attribute__ ((aligned(8))) uint64 jsval; typedef ptrdiff_t jsid; typedef JSUint32 jsuint; typedef enum JSType { JSTYPE_LIMIT } JSType; static JSBool JSID_IS_STRING(jsid iden) { } static JSString *JSID_TO_STRING(jsid iden) { } typedef struct JSLinearString JSLinearString; } namespace js { class Value { public: void setString(JSString * str) { data = STRING_TO_JSVAL_IMPL(str); } jsval_layout data; } __attribute__ ((aligned(8))); static Value StringValue(JSString * str) { Value v; v.setString(str); return v; } static inline const jsval & Jsvalify(const Value & v) { return (const jsval &)v; } static inline Value *Valueify(jsval * v) { return (Value *) v; } struct Class { }; namespace gc { struct Cell { }; }} struct JSObject:js::gc::Cell { js::Class * getClass() const { } inline JSLinearString *getNamePrefix() const; inline JSLinearString *getNameURI() const; inline JSLinearString *getQNameLocalName() const; }; namespace js { static Value IdToValue(jsid id) { if (JSID_IS_STRING(id)) return StringValue(JSID_TO_STRING(id)); } static jsval IdToJsval(jsid id) { return Jsvalify(IdToValue(id)); } } inline JSBool js_IdIsIndex(jsid id, jsuint * indexp) { } namespace js { class AutoGCRooter; } struct JSContext { js::AutoGCRooter * autoGCRooters; }; namespace js { class AutoGCRooter { public:AutoGCRooter(JSContext * cx, ptrdiff_t tag):down(cx->autoGCRooters), tag(tag), context(cx) { cx->autoGCRooters = this; } protected:AutoGCRooter * const down; ptrdiff_t tag; JSContext *const context; }; class AutoArrayRooter:private AutoGCRooter { public:AutoArrayRooter(JSContext * cx, size_t len, Value * vec):AutoGCRooter(cx, len), array(vec) { } Value *array; private:}; } typedef enum JSXMLClass { JSXML_CLASS_ATTRIBUTE } JSXMLElemVar; struct JSXML:js::gc::Cell { uint32 xml_class; }; using namespace js; Class js_AttributeNameClass; static JSObject *NewXMLAttributeName( JSLinearString * localName) { } static JSBool PutProperty(JSContext * cx, JSObject * obj, jsid id, JSBool strict, jsval * vp) { enum { OBJ_ROOT, ID_ROOT, VAL_ROOT }; JSXML *xml; JSXML *vxml; JSXML *rxml; JSXML *kid; JSXML *attr; JSXML *parent; JSXML *copy; JSXML *kid2; JSXML *match; JSObject *vobj; JSObject *nameobj; JSObject *attrobj; JSObject *parentobj; JSObject *kidobj; JSObject *copyobj; uint32 index; uint32 i; uint32 j; uint32 k; uint32 n; uint32 q; uint32 matchIndex; jsval roots[3]; roots[ID_ROOT] = IdToJsval(id); roots[VAL_ROOT] = *vp; AutoArrayRooter tvr(cx, 0, Valueify(roots)); if (js_IdIsIndex(id, &index)) { if (kid->xml_class == JSXML_CLASS_ATTRIBUTE) { if (nameobj->getClass() != &js_AttributeNameClass) { nameobj = NewXMLAttributeName( nameobj-> getQNameLocalName()); } } } } JSBool xml_defineProperty(JSContext * cx, JSObject * obj, jsid id, const Value * v) { jsval tmp = Jsvalify(*v); return PutProperty( cx, obj, id, false, &tmp); }