| Index: include/AdblockPlus/JsEngine.h |
| =================================================================== |
| --- a/include/AdblockPlus/JsEngine.h |
| +++ b/include/AdblockPlus/JsEngine.h |
| @@ -1,38 +1,65 @@ |
| #ifndef ADBLOCKPLUS_JS_ENGINE_H |
| #define ADBLOCKPLUS_JS_ENGINE_H |
| #include <stdexcept> |
| #include <string> |
| #include <v8.h> |
| +#include <AdblockPlus/JsValue.h> |
| namespace AdblockPlus |
| { |
| class ErrorCallback; |
| class FileReader; |
| class WebRequest; |
| class JsError : public std::runtime_error |
| { |
| public: |
| explicit JsError(const v8::Handle<v8::Value> exception, |
| const v8::Handle<v8::Message> message); |
| }; |
| class JsEngine |
| { |
| + friend class JsValue; |
| + |
| public: |
| JsEngine(const FileReader* const fileReader, |
| WebRequest* const webRequest, |
| ErrorCallback* const errorCallback); |
| - std::string Evaluate(const std::string& source, |
| + JsValuePtr Evaluate(const std::string& source, |
| const std::string& filename = ""); |
| void Load(const std::string& scriptPath); |
| void Gc(); |
| + JsValuePtr NewValue(const std::string& val); |
| + JsValuePtr NewValue(int64_t val); |
| + JsValuePtr NewValue(bool val); |
| + inline JsValuePtr NewValue(const char* val) |
| + { |
| + return NewValue(std::string(val)); |
| + } |
| + inline JsValuePtr NewValue(int val) |
| + { |
| + return NewValue((int64_t)val); |
|
Felix Dahlke
2013/04/16 15:14:33
I'd prefer static_cast here, C-style casts are les
|
| + } |
| + |
| + class Context |
| + { |
| + public: |
| + Context(const JsEngine& jsEngine); |
| + virtual inline ~Context() {}; |
| + |
| + private: |
| + const v8::Locker locker; |
| + const v8::HandleScope handleScope; |
| + const v8::Context::Scope contextScope; |
| + }; |
| private: |
| const FileReader* const fileReader; |
| + v8::Isolate* isolate; |
| v8::Persistent<v8::Context> context; |
| }; |
| } |
| #endif |