18#ifndef INCLUDED_INTERFACE_SCRIPTED 
   19#define INCLUDED_INTERFACE_SCRIPTED 
   25#define BEGIN_INTERFACE_WRAPPER(iname) \ 
   26    JSClass class_ICmp##iname = { \ 
   27        "ICmp" #iname, JSCLASS_HAS_PRIVATE \
 
   29    static JSFunctionSpec methods_ICmp##iname[] = {
 
   31#define END_INTERFACE_WRAPPER(iname) \ 
   34    void ICmp##iname::InterfaceInit(ScriptInterface& scriptInterface) { \ 
   35        scriptInterface.DefineCustomObjectType(&class_ICmp##iname, NULL, 0, NULL, methods_ICmp##iname, NULL, NULL); \ 
   37    bool ICmp##iname::NewJSObject(const ScriptInterface& scriptInterface, JS::MutableHandleObject out) const\ 
   39        out.set(scriptInterface.CreateCustomObject("ICmp" #iname)); \
 
   42    void RegisterComponentInterface_##iname(ScriptInterface& scriptInterface) { \
 
   43        ICmp##iname::InterfaceInit(scriptInterface); \
 
   46template <
typename T, JSClass* jsClass>
 
   49    return ScriptInterface::GetPrivate<T>(rq, args, jsClass);
 
   52#define DEFINE_INTERFACE_METHOD(scriptname, classname, methodname) \ 
   53    ScriptFunction::Wrap<&classname::methodname, ComponentGetter<classname, &class_##classname>>(scriptname), 
T * ComponentGetter(const ScriptRequest &rq, JS::CallArgs &args)
Definition: InterfaceScripted.h:47
Spidermonkey maintains some 'local' state via the JSContext* object.
Definition: ScriptRequest.h:60
#define T(string_literal)
Definition: secure_crt.cpp:77