typedef union jsval_layout { unsigned long int asBits; } jsval_layout; static jsval_layout STRING_TO_JSVAL_IMPL(void * str) { } typedef __attribute__ ((aligned(8))) unsigned long int jsval; typedef struct JSLinearString JSLinearString; namespace js {} using namespace js; namespace js { class Value { public:void setString() { data = STRING_TO_JSVAL_IMPL(0); } jsval_layout data; } __attribute__ ((aligned(8))); static Value StringValue() { Value v; v.setString(); return v; } static const jsval & Jsvalify(const Value & v) { return (const jsval &)v; } static Value *Valueify(jsval * v) { return (Value *) v; } struct Class { }; namespace gc { struct Cell { }; }} struct JSObject:js::gc:: Cell { Class * getClass() const { } inline JSLinearString *getQNameLocalName() const; }; namespace js { static Value IdToValue(long int id) { if (id) return StringValue(); } static jsval IdToJsval(long int id) { return Jsvalify(IdToValue(id)); } } inline int js_IdIsIndex(long int id, unsigned int * indexp) { } namespace js { class AutoGCRooter; } struct JSContext { AutoGCRooter * autoGCRooters; }; namespace js { class AutoGCRooter { public:AutoGCRooter(JSContext * cx, long int tag):down(cx->autoGCRooters), tag(tag), context(cx) { cx->autoGCRooters = this; } protected:AutoGCRooter * const down; long int tag; JSContext *const context; }; class AutoArrayRooter:private AutoGCRooter { public:AutoArrayRooter(JSContext * cx, long unsigned int len, Value * vec):AutoGCRooter(cx, len), array(vec) { } Value *array; private:}; } typedef enum JSXMLClass { JSXML_CLASS_ATTRIBUTE } JSXMLElemVar; struct JSXML:js:: gc:: Cell { unsigned int xml_class; }; Class js_AttributeNameClass; static JSObject *NewXMLAttributeName(JSLinearString * localName) { } static void PutProperty(JSContext * cx, long int id, jsval * vp) { JSObject *nameobj; jsval roots[3]; roots[1] = IdToJsval(id); roots[2] = *vp; AutoArrayRooter tvr(cx, 0, Valueify(roots)); NewXMLAttributeName(nameobj-> getQNameLocalName()); } void xml_defineProperty( JSContext * cx, long int id, const Value * v) { jsval tmp = Jsvalify(*v); PutProperty(cx, id, &tmp); }