Index: include/AdblockPlus/JsValue.h |
=================================================================== |
--- a/include/AdblockPlus/JsValue.h |
+++ b/include/AdblockPlus/JsValue.h |
@@ -28,6 +28,7 @@ |
{ |
class Value; |
template<class T> class Handle; |
+ template<class T> class Local; |
} |
namespace AdblockPlus |
@@ -53,9 +54,22 @@ |
*/ |
class JsValue |
{ |
- friend class JsEngine; |
public: |
- JsValue(JsValuePtr value); |
+ struct Private |
+ { |
+ private: |
+ // allow access to the ctr only JsEngine and don't allow JsEngine to access other members. |
+ friend class JsEngine; |
+ friend class JsValue; |
+ struct CtrArg |
+ { |
+ }; |
+ }; |
+ protected: |
+ typedef Private::CtrArg PrivateCtrArg; |
+ JsValue(const JsValuePtr& value); |
+ public: |
+ JsValue(const JsEnginePtr& jsEngine, const v8::Handle<v8::Value> value, PrivateCtrArg); |
virtual ~JsValue(); |
bool IsUndefined() const; |
@@ -94,7 +108,7 @@ |
void SetProperty(const std::string& name, const std::string& val); |
void SetProperty(const std::string& name, int64_t val); |
void SetProperty(const std::string& name, bool val); |
- void SetProperty(const std::string& name, JsValuePtr value); |
+ void SetProperty(const std::string& name, const JsValuePtr& value); |
inline void SetProperty(const std::string& name, const char* val) |
{ |
SetProperty(name, std::string(val)); |
@@ -123,11 +137,12 @@ |
JsValuePtr Call(const JsValueList& params = JsValueList(), |
AdblockPlus::JsValuePtr thisPtr = AdblockPlus::JsValuePtr()) const; |
+ v8::Local<v8::Value> unwrapValue() const; |
+ private: |
+ void SetProperty(const std::string& name, const v8::Handle<v8::Value> val); |
protected: |
- JsValue(JsEnginePtr jsEngine, v8::Handle<v8::Value> value); |
- void SetProperty(const std::string& name, v8::Handle<v8::Value> val); |
- |
JsEnginePtr jsEngine; |
+ private: |
V8ValueHolder<v8::Value> value; |
}; |
} |