OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
147 class ObjectTemplate; | 147 class ObjectTemplate; |
148 class Data; | 148 class Data; |
149 class AccessorInfo; | 149 class AccessorInfo; |
150 template<typename T> class PropertyCallbackInfo; | 150 template<typename T> class PropertyCallbackInfo; |
151 class StackTrace; | 151 class StackTrace; |
152 class StackFrame; | 152 class StackFrame; |
153 class Isolate; | 153 class Isolate; |
154 class DeclaredAccessorDescriptor; | 154 class DeclaredAccessorDescriptor; |
155 class ObjectOperationDescriptor; | 155 class ObjectOperationDescriptor; |
156 class RawOperationDescriptor; | 156 class RawOperationDescriptor; |
| 157 class CallHandlerHelper; |
157 | 158 |
158 namespace internal { | 159 namespace internal { |
159 class Arguments; | 160 class Arguments; |
160 class Heap; | 161 class Heap; |
161 class HeapObject; | 162 class HeapObject; |
162 class Isolate; | 163 class Isolate; |
163 class Object; | 164 class Object; |
164 template<typename T> class CustomArguments; | 165 template<typename T> class CustomArguments; |
165 class PropertyCallbackArguments; | 166 class PropertyCallbackArguments; |
166 class FunctionCallbackArguments; | 167 class FunctionCallbackArguments; |
(...skipping 1879 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2046 bool Delete(Handle<Value> key); | 2047 bool Delete(Handle<Value> key); |
2047 | 2048 |
2048 // Delete a property on this object bypassing interceptors and | 2049 // Delete a property on this object bypassing interceptors and |
2049 // ignoring dont-delete attributes. | 2050 // ignoring dont-delete attributes. |
2050 bool ForceDelete(Handle<Value> key); | 2051 bool ForceDelete(Handle<Value> key); |
2051 | 2052 |
2052 bool Has(uint32_t index); | 2053 bool Has(uint32_t index); |
2053 | 2054 |
2054 bool Delete(uint32_t index); | 2055 bool Delete(uint32_t index); |
2055 | 2056 |
2056 // TODO(dcarney): deprecate | 2057 V8_DEPRECATED(bool SetAccessor(Handle<String> name, |
2057 bool SetAccessor(Handle<String> name, | 2058 AccessorGetter getter, |
2058 AccessorGetter getter, | 2059 AccessorSetter setter = 0, |
2059 AccessorSetter setter = 0, | 2060 Handle<Value> data = Handle<Value>(), |
2060 Handle<Value> data = Handle<Value>(), | 2061 AccessControl settings = DEFAULT, |
2061 AccessControl settings = DEFAULT, | 2062 PropertyAttribute attribute = None)); |
2062 PropertyAttribute attribute = None); | |
2063 bool SetAccessor(Handle<String> name, | 2063 bool SetAccessor(Handle<String> name, |
2064 AccessorGetterCallback getter, | 2064 AccessorGetterCallback getter, |
2065 AccessorSetterCallback setter = 0, | 2065 AccessorSetterCallback setter = 0, |
2066 Handle<Value> data = Handle<Value>(), | 2066 Handle<Value> data = Handle<Value>(), |
2067 AccessControl settings = DEFAULT, | 2067 AccessControl settings = DEFAULT, |
2068 PropertyAttribute attribute = None); | 2068 PropertyAttribute attribute = None); |
2069 | 2069 |
2070 // This function is not yet stable and should not be used at this time. | 2070 // This function is not yet stable and should not be used at this time. |
2071 bool SetAccessor(Handle<String> name, | 2071 bool SetAccessor(Handle<String> name, |
2072 Handle<DeclaredAccessorDescriptor> descriptor, | 2072 Handle<DeclaredAccessorDescriptor> descriptor, |
(...skipping 1115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3188 * | 3188 * |
3189 * \code | 3189 * \code |
3190 * child_func.prototype.__proto__ == function.prototype; | 3190 * child_func.prototype.__proto__ == function.prototype; |
3191 * child_instance.instance_accessor calls 'InstanceAccessorCallback' | 3191 * child_instance.instance_accessor calls 'InstanceAccessorCallback' |
3192 * child_instance.instance_property == 3; | 3192 * child_instance.instance_property == 3; |
3193 * \endcode | 3193 * \endcode |
3194 */ | 3194 */ |
3195 class V8EXPORT FunctionTemplate : public Template { | 3195 class V8EXPORT FunctionTemplate : public Template { |
3196 public: | 3196 public: |
3197 /** Creates a function template.*/ | 3197 /** Creates a function template.*/ |
3198 // TODO(dcarney): deprecate | 3198 V8_DEPRECATED(static Local<FunctionTemplate> New( |
| 3199 InvocationCallback callback, |
| 3200 Handle<Value> data = Handle<Value>(), |
| 3201 Handle<Signature> signature = Handle<Signature>(), |
| 3202 int length = 0)); |
3199 static Local<FunctionTemplate> New( | 3203 static Local<FunctionTemplate> New( |
3200 InvocationCallback callback = 0, | 3204 FunctionCallback callback = 0, |
3201 Handle<Value> data = Handle<Value>(), | 3205 Handle<Value> data = Handle<Value>(), |
3202 Handle<Signature> signature = Handle<Signature>(), | 3206 Handle<Signature> signature = Handle<Signature>(), |
3203 int length = 0); | 3207 int length = 0); |
3204 static Local<FunctionTemplate> New( | |
3205 FunctionCallback callback, // TODO(dcarney): add back default param. | |
3206 Handle<Value> data = Handle<Value>(), | |
3207 Handle<Signature> signature = Handle<Signature>(), | |
3208 int length = 0); | |
3209 | 3208 |
3210 /** Returns the unique function instance in the current execution context.*/ | 3209 /** Returns the unique function instance in the current execution context.*/ |
3211 Local<Function> GetFunction(); | 3210 Local<Function> GetFunction(); |
3212 | 3211 |
3213 /** | 3212 /** |
3214 * Set the call-handler callback for a FunctionTemplate. This | 3213 * Set the call-handler callback for a FunctionTemplate. This |
3215 * callback is called whenever the function created from this | 3214 * callback is called whenever the function created from this |
3216 * FunctionTemplate is called. | 3215 * FunctionTemplate is called. |
3217 */ | 3216 */ |
3218 // TODO(dcarney): deprecate | 3217 V8_DEPRECATED(void SetCallHandler(InvocationCallback callback, |
3219 void SetCallHandler(InvocationCallback callback, | 3218 Handle<Value> data = Handle<Value>())); |
3220 Handle<Value> data = Handle<Value>()); | |
3221 void SetCallHandler(FunctionCallback callback, | 3219 void SetCallHandler(FunctionCallback callback, |
3222 Handle<Value> data = Handle<Value>()); | 3220 Handle<Value> data = Handle<Value>()); |
3223 | 3221 |
3224 /** Set the predefined length property for the FunctionTemplate. */ | 3222 /** Set the predefined length property for the FunctionTemplate. */ |
3225 void SetLength(int length); | 3223 void SetLength(int length); |
3226 | 3224 |
3227 /** Get the InstanceTemplate. */ | 3225 /** Get the InstanceTemplate. */ |
3228 Local<ObjectTemplate> InstanceTemplate(); | 3226 Local<ObjectTemplate> InstanceTemplate(); |
3229 | 3227 |
3230 /** Causes the function template to inherit from a parent function template.*/ | 3228 /** Causes the function template to inherit from a parent function template.*/ |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3264 void ReadOnlyPrototype(); | 3262 void ReadOnlyPrototype(); |
3265 | 3263 |
3266 /** | 3264 /** |
3267 * Returns true if the given object is an instance of this function | 3265 * Returns true if the given object is an instance of this function |
3268 * template. | 3266 * template. |
3269 */ | 3267 */ |
3270 bool HasInstance(Handle<Value> object); | 3268 bool HasInstance(Handle<Value> object); |
3271 | 3269 |
3272 private: | 3270 private: |
3273 FunctionTemplate(); | 3271 FunctionTemplate(); |
| 3272 // TODO(dcarney): Remove with SetCallHandler. |
| 3273 friend class v8::CallHandlerHelper; |
| 3274 void SetCallHandlerInternal(InvocationCallback callback, Handle<Value> data); |
3274 friend class Context; | 3275 friend class Context; |
3275 friend class ObjectTemplate; | 3276 friend class ObjectTemplate; |
3276 }; | 3277 }; |
3277 | 3278 |
3278 | 3279 |
3279 /** | 3280 /** |
3280 * An ObjectTemplate is used to create objects at runtime. | 3281 * An ObjectTemplate is used to create objects at runtime. |
3281 * | 3282 * |
3282 * Properties added to an ObjectTemplate are added to each object | 3283 * Properties added to an ObjectTemplate are added to each object |
3283 * created from the ObjectTemplate. | 3284 * created from the ObjectTemplate. |
(...skipping 28 matching lines...) Expand all Loading... |
3312 * The combination ALL_CAN_READ | ALL_CAN_WRITE can be used to allow all | 3313 * The combination ALL_CAN_READ | ALL_CAN_WRITE can be used to allow all |
3313 * cross-context access. | 3314 * cross-context access. |
3314 * \param attribute The attributes of the property for which an accessor | 3315 * \param attribute The attributes of the property for which an accessor |
3315 * is added. | 3316 * is added. |
3316 * \param signature The signature describes valid receivers for the accessor | 3317 * \param signature The signature describes valid receivers for the accessor |
3317 * and is used to perform implicit instance checks against them. If the | 3318 * and is used to perform implicit instance checks against them. If the |
3318 * receiver is incompatible (i.e. is not an instance of the constructor as | 3319 * receiver is incompatible (i.e. is not an instance of the constructor as |
3319 * defined by FunctionTemplate::HasInstance()), an implicit TypeError is | 3320 * defined by FunctionTemplate::HasInstance()), an implicit TypeError is |
3320 * thrown and no callback is invoked. | 3321 * thrown and no callback is invoked. |
3321 */ | 3322 */ |
3322 // TODO(dcarney): deprecate | 3323 V8_DEPRECATED(void SetAccessor(Handle<String> name, |
3323 void SetAccessor(Handle<String> name, | 3324 AccessorGetter getter, |
3324 AccessorGetter getter, | 3325 AccessorSetter setter = 0, |
3325 AccessorSetter setter = 0, | 3326 Handle<Value> data = Handle<Value>(), |
3326 Handle<Value> data = Handle<Value>(), | 3327 AccessControl settings = DEFAULT, |
3327 AccessControl settings = DEFAULT, | 3328 PropertyAttribute attribute = None, |
3328 PropertyAttribute attribute = None, | 3329 Handle<AccessorSignature> signature = |
3329 Handle<AccessorSignature> signature = | 3330 Handle<AccessorSignature>())); |
3330 Handle<AccessorSignature>()); | |
3331 void SetAccessor(Handle<String> name, | 3331 void SetAccessor(Handle<String> name, |
3332 AccessorGetterCallback getter, | 3332 AccessorGetterCallback getter, |
3333 AccessorSetterCallback setter = 0, | 3333 AccessorSetterCallback setter = 0, |
3334 Handle<Value> data = Handle<Value>(), | 3334 Handle<Value> data = Handle<Value>(), |
3335 AccessControl settings = DEFAULT, | 3335 AccessControl settings = DEFAULT, |
3336 PropertyAttribute attribute = None, | 3336 PropertyAttribute attribute = None, |
3337 Handle<AccessorSignature> signature = | 3337 Handle<AccessorSignature> signature = |
3338 Handle<AccessorSignature>()); | 3338 Handle<AccessorSignature>()); |
3339 | 3339 |
3340 // This function is not yet stable and should not be used at this time. | 3340 // This function is not yet stable and should not be used at this time. |
(...skipping 14 matching lines...) Expand all Loading... |
3355 * \param getter The callback to invoke when getting a property. | 3355 * \param getter The callback to invoke when getting a property. |
3356 * \param setter The callback to invoke when setting a property. | 3356 * \param setter The callback to invoke when setting a property. |
3357 * \param query The callback to invoke to check if a property is present, | 3357 * \param query The callback to invoke to check if a property is present, |
3358 * and if present, get its attributes. | 3358 * and if present, get its attributes. |
3359 * \param deleter The callback to invoke when deleting a property. | 3359 * \param deleter The callback to invoke when deleting a property. |
3360 * \param enumerator The callback to invoke to enumerate all the named | 3360 * \param enumerator The callback to invoke to enumerate all the named |
3361 * properties of an object. | 3361 * properties of an object. |
3362 * \param data A piece of data that will be passed to the callbacks | 3362 * \param data A piece of data that will be passed to the callbacks |
3363 * whenever they are invoked. | 3363 * whenever they are invoked. |
3364 */ | 3364 */ |
3365 // TODO(dcarney): deprecate | 3365 V8_DEPRECATED(void SetNamedPropertyHandler( |
3366 void SetNamedPropertyHandler(NamedPropertyGetter getter, | 3366 NamedPropertyGetter getter, |
3367 NamedPropertySetter setter = 0, | 3367 NamedPropertySetter setter = 0, |
3368 NamedPropertyQuery query = 0, | 3368 NamedPropertyQuery query = 0, |
3369 NamedPropertyDeleter deleter = 0, | 3369 NamedPropertyDeleter deleter = 0, |
3370 NamedPropertyEnumerator enumerator = 0, | 3370 NamedPropertyEnumerator enumerator = 0, |
3371 Handle<Value> data = Handle<Value>()); | 3371 Handle<Value> data = Handle<Value>())); |
3372 void SetNamedPropertyHandler( | 3372 void SetNamedPropertyHandler( |
3373 NamedPropertyGetterCallback getter, | 3373 NamedPropertyGetterCallback getter, |
3374 NamedPropertySetterCallback setter = 0, | 3374 NamedPropertySetterCallback setter = 0, |
3375 NamedPropertyQueryCallback query = 0, | 3375 NamedPropertyQueryCallback query = 0, |
3376 NamedPropertyDeleterCallback deleter = 0, | 3376 NamedPropertyDeleterCallback deleter = 0, |
3377 NamedPropertyEnumeratorCallback enumerator = 0, | 3377 NamedPropertyEnumeratorCallback enumerator = 0, |
3378 Handle<Value> data = Handle<Value>()); | 3378 Handle<Value> data = Handle<Value>()); |
3379 | 3379 |
3380 /** | 3380 /** |
3381 * Sets an indexed property handler on the object template. | 3381 * Sets an indexed property handler on the object template. |
3382 * | 3382 * |
3383 * Whenever an indexed property is accessed on objects created from | 3383 * Whenever an indexed property is accessed on objects created from |
3384 * this object template, the provided callback is invoked instead of | 3384 * this object template, the provided callback is invoked instead of |
3385 * accessing the property directly on the JavaScript object. | 3385 * accessing the property directly on the JavaScript object. |
3386 * | 3386 * |
3387 * \param getter The callback to invoke when getting a property. | 3387 * \param getter The callback to invoke when getting a property. |
3388 * \param setter The callback to invoke when setting a property. | 3388 * \param setter The callback to invoke when setting a property. |
3389 * \param query The callback to invoke to check if an object has a property. | 3389 * \param query The callback to invoke to check if an object has a property. |
3390 * \param deleter The callback to invoke when deleting a property. | 3390 * \param deleter The callback to invoke when deleting a property. |
3391 * \param enumerator The callback to invoke to enumerate all the indexed | 3391 * \param enumerator The callback to invoke to enumerate all the indexed |
3392 * properties of an object. | 3392 * properties of an object. |
3393 * \param data A piece of data that will be passed to the callbacks | 3393 * \param data A piece of data that will be passed to the callbacks |
3394 * whenever they are invoked. | 3394 * whenever they are invoked. |
3395 */ | 3395 */ |
3396 // TODO(dcarney): deprecate | 3396 V8_DEPRECATED(void SetIndexedPropertyHandler( |
3397 void SetIndexedPropertyHandler(IndexedPropertyGetter getter, | 3397 IndexedPropertyGetter getter, |
3398 IndexedPropertySetter setter = 0, | 3398 IndexedPropertySetter setter = 0, |
3399 IndexedPropertyQuery query = 0, | 3399 IndexedPropertyQuery query = 0, |
3400 IndexedPropertyDeleter deleter = 0, | 3400 IndexedPropertyDeleter deleter = 0, |
3401 IndexedPropertyEnumerator enumerator = 0, | 3401 IndexedPropertyEnumerator enumerator = 0, |
3402 Handle<Value> data = Handle<Value>()); | 3402 Handle<Value> data = Handle<Value>())); |
3403 void SetIndexedPropertyHandler( | 3403 void SetIndexedPropertyHandler( |
3404 IndexedPropertyGetterCallback getter, | 3404 IndexedPropertyGetterCallback getter, |
3405 IndexedPropertySetterCallback setter = 0, | 3405 IndexedPropertySetterCallback setter = 0, |
3406 IndexedPropertyQueryCallback query = 0, | 3406 IndexedPropertyQueryCallback query = 0, |
3407 IndexedPropertyDeleterCallback deleter = 0, | 3407 IndexedPropertyDeleterCallback deleter = 0, |
3408 IndexedPropertyEnumeratorCallback enumerator = 0, | 3408 IndexedPropertyEnumeratorCallback enumerator = 0, |
3409 Handle<Value> data = Handle<Value>()); | 3409 Handle<Value> data = Handle<Value>()); |
3410 | 3410 |
3411 /** | 3411 /** |
3412 * Sets the callback to be used when calling instances created from | 3412 * Sets the callback to be used when calling instances created from |
3413 * this template as a function. If no callback is set, instances | 3413 * this template as a function. If no callback is set, instances |
3414 * behave like normal JavaScript objects that cannot be called as a | 3414 * behave like normal JavaScript objects that cannot be called as a |
3415 * function. | 3415 * function. |
3416 */ | 3416 */ |
3417 // TODO(dcarney): deprecate | 3417 V8_DEPRECATED(void SetCallAsFunctionHandler( |
3418 void SetCallAsFunctionHandler(InvocationCallback callback, | 3418 InvocationCallback callback, |
3419 Handle<Value> data = Handle<Value>()); | 3419 Handle<Value> data = Handle<Value>())); |
3420 void SetCallAsFunctionHandler(FunctionCallback callback, | 3420 void SetCallAsFunctionHandler(FunctionCallback callback, |
3421 Handle<Value> data = Handle<Value>()); | 3421 Handle<Value> data = Handle<Value>()); |
3422 | 3422 |
3423 /** | 3423 /** |
3424 * Mark object instances of the template as undetectable. | 3424 * Mark object instances of the template as undetectable. |
3425 * | 3425 * |
3426 * In many ways, undetectable objects behave as though they are not | 3426 * In many ways, undetectable objects behave as though they are not |
3427 * there. They behave like 'undefined' in conditionals and when | 3427 * there. They behave like 'undefined' in conditionals and when |
3428 * printed. However, properties can be accessed and called as on | 3428 * printed. However, properties can be accessed and called as on |
3429 * normal objects. | 3429 * normal objects. |
(...skipping 2935 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6365 | 6365 |
6366 | 6366 |
6367 } // namespace v8 | 6367 } // namespace v8 |
6368 | 6368 |
6369 | 6369 |
6370 #undef V8EXPORT | 6370 #undef V8EXPORT |
6371 #undef TYPE_CHECK | 6371 #undef TYPE_CHECK |
6372 | 6372 |
6373 | 6373 |
6374 #endif // V8_H_ | 6374 #endif // V8_H_ |
OLD | NEW |