1 typedef struct JSObject JSObject; 2 typedef struct JSObjectMap *(*JSNewObjectMapOp) (JSObject *obj); 3 typedef JSObject *(*JSGetMethodOp) (JSObject *obj); 4 struct JSObjectOps { 5 JSNewObjectMapOp newObjectMap; 6 }; 7 struct JSXMLObjectOps { 8 struct JSObjectOps base; 9 JSGetMethodOp getMethod; 10 }; 11 struct JSObjectMap { 12 struct JSObjectOps *ops; 13 }; 14 struct JSObject { 15 struct JSObjectMap *map; 16 }; 17 18 struct JSXMLObjectOps js_XMLObjectOps; 19 20 21 /* We need to create SFT's for the entire structure when this address is taken, 22 not just the part in the component reference itself. */ JS_GetMethod(JSObject * obj)23JSObject *JS_GetMethod(JSObject *obj) 24 { 25 if (obj->map->ops == &js_XMLObjectOps.base) { 26 struct JSXMLObjectOps *ops; 27 ops = (struct JSXMLObjectOps *) obj->map->ops; 28 obj = ops->getMethod(obj); 29 } 30 return obj; 31 } 32