| Index: include/AdblockPlus/JsValue.h |
| =================================================================== |
| --- a/include/AdblockPlus/JsValue.h |
| +++ b/include/AdblockPlus/JsValue.h |
| @@ -35,10 +35,22 @@ |
| class JsValue; |
| class JsEngine; |
| - typedef std::tr1::shared_ptr<JsValue> JsValuePtr; |
| - typedef std::vector<AdblockPlus::JsValuePtr> JsValueList; |
| typedef std::tr1::shared_ptr<JsEngine> JsEnginePtr; |
| + /** |
| + * Shared smart pointer to a `JsValue` instance. |
| + */ |
| + typedef std::tr1::shared_ptr<JsValue> JsValuePtr; |
| + |
| + /** |
| + * List of JavaScript values. |
| + */ |
| + typedef std::vector<AdblockPlus::JsValuePtr> JsValueList; |
| + |
| + /** |
| + * Wrapper for JavaScript values. |
| + * See `JsEngine` for creating `JsValue` objects. |
| + */ |
| class JsValue |
| { |
| friend class JsEngine; |
| @@ -58,8 +70,27 @@ |
| int64_t AsInt() const; |
| bool AsBool() const; |
| JsValueList AsList() const; |
| + |
| + /** |
| + * Returns a list of property names if this is an object (see `IsObject()`). |
| + * @return List of property names. |
| + */ |
| std::vector<std::string> GetOwnPropertyNames() const; |
| + |
| + /** |
| + * Returns a property value if this is an object (see `IsObject()`). |
| + * @param name Property name. |
| + * @return Property value, undefined (see `IsUndefined()`) if the property |
| + * does not exist. |
| + */ |
| JsValuePtr GetProperty(const std::string& name) const; |
| + |
| + //@{ |
| + /** |
| + * Sets a property value if this is an object (see `IsObject()`). |
| + * @param name Property name. |
| + * @param val Property value. |
| + */ |
| 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); |
| @@ -72,9 +103,26 @@ |
| { |
| SetProperty(name, static_cast<int64_t>(val)); |
| } |
| + //@} |
| + |
| + /** |
| + * Returns the value's class name, e.g.\ _Array_ for arrays |
| + * (see `IsArray()`). |
| + * Technically, this is the name of the function that was used as a |
| + * constructor. |
| + * @return Class name of the value. |
| + */ |
| std::string GetClass() const; |
| + |
| + /** |
| + * 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; |
| + |
| protected: |
| JsValue(JsEnginePtr jsEngine, v8::Handle<v8::Value> value); |
| void SetProperty(const std::string& name, v8::Handle<v8::Value> val); |