| Index: include/v8.h
|
| diff --git a/include/v8.h b/include/v8.h
|
| index 02abb4cb0f818fee0a3bbf5b5b85960b002cc3a6..05dc527ada565f94ffa93f2658ac5ed1e1ea6619 100644
|
| --- a/include/v8.h
|
| +++ b/include/v8.h
|
| @@ -1726,13 +1726,22 @@ typedef Handle<Value> (*NamedPropertySetter)(Local<String> property,
|
| Local<Value> value,
|
| const AccessorInfo& info);
|
|
|
| -
|
| /**
|
| * Returns a non-empty handle if the interceptor intercepts the request.
|
| - * The result is true if the property exists and false otherwise.
|
| + * The result is either boolean (true if property exists and false
|
| + * otherwise) or an integer encoding property attributes.
|
| */
|
| +#ifdef USE_NEW_QUERY_CALLBACKS
|
| +typedef Handle<Integer> (*NamedPropertyQuery)(Local<String> property,
|
| + const AccessorInfo& info);
|
| +#else
|
| typedef Handle<Boolean> (*NamedPropertyQuery)(Local<String> property,
|
| const AccessorInfo& info);
|
| +#endif
|
| +
|
| +typedef Handle<Value> (*NamedPropertyQueryImpl)(Local<String> property,
|
| + const AccessorInfo& info);
|
| +
|
|
|
|
|
| /**
|
| @@ -1984,7 +1993,16 @@ class V8EXPORT FunctionTemplate : public Template {
|
| NamedPropertyQuery query,
|
| NamedPropertyDeleter remover,
|
| NamedPropertyEnumerator enumerator,
|
| - Handle<Value> data);
|
| + Handle<Value> data) {
|
| + NamedPropertyQueryImpl casted =
|
| + reinterpret_cast<NamedPropertyQueryImpl>(query);
|
| + SetNamedInstancePropertyHandlerImpl(getter,
|
| + setter,
|
| + casted,
|
| + remover,
|
| + enumerator,
|
| + data);
|
| + }
|
| void SetIndexedInstancePropertyHandler(IndexedPropertyGetter getter,
|
| IndexedPropertySetter setter,
|
| IndexedPropertyQuery query,
|
| @@ -1996,6 +2014,13 @@ class V8EXPORT FunctionTemplate : public Template {
|
|
|
| friend class Context;
|
| friend class ObjectTemplate;
|
| + private:
|
| + void SetNamedInstancePropertyHandlerImpl(NamedPropertyGetter getter,
|
| + NamedPropertySetter setter,
|
| + NamedPropertyQueryImpl query,
|
| + NamedPropertyDeleter remover,
|
| + NamedPropertyEnumerator enumerator,
|
| + Handle<Value> data);
|
| };
|
|
|
|
|
| @@ -2053,7 +2078,7 @@ class V8EXPORT ObjectTemplate : public Template {
|
| *
|
| * \param getter The callback to invoke when getting a property.
|
| * \param setter The callback to invoke when setting a property.
|
| - * \param query The callback to invoke to check is an object has a property.
|
| + * \param query The callback to invoke to check if an object has a property.
|
| * \param deleter The callback to invoke when deleting a property.
|
| * \param enumerator The callback to invoke to enumerate all the named
|
| * properties of an object.
|
| @@ -2065,7 +2090,26 @@ class V8EXPORT ObjectTemplate : public Template {
|
| NamedPropertyQuery query = 0,
|
| NamedPropertyDeleter deleter = 0,
|
| NamedPropertyEnumerator enumerator = 0,
|
| - Handle<Value> data = Handle<Value>());
|
| + Handle<Value> data = Handle<Value>()) {
|
| + NamedPropertyQueryImpl casted =
|
| + reinterpret_cast<NamedPropertyQueryImpl>(query);
|
| + SetNamedPropertyHandlerImpl(getter,
|
| + setter,
|
| + casted,
|
| + deleter,
|
| + enumerator,
|
| + data);
|
| + }
|
| +
|
| + private:
|
| + void SetNamedPropertyHandlerImpl(NamedPropertyGetter getter,
|
| + NamedPropertySetter setter,
|
| + NamedPropertyQueryImpl query,
|
| + NamedPropertyDeleter deleter,
|
| + NamedPropertyEnumerator enumerator,
|
| + Handle<Value> data);
|
| +
|
| + public:
|
|
|
| /**
|
| * Sets an indexed property handler on the object template.
|
|
|