Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: include/AdblockPlus/JsEngine.h

Issue 10213003: Make JsEngine::Evaluate() return a wrapper for v8::Value to accessdifferent variable types easily (Closed)
Patch Set: Added tests, resolved type conversion ambiguities, implemented some missing API calls Created April 15, 2013, 6:23 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 #ifndef ADBLOCKPLUS_JS_ENGINE_H 1 #ifndef ADBLOCKPLUS_JS_ENGINE_H
2 #define ADBLOCKPLUS_JS_ENGINE_H 2 #define ADBLOCKPLUS_JS_ENGINE_H
3 3
4 #include <stdexcept> 4 #include <stdexcept>
5 #include <string> 5 #include <string>
6 #include <v8.h> 6 #include <v8.h>
7 #include <AdblockPlus/JsValue.h>
7 8
8 namespace AdblockPlus 9 namespace AdblockPlus
9 { 10 {
10 class ErrorCallback; 11 class ErrorCallback;
11 class FileReader; 12 class FileReader;
12 class WebRequest; 13 class WebRequest;
13 14
14 class JsError : public std::runtime_error 15 class JsError : public std::runtime_error
15 { 16 {
16 public: 17 public:
17 explicit JsError(const v8::Handle<v8::Value> exception, 18 explicit JsError(const v8::Handle<v8::Value> exception,
18 const v8::Handle<v8::Message> message); 19 const v8::Handle<v8::Message> message);
19 }; 20 };
20 21
21 class JsEngine 22 class JsEngine
22 { 23 {
24 friend class JsValue;
25
23 public: 26 public:
24 JsEngine(const FileReader* const fileReader, 27 JsEngine(const FileReader* const fileReader,
25 WebRequest* const webRequest, 28 WebRequest* const webRequest,
26 ErrorCallback* const errorCallback); 29 ErrorCallback* const errorCallback);
27 std::string Evaluate(const std::string& source, 30 JsValuePtr Evaluate(const std::string& source,
28 const std::string& filename = ""); 31 const std::string& filename = "");
29 void Load(const std::string& scriptPath); 32 void Load(const std::string& scriptPath);
30 void Gc(); 33 void Gc();
34 JsValuePtr NewValue(const std::string& val);
35 JsValuePtr NewValue(int64_t val);
36 JsValuePtr NewValue(bool val);
37 inline JsValuePtr NewValue(const char* val)
38 {
39 return NewValue(std::string(val));
40 }
41 inline JsValuePtr NewValue(int val)
42 {
43 return NewValue((int64_t)val);
Felix Dahlke 2013/04/16 15:14:33 I'd prefer static_cast here, C-style casts are les
44 }
45
46 class Context
47 {
48 public:
49 Context(const JsEngine& jsEngine);
50 virtual inline ~Context() {};
51
52 private:
53 const v8::Locker locker;
54 const v8::HandleScope handleScope;
55 const v8::Context::Scope contextScope;
56 };
31 57
32 private: 58 private:
33 const FileReader* const fileReader; 59 const FileReader* const fileReader;
60 v8::Isolate* isolate;
34 v8::Persistent<v8::Context> context; 61 v8::Persistent<v8::Context> context;
35 }; 62 };
36 } 63 }
37 64
38 #endif 65 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld