| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** \mainpage V8 API Reference Guide | 5 /** \mainpage V8 API Reference Guide |
| 6 * | 6 * |
| 7 * V8 is Google's open source JavaScript engine. | 7 * V8 is Google's open source JavaScript engine. |
| 8 * | 8 * |
| 9 * This set of documents provides reference material generated from the | 9 * This set of documents provides reference material generated from the |
| 10 * V8 header file, include/v8.h. | 10 * V8 header file, include/v8.h. |
| (...skipping 4612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4623 * env->Global() | 4623 * env->Global() |
| 4624 * ->Set(env.local(), v8_str("obj"), templ->GetFunction(env.local()) | 4624 * ->Set(env.local(), v8_str("obj"), templ->GetFunction(env.local()) |
| 4625 * .ToLocalChecked() | 4625 * .ToLocalChecked() |
| 4626 * ->NewInstance(env.local()) | 4626 * ->NewInstance(env.local()) |
| 4627 * .ToLocalChecked()) | 4627 * .ToLocalChecked()) |
| 4628 * .FromJust(); | 4628 * .FromJust(); |
| 4629 * v8::Local<v8::Value> result = CompileRun("obj.a = 17; obj.a"); | 4629 * v8::Local<v8::Value> result = CompileRun("obj.a = 17; obj.a"); |
| 4630 * CHECK(v8_num(42)->Equals(env.local(), result).FromJust()); | 4630 * CHECK(v8_num(42)->Equals(env.local(), result).FromJust()); |
| 4631 * \endcode | 4631 * \endcode |
| 4632 * | 4632 * |
| 4633 * See also `ObjectTemplate::SetNamedPropertyHandler`. | 4633 * See also `ObjectTemplate::SetHandler`. |
| 4634 */ | 4634 */ |
| 4635 typedef void (*GenericNamedPropertyGetterCallback)( | 4635 typedef void (*GenericNamedPropertyGetterCallback)( |
| 4636 Local<Name> property, const PropertyCallbackInfo<Value>& info); | 4636 Local<Name> property, const PropertyCallbackInfo<Value>& info); |
| 4637 | 4637 |
| 4638 /** | 4638 /** |
| 4639 * Interceptor for set requests on an object. | 4639 * Interceptor for set requests on an object. |
| 4640 * | 4640 * |
| 4641 * Use `info.GetReturnValue()` to indicate whether the request was intercepted | 4641 * Use `info.GetReturnValue()` to indicate whether the request was intercepted |
| 4642 * or not. If the setter successfully intercepts the request, i.e., if the | 4642 * or not. If the setter successfully intercepts the request, i.e., if the |
| 4643 * request should not be further executed, call | 4643 * request should not be further executed, call |
| 4644 * `info.GetReturnValue().Set(value)`. If the setter | 4644 * `info.GetReturnValue().Set(value)`. If the setter |
| 4645 * did not intercept the request, i.e., if the request should be handled as | 4645 * did not intercept the request, i.e., if the request should be handled as |
| 4646 * if no interceptor is present, do not not call `Set()`. | 4646 * if no interceptor is present, do not not call `Set()`. |
| 4647 * | 4647 * |
| 4648 * \param property The name of the property for which the request was | 4648 * \param property The name of the property for which the request was |
| 4649 * intercepted. | 4649 * intercepted. |
| 4650 * \param value The value which the property will have if the request | 4650 * \param value The value which the property will have if the request |
| 4651 * is not intercepted. | 4651 * is not intercepted. |
| 4652 * \param info Information about the intercepted request, such as | 4652 * \param info Information about the intercepted request, such as |
| 4653 * isolate, receiver, return value, or whether running in `'use strict'` mode. | 4653 * isolate, receiver, return value, or whether running in `'use strict'` mode. |
| 4654 * See `PropertyCallbackInfo`. | 4654 * See `PropertyCallbackInfo`. |
| 4655 * | 4655 * |
| 4656 * See also | 4656 * See also |
| 4657 * `ObjectTemplate::SetNamedPropertyHandler.` | 4657 * `ObjectTemplate::SetHandler.` |
| 4658 */ | 4658 */ |
| 4659 typedef void (*GenericNamedPropertySetterCallback)( | 4659 typedef void (*GenericNamedPropertySetterCallback)( |
| 4660 Local<Name> property, Local<Value> value, | 4660 Local<Name> property, Local<Value> value, |
| 4661 const PropertyCallbackInfo<Value>& info); | 4661 const PropertyCallbackInfo<Value>& info); |
| 4662 | 4662 |
| 4663 /** | 4663 /** |
| 4664 * Intercepts all requests that query the attributes of the | 4664 * Intercepts all requests that query the attributes of the |
| 4665 * property, e.g., getOwnPropertyDescriptor(), propertyIsEnumerable(), and | 4665 * property, e.g., getOwnPropertyDescriptor(), propertyIsEnumerable(), and |
| 4666 * defineProperty(). | 4666 * defineProperty(). |
| 4667 * | 4667 * |
| 4668 * Use `info.GetReturnValue().Set(value)` to set the property attributes. The | 4668 * Use `info.GetReturnValue().Set(value)` to set the property attributes. The |
| 4669 * value is an interger encoding a `v8::PropertyAttribute`. | 4669 * value is an interger encoding a `v8::PropertyAttribute`. |
| 4670 * | 4670 * |
| 4671 * \param property The name of the property for which the request was | 4671 * \param property The name of the property for which the request was |
| 4672 * intercepted. | 4672 * intercepted. |
| 4673 * \param info Information about the intercepted request, such as | 4673 * \param info Information about the intercepted request, such as |
| 4674 * isolate, receiver, return value, or whether running in `'use strict'` mode. | 4674 * isolate, receiver, return value, or whether running in `'use strict'` mode. |
| 4675 * See `PropertyCallbackInfo`. | 4675 * See `PropertyCallbackInfo`. |
| 4676 * | 4676 * |
| 4677 * \note Some functions query the property attributes internally, even though | 4677 * \note Some functions query the property attributes internally, even though |
| 4678 * they do not return the attributes. For example, `hasOwnProperty()` can | 4678 * they do not return the attributes. For example, `hasOwnProperty()` can |
| 4679 * trigger this interceptor depending on the state of the object. | 4679 * trigger this interceptor depending on the state of the object. |
| 4680 * | 4680 * |
| 4681 * See also | 4681 * See also |
| 4682 * `ObjectTemplate::SetNamedPropertyHandler.` | 4682 * `ObjectTemplate::SetHandler.` |
| 4683 */ | 4683 */ |
| 4684 typedef void (*GenericNamedPropertyQueryCallback)( | 4684 typedef void (*GenericNamedPropertyQueryCallback)( |
| 4685 Local<Name> property, const PropertyCallbackInfo<Integer>& info); | 4685 Local<Name> property, const PropertyCallbackInfo<Integer>& info); |
| 4686 | 4686 |
| 4687 /** | 4687 /** |
| 4688 * Interceptor for delete requests on an object. | 4688 * Interceptor for delete requests on an object. |
| 4689 * | 4689 * |
| 4690 * Use `info.GetReturnValue()` to indicate whether the request was intercepted | 4690 * Use `info.GetReturnValue()` to indicate whether the request was intercepted |
| 4691 * or not. If the deleter successfully intercepts the request, i.e., if the | 4691 * or not. If the deleter successfully intercepts the request, i.e., if the |
| 4692 * request should not be further executed, call | 4692 * request should not be further executed, call |
| 4693 * `info.GetReturnValue().Set(value)` with a boolean `value`. The `value` is | 4693 * `info.GetReturnValue().Set(value)` with a boolean `value`. The `value` is |
| 4694 * used as the return value of `delete`. | 4694 * used as the return value of `delete`. |
| 4695 * | 4695 * |
| 4696 * \param property The name of the property for which the request was | 4696 * \param property The name of the property for which the request was |
| 4697 * intercepted. | 4697 * intercepted. |
| 4698 * \param info Information about the intercepted request, such as | 4698 * \param info Information about the intercepted request, such as |
| 4699 * isolate, receiver, return value, or whether running in `'use strict'` mode. | 4699 * isolate, receiver, return value, or whether running in `'use strict'` mode. |
| 4700 * See `PropertyCallbackInfo`. | 4700 * See `PropertyCallbackInfo`. |
| 4701 * | 4701 * |
| 4702 * \note If you need to mimic the behavior of `delete`, i.e., throw in strict | 4702 * \note If you need to mimic the behavior of `delete`, i.e., throw in strict |
| 4703 * mode instead of returning false, use `info.ShouldThrowOnError()` to determine | 4703 * mode instead of returning false, use `info.ShouldThrowOnError()` to determine |
| 4704 * if you are in strict mode. | 4704 * if you are in strict mode. |
| 4705 * | 4705 * |
| 4706 * See also `ObjectTemplate::SetNamedPropertyHandler.` | 4706 * See also `ObjectTemplate::SetHandler.` |
| 4707 */ | 4707 */ |
| 4708 typedef void (*GenericNamedPropertyDeleterCallback)( | 4708 typedef void (*GenericNamedPropertyDeleterCallback)( |
| 4709 Local<Name> property, const PropertyCallbackInfo<Boolean>& info); | 4709 Local<Name> property, const PropertyCallbackInfo<Boolean>& info); |
| 4710 | 4710 |
| 4711 | 4711 |
| 4712 /** | 4712 /** |
| 4713 * Returns an array containing the names of the properties the named | 4713 * Returns an array containing the names of the properties the named |
| 4714 * property getter intercepts. | 4714 * property getter intercepts. |
| 4715 */ | 4715 */ |
| 4716 typedef void (*GenericNamedPropertyEnumeratorCallback)( | 4716 typedef void (*GenericNamedPropertyEnumeratorCallback)( |
| (...skipping 10 matching lines...) Expand all Loading... |
| 4727 * if no interceptor is present, do not not call `Set()`. | 4727 * if no interceptor is present, do not not call `Set()`. |
| 4728 * | 4728 * |
| 4729 * \param property The name of the property for which the request was | 4729 * \param property The name of the property for which the request was |
| 4730 * intercepted. | 4730 * intercepted. |
| 4731 * \param desc The property descriptor which is used to define the | 4731 * \param desc The property descriptor which is used to define the |
| 4732 * property if the request is not intercepted. | 4732 * property if the request is not intercepted. |
| 4733 * \param info Information about the intercepted request, such as | 4733 * \param info Information about the intercepted request, such as |
| 4734 * isolate, receiver, return value, or whether running in `'use strict'` mode. | 4734 * isolate, receiver, return value, or whether running in `'use strict'` mode. |
| 4735 * See `PropertyCallbackInfo`. | 4735 * See `PropertyCallbackInfo`. |
| 4736 * | 4736 * |
| 4737 * See also `ObjectTemplate::SetNamedPropertyHandler`. | 4737 * See also `ObjectTemplate::SetHandler`. |
| 4738 */ | 4738 */ |
| 4739 typedef void (*GenericNamedPropertyDefinerCallback)( | 4739 typedef void (*GenericNamedPropertyDefinerCallback)( |
| 4740 Local<Name> property, const PropertyDescriptor& desc, | 4740 Local<Name> property, const PropertyDescriptor& desc, |
| 4741 const PropertyCallbackInfo<Value>& info); | 4741 const PropertyCallbackInfo<Value>& info); |
| 4742 | 4742 |
| 4743 /** | 4743 /** |
| 4744 * Interceptor for getOwnPropertyDescriptor requests on an object. | 4744 * Interceptor for getOwnPropertyDescriptor requests on an object. |
| 4745 * | 4745 * |
| 4746 * Use `info.GetReturnValue().Set()` to set the return value of the | 4746 * Use `info.GetReturnValue().Set()` to set the return value of the |
| 4747 * intercepted request. The return value must be an object that | 4747 * intercepted request. The return value must be an object that |
| 4748 * can be converted to a PropertyDescriptor, e.g., a `v8::value` returned from | 4748 * can be converted to a PropertyDescriptor, e.g., a `v8::value` returned from |
| 4749 * `v8::Object::getOwnPropertyDescriptor`. | 4749 * `v8::Object::getOwnPropertyDescriptor`. |
| 4750 * | 4750 * |
| 4751 * \param property The name of the property for which the request was | 4751 * \param property The name of the property for which the request was |
| 4752 * intercepted. | 4752 * intercepted. |
| 4753 * \info Information about the intercepted request, such as | 4753 * \info Information about the intercepted request, such as |
| 4754 * isolate, receiver, return value, or whether running in `'use strict'` mode. | 4754 * isolate, receiver, return value, or whether running in `'use strict'` mode. |
| 4755 * See `PropertyCallbackInfo`. | 4755 * See `PropertyCallbackInfo`. |
| 4756 * | 4756 * |
| 4757 * \note If GetOwnPropertyDescriptor is intercepted, it will | 4757 * \note If GetOwnPropertyDescriptor is intercepted, it will |
| 4758 * always return true, i.e., indicate that the property was found. | 4758 * always return true, i.e., indicate that the property was found. |
| 4759 * | 4759 * |
| 4760 * See also `ObjectTemplate::SetNamedPropertyHandler`. | 4760 * See also `ObjectTemplate::SetHandler`. |
| 4761 */ | 4761 */ |
| 4762 typedef void (*GenericNamedPropertyDescriptorCallback)( | 4762 typedef void (*GenericNamedPropertyDescriptorCallback)( |
| 4763 Local<Name> property, const PropertyCallbackInfo<Value>& info); | 4763 Local<Name> property, const PropertyCallbackInfo<Value>& info); |
| 4764 | 4764 |
| 4765 /** | 4765 /** |
| 4766 * Returns the value of the property if the getter intercepts the | 4766 * See `v8::GenericNamedPropertyGetterCallback`. |
| 4767 * request. Otherwise, returns an empty handle. | |
| 4768 */ | 4767 */ |
| 4769 typedef void (*IndexedPropertyGetterCallback)( | 4768 typedef void (*IndexedPropertyGetterCallback)( |
| 4770 uint32_t index, | 4769 uint32_t index, |
| 4771 const PropertyCallbackInfo<Value>& info); | 4770 const PropertyCallbackInfo<Value>& info); |
| 4772 | 4771 |
| 4773 | |
| 4774 /** | 4772 /** |
| 4775 * Returns the value if the setter intercepts the request. | 4773 * See `v8::GenericNamedPropertySetterCallback`. |
| 4776 * Otherwise, returns an empty handle. | |
| 4777 */ | 4774 */ |
| 4778 typedef void (*IndexedPropertySetterCallback)( | 4775 typedef void (*IndexedPropertySetterCallback)( |
| 4779 uint32_t index, | 4776 uint32_t index, |
| 4780 Local<Value> value, | 4777 Local<Value> value, |
| 4781 const PropertyCallbackInfo<Value>& info); | 4778 const PropertyCallbackInfo<Value>& info); |
| 4782 | 4779 |
| 4783 | |
| 4784 /** | 4780 /** |
| 4785 * Returns a non-empty handle if the interceptor intercepts the request. | 4781 * See `v8::GenericNamedPropertyQueryCallback`. |
| 4786 * The result is an integer encoding property attributes. | |
| 4787 */ | 4782 */ |
| 4788 typedef void (*IndexedPropertyQueryCallback)( | 4783 typedef void (*IndexedPropertyQueryCallback)( |
| 4789 uint32_t index, | 4784 uint32_t index, |
| 4790 const PropertyCallbackInfo<Integer>& info); | 4785 const PropertyCallbackInfo<Integer>& info); |
| 4791 | 4786 |
| 4792 | |
| 4793 /** | 4787 /** |
| 4794 * Returns a non-empty handle if the deleter intercepts the request. | 4788 * See `v8::GenericNamedPropertyDeleterCallback`. |
| 4795 * The return value is true if the property could be deleted and false | |
| 4796 * otherwise. | |
| 4797 */ | 4789 */ |
| 4798 typedef void (*IndexedPropertyDeleterCallback)( | 4790 typedef void (*IndexedPropertyDeleterCallback)( |
| 4799 uint32_t index, | 4791 uint32_t index, |
| 4800 const PropertyCallbackInfo<Boolean>& info); | 4792 const PropertyCallbackInfo<Boolean>& info); |
| 4801 | 4793 |
| 4802 | |
| 4803 /** | 4794 /** |
| 4804 * Returns an array containing the indices of the properties the | 4795 * See `v8::GenericNamedPropertyEnumeratorCallback`. |
| 4805 * indexed property getter intercepts. | |
| 4806 */ | 4796 */ |
| 4807 typedef void (*IndexedPropertyEnumeratorCallback)( | 4797 typedef void (*IndexedPropertyEnumeratorCallback)( |
| 4808 const PropertyCallbackInfo<Array>& info); | 4798 const PropertyCallbackInfo<Array>& info); |
| 4809 | 4799 |
| 4800 /** |
| 4801 * See `v8::GenericNamedPropertyDefinerCallback`. |
| 4802 */ |
| 4810 typedef void (*IndexedPropertyDefinerCallback)( | 4803 typedef void (*IndexedPropertyDefinerCallback)( |
| 4811 uint32_t index, const PropertyDescriptor& desc, | 4804 uint32_t index, const PropertyDescriptor& desc, |
| 4812 const PropertyCallbackInfo<Value>& info); | 4805 const PropertyCallbackInfo<Value>& info); |
| 4813 | 4806 |
| 4807 /** |
| 4808 * See `v8::GenericNamedPropertyDescriptorCallback`. |
| 4809 */ |
| 4814 typedef void (*IndexedPropertyDescriptorCallback)( | 4810 typedef void (*IndexedPropertyDescriptorCallback)( |
| 4815 uint32_t index, const PropertyCallbackInfo<Value>& info); | 4811 uint32_t index, const PropertyCallbackInfo<Value>& info); |
| 4816 | 4812 |
| 4817 /** | 4813 /** |
| 4818 * Access type specification. | 4814 * Access type specification. |
| 4819 */ | 4815 */ |
| 4820 enum AccessType { | 4816 enum AccessType { |
| 4821 ACCESS_GET, | 4817 ACCESS_GET, |
| 4822 ACCESS_SET, | 4818 ACCESS_SET, |
| 4823 ACCESS_HAS, | 4819 ACCESS_HAS, |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5054 // chain, i.e., only call into interceptor for properties that do not exist. | 5050 // chain, i.e., only call into interceptor for properties that do not exist. |
| 5055 // Currently only valid for named interceptors. | 5051 // Currently only valid for named interceptors. |
| 5056 kNonMasking = 1 << 1, | 5052 kNonMasking = 1 << 1, |
| 5057 // Will not call into interceptor for symbol lookup. Only meaningful for | 5053 // Will not call into interceptor for symbol lookup. Only meaningful for |
| 5058 // named interceptors. | 5054 // named interceptors. |
| 5059 kOnlyInterceptStrings = 1 << 2, | 5055 kOnlyInterceptStrings = 1 << 2, |
| 5060 }; | 5056 }; |
| 5061 | 5057 |
| 5062 struct NamedPropertyHandlerConfiguration { | 5058 struct NamedPropertyHandlerConfiguration { |
| 5063 NamedPropertyHandlerConfiguration( | 5059 NamedPropertyHandlerConfiguration( |
| 5064 /** Note: getter is required **/ | 5060 /** Note: getter is required */ |
| 5065 GenericNamedPropertyGetterCallback getter = 0, | 5061 GenericNamedPropertyGetterCallback getter = 0, |
| 5066 GenericNamedPropertySetterCallback setter = 0, | 5062 GenericNamedPropertySetterCallback setter = 0, |
| 5067 GenericNamedPropertyQueryCallback query = 0, | 5063 GenericNamedPropertyQueryCallback query = 0, |
| 5068 GenericNamedPropertyDeleterCallback deleter = 0, | 5064 GenericNamedPropertyDeleterCallback deleter = 0, |
| 5069 GenericNamedPropertyEnumeratorCallback enumerator = 0, | 5065 GenericNamedPropertyEnumeratorCallback enumerator = 0, |
| 5070 Local<Value> data = Local<Value>(), | 5066 Local<Value> data = Local<Value>(), |
| 5071 PropertyHandlerFlags flags = PropertyHandlerFlags::kNone) | 5067 PropertyHandlerFlags flags = PropertyHandlerFlags::kNone) |
| 5072 : getter(getter), | 5068 : getter(getter), |
| 5073 setter(setter), | 5069 setter(setter), |
| 5074 query(query), | 5070 query(query), |
| (...skipping 30 matching lines...) Expand all Loading... |
| 5105 GenericNamedPropertyEnumeratorCallback enumerator; | 5101 GenericNamedPropertyEnumeratorCallback enumerator; |
| 5106 GenericNamedPropertyDefinerCallback definer; | 5102 GenericNamedPropertyDefinerCallback definer; |
| 5107 GenericNamedPropertyDescriptorCallback descriptor; | 5103 GenericNamedPropertyDescriptorCallback descriptor; |
| 5108 Local<Value> data; | 5104 Local<Value> data; |
| 5109 PropertyHandlerFlags flags; | 5105 PropertyHandlerFlags flags; |
| 5110 }; | 5106 }; |
| 5111 | 5107 |
| 5112 | 5108 |
| 5113 struct IndexedPropertyHandlerConfiguration { | 5109 struct IndexedPropertyHandlerConfiguration { |
| 5114 IndexedPropertyHandlerConfiguration( | 5110 IndexedPropertyHandlerConfiguration( |
| 5115 /** Note: getter is required **/ | 5111 /** Note: getter is required */ |
| 5116 IndexedPropertyGetterCallback getter = 0, | 5112 IndexedPropertyGetterCallback getter = 0, |
| 5117 IndexedPropertySetterCallback setter = 0, | 5113 IndexedPropertySetterCallback setter = 0, |
| 5118 IndexedPropertyQueryCallback query = 0, | 5114 IndexedPropertyQueryCallback query = 0, |
| 5119 IndexedPropertyDeleterCallback deleter = 0, | 5115 IndexedPropertyDeleterCallback deleter = 0, |
| 5120 IndexedPropertyEnumeratorCallback enumerator = 0, | 5116 IndexedPropertyEnumeratorCallback enumerator = 0, |
| 5121 Local<Value> data = Local<Value>(), | 5117 Local<Value> data = Local<Value>(), |
| 5122 PropertyHandlerFlags flags = PropertyHandlerFlags::kNone) | 5118 PropertyHandlerFlags flags = PropertyHandlerFlags::kNone) |
| 5123 : getter(getter), | 5119 : getter(getter), |
| 5124 setter(setter), | 5120 setter(setter), |
| 5125 query(query), | 5121 query(query), |
| (...skipping 4367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9493 */ | 9489 */ |
| 9494 | 9490 |
| 9495 | 9491 |
| 9496 } // namespace v8 | 9492 } // namespace v8 |
| 9497 | 9493 |
| 9498 | 9494 |
| 9499 #undef TYPE_CHECK | 9495 #undef TYPE_CHECK |
| 9500 | 9496 |
| 9501 | 9497 |
| 9502 #endif // INCLUDE_V8_H_ | 9498 #endif // INCLUDE_V8_H_ |
| OLD | NEW |