| typedef struct JSObject JSObject; |
| typedef struct JSObjectMap *(*JSNewObjectMapOp) (JSObject *obj); |
| typedef JSObject *(*JSGetMethodOp) (JSObject *obj); |
| struct JSObjectOps { |
| JSNewObjectMapOp newObjectMap; |
| }; |
| struct JSXMLObjectOps { |
| struct JSObjectOps base; |
| JSGetMethodOp getMethod; |
| }; |
| struct JSObjectMap { |
| struct JSObjectOps *ops; |
| }; |
| struct JSObject { |
| struct JSObjectMap *map; |
| }; |
| |
| struct JSXMLObjectOps js_XMLObjectOps; |
| |
| |
| /* We need to create SFT's for the entire structure when this address is taken, |
| not just the part in the component reference itself. */ |
| JSObject *JS_GetMethod(JSObject *obj) |
| { |
| if (obj->map->ops == &js_XMLObjectOps.base) { |
| struct JSXMLObjectOps *ops; |
| ops = (struct JSXMLObjectOps *) obj->map->ops; |
| obj = ops->getMethod(obj); |
| } |
| return obj; |
| } |