Index: include/AdblockPlus/JsValue.h |
=================================================================== |
--- a/include/AdblockPlus/JsValue.h |
+++ b/include/AdblockPlus/JsValue.h |
@@ -1,11 +1,11 @@ |
/* |
* This file is part of Adblock Plus <https://adblockplus.org/>, |
- * Copyright (C) 2006-2015 Eyeo GmbH |
+ * Copyright (C) 2006-2016 Eyeo GmbH |
* |
* Adblock Plus is free software: you can redistribute it and/or modify |
* it under the terms of the GNU General Public License version 3 as |
* published by the Free Software Foundation. |
* |
* Adblock Plus is distributed in the hope that it will be useful, |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
@@ -17,23 +17,23 @@ |
#ifndef ADBLOCK_PLUS_JS_VALUE_H |
#define ADBLOCK_PLUS_JS_VALUE_H |
#include <stdint.h> |
#include <string> |
#include <vector> |
#include <memory> |
-#include "V8ValueHolder.h" |
namespace v8 |
{ |
class Value; |
template<class T> class Handle; |
template<class T> class Local; |
+ template<class T> class Persistent; |
} |
namespace AdblockPlus |
{ |
class JsValue; |
class JsEngine; |
typedef std::shared_ptr<JsEngine> JsEnginePtr; |
@@ -51,16 +51,17 @@ namespace AdblockPlus |
/** |
* Wrapper for JavaScript values. |
* See `JsEngine` for creating `JsValue` objects. |
*/ |
class JsValue |
{ |
friend class JsEngine; |
public: |
+ JsValue(JsValue&& src); |
virtual ~JsValue(); |
bool IsUndefined() const; |
bool IsNull() const; |
bool IsString() const; |
bool IsNumber() const; |
bool IsBool() const; |
bool IsObject() const; |
@@ -118,20 +119,27 @@ namespace AdblockPlus |
* Invokes the value as a function (see `IsFunction()`). |
* @param params Optional list of parameters. |
* @param thisPtr Optional `this` value. |
* @return Value returned by the function. |
*/ |
JsValuePtr Call(const JsValueList& params = JsValueList(), |
AdblockPlus::JsValuePtr thisPtr = AdblockPlus::JsValuePtr()) const; |
+ /** |
+ * Invokes the value as a function (see `IsFunction()`) with single |
+ * parameter. |
+ * @param arg A single required parameter. |
+ * @return Value returned by the function. |
+ */ |
+ JsValuePtr Call(const JsValue& arg) const; |
+ |
v8::Local<v8::Value> UnwrapValue() const; |
protected: |
- JsValue(JsValuePtr value); |
JsEnginePtr jsEngine; |
private: |
JsValue(JsEnginePtr jsEngine, v8::Handle<v8::Value> value); |
void SetProperty(const std::string& name, v8::Handle<v8::Value> val); |
- V8ValueHolder<v8::Value> value; |
+ std::unique_ptr<v8::Persistent<v8::Value>> value; |
}; |
} |
#endif |