#ifndef node_script_h #define node_script_h #include #include #include #include namespace node { class Context : ObjectWrap { public: static void Initialize (v8::Handle target); static v8::Handle New (const v8::Arguments& args); v8::Persistent GetV8Context(); static v8::Local NewInstance(); protected: static v8::Persistent constructor_template; Context (); ~Context(); v8::Persistent context_; }; class Script : ObjectWrap { public: static void Initialize (v8::Handle target); enum EvalInputFlags { compileCode, unwrapExternal }; enum EvalContextFlags { thisContext, newContext, userContext }; enum EvalOutputFlags { returnResult, wrapExternal }; template static v8::Handle EvalMachine(const v8::Arguments& args); protected: static v8::Persistent constructor_template; Script () : ObjectWrap () {} ~Script(); static v8::Handle New (const v8::Arguments& args); static v8::Handle CreateContext (const v8::Arguments& arg); static v8::Handle RunInContext (const v8::Arguments& args); static v8::Handle RunInThisContext (const v8::Arguments& args); static v8::Handle RunInNewContext (const v8::Arguments& args); static v8::Handle CompileRunInContext (const v8::Arguments& args); static v8::Handle CompileRunInThisContext (const v8::Arguments& args); static v8::Handle CompileRunInNewContext (const v8::Arguments& args); v8::Persistent script_; }; void InitEvals(v8::Handle target); } // namespace node #endif // node_script_h