| 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 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 template <class T> | 427 template <class T> |
| 428 class MaybeLocal { | 428 class MaybeLocal { |
| 429 public: | 429 public: |
| 430 V8_INLINE MaybeLocal() : val_(nullptr) {} | 430 V8_INLINE MaybeLocal() : val_(nullptr) {} |
| 431 template <class S> | 431 template <class S> |
| 432 V8_INLINE MaybeLocal(Local<S> that) | 432 V8_INLINE MaybeLocal(Local<S> that) |
| 433 : val_(reinterpret_cast<T*>(*that)) { | 433 : val_(reinterpret_cast<T*>(*that)) { |
| 434 TYPE_CHECK(T, S); | 434 TYPE_CHECK(T, S); |
| 435 } | 435 } |
| 436 | 436 |
| 437 V8_INLINE bool IsEmpty() { return val_ == nullptr; } | 437 V8_INLINE bool IsEmpty() const { return val_ == nullptr; } |
| 438 | 438 |
| 439 template <class S> | 439 template <class S> |
| 440 V8_WARN_UNUSED_RESULT V8_INLINE bool ToLocal(Local<S>* out) const { | 440 V8_WARN_UNUSED_RESULT V8_INLINE bool ToLocal(Local<S>* out) const { |
| 441 if (val_ == NULL) { | 441 out->val_ = IsEmpty() ? nullptr : this->val_; |
| 442 out->val_ = nullptr; | 442 return IsEmpty(); |
| 443 return false; | |
| 444 } else { | |
| 445 out->val_ = this->val_; | |
| 446 return true; | |
| 447 } | |
| 448 } | 443 } |
| 449 | 444 |
| 450 V8_INLINE Local<T> ToLocalChecked() { | 445 V8_INLINE Local<T> ToLocalChecked() { |
| 451 // TODO(dcarney): add DCHECK. | 446 // TODO(dcarney): add DCHECK. |
| 452 return Local<T>(val_); | 447 return Local<T>(val_); |
| 453 } | 448 } |
| 454 | 449 |
| 450 template <class S> |
| 451 V8_INLINE Local<S> FromMaybe(Local<S> default_value) const { |
| 452 return IsEmpty() ? default_value : Local<S>(val_); |
| 453 } |
| 454 |
| 455 private: | 455 private: |
| 456 T* val_; | 456 T* val_; |
| 457 }; | 457 }; |
| 458 | 458 |
| 459 | 459 |
| 460 // Eternal handles are set-once handles that live for the life of the isolate. | 460 // Eternal handles are set-once handles that live for the life of the isolate. |
| 461 template <class T> class Eternal { | 461 template <class T> class Eternal { |
| 462 public: | 462 public: |
| 463 V8_INLINE Eternal() : index_(kInitialValue) { } | 463 V8_INLINE Eternal() : index_(kInitialValue) { } |
| 464 template<class S> | 464 template<class S> |
| (...skipping 2018 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2483 ALL_CAN_WRITE = 1 << 1, | 2483 ALL_CAN_WRITE = 1 << 1, |
| 2484 PROHIBITS_OVERWRITING = 1 << 2 | 2484 PROHIBITS_OVERWRITING = 1 << 2 |
| 2485 }; | 2485 }; |
| 2486 | 2486 |
| 2487 | 2487 |
| 2488 /** | 2488 /** |
| 2489 * A JavaScript object (ECMA-262, 4.3.3) | 2489 * A JavaScript object (ECMA-262, 4.3.3) |
| 2490 */ | 2490 */ |
| 2491 class V8_EXPORT Object : public Value { | 2491 class V8_EXPORT Object : public Value { |
| 2492 public: | 2492 public: |
| 2493 // TODO(dcarney): deprecate |
| 2493 bool Set(Handle<Value> key, Handle<Value> value); | 2494 bool Set(Handle<Value> key, Handle<Value> value); |
| 2495 Maybe<bool> Set(Local<Context> context, Local<Value> key, Local<Value> value); |
| 2494 | 2496 |
| 2497 // TODO(dcarney): deprecate |
| 2495 bool Set(uint32_t index, Handle<Value> value); | 2498 bool Set(uint32_t index, Handle<Value> value); |
| 2499 Maybe<bool> Set(Local<Context> context, uint32_t index, Local<Value> value); |
| 2496 | 2500 |
| 2497 // Sets an own property on this object bypassing interceptors and | 2501 // Sets an own property on this object bypassing interceptors and |
| 2498 // overriding accessors or read-only properties. | 2502 // overriding accessors or read-only properties. |
| 2499 // | 2503 // |
| 2500 // Note that if the object has an interceptor the property will be set | 2504 // Note that if the object has an interceptor the property will be set |
| 2501 // locally, but since the interceptor takes precedence the local property | 2505 // locally, but since the interceptor takes precedence the local property |
| 2502 // will only be returned if the interceptor doesn't return a value. | 2506 // will only be returned if the interceptor doesn't return a value. |
| 2503 // | 2507 // |
| 2504 // Note also that this only works for named properties. | 2508 // Note also that this only works for named properties. |
| 2509 // TODO(dcarney): deprecate |
| 2505 bool ForceSet(Handle<Value> key, | 2510 bool ForceSet(Handle<Value> key, |
| 2506 Handle<Value> value, | 2511 Handle<Value> value, |
| 2507 PropertyAttribute attribs = None); | 2512 PropertyAttribute attribs = None); |
| 2513 Maybe<bool> ForceSet(Local<Context> context, Local<Value> key, |
| 2514 Local<Value> value, PropertyAttribute attribs = None); |
| 2508 | 2515 |
| 2516 // TODO(dcarney): deprecate |
| 2509 Local<Value> Get(Handle<Value> key); | 2517 Local<Value> Get(Handle<Value> key); |
| 2518 MaybeLocal<Value> Get(Local<Context> context, Local<Value> key); |
| 2510 | 2519 |
| 2520 // TODO(dcarney): deprecate |
| 2511 Local<Value> Get(uint32_t index); | 2521 Local<Value> Get(uint32_t index); |
| 2522 MaybeLocal<Value> Get(Local<Context> context, uint32_t index); |
| 2512 | 2523 |
| 2513 /** | 2524 /** |
| 2514 * Gets the property attributes of a property which can be None or | 2525 * Gets the property attributes of a property which can be None or |
| 2515 * any combination of ReadOnly, DontEnum and DontDelete. Returns | 2526 * any combination of ReadOnly, DontEnum and DontDelete. Returns |
| 2516 * None when the property doesn't exist. | 2527 * None when the property doesn't exist. |
| 2517 */ | 2528 */ |
| 2529 // TODO(dcarney): deprecate |
| 2518 PropertyAttribute GetPropertyAttributes(Handle<Value> key); | 2530 PropertyAttribute GetPropertyAttributes(Handle<Value> key); |
| 2531 Maybe<PropertyAttribute> GetPropertyAttributes(Local<Context> context, |
| 2532 Local<Value> key); |
| 2519 | 2533 |
| 2520 /** | 2534 /** |
| 2521 * Returns Object.getOwnPropertyDescriptor as per ES5 section 15.2.3.3. | 2535 * Returns Object.getOwnPropertyDescriptor as per ES5 section 15.2.3.3. |
| 2522 */ | 2536 */ |
| 2537 // TODO(dcarney): deprecate |
| 2523 Local<Value> GetOwnPropertyDescriptor(Local<String> key); | 2538 Local<Value> GetOwnPropertyDescriptor(Local<String> key); |
| 2539 MaybeLocal<Value> GetOwnPropertyDescriptor(Local<Context> context, |
| 2540 Local<String> key); |
| 2524 | 2541 |
| 2542 // TODO(dcarney): deprecate |
| 2525 bool Has(Handle<Value> key); | 2543 bool Has(Handle<Value> key); |
| 2544 Maybe<bool> Has(Local<Context> context, Local<Value> key); |
| 2526 | 2545 |
| 2546 // TODO(dcarney): deprecate |
| 2527 bool Delete(Handle<Value> key); | 2547 bool Delete(Handle<Value> key); |
| 2548 Maybe<bool> Delete(Local<Context> context, Local<Value> key); |
| 2528 | 2549 |
| 2550 // TODO(dcarney): deprecate |
| 2529 bool Has(uint32_t index); | 2551 bool Has(uint32_t index); |
| 2552 Maybe<bool> Has(Local<Context> context, uint32_t index); |
| 2530 | 2553 |
| 2554 // TODO(dcarney): deprecate |
| 2531 bool Delete(uint32_t index); | 2555 bool Delete(uint32_t index); |
| 2556 Maybe<bool> Delete(Local<Context> context, uint32_t index); |
| 2532 | 2557 |
| 2558 // TODO(dcarney): deprecate |
| 2533 bool SetAccessor(Handle<String> name, | 2559 bool SetAccessor(Handle<String> name, |
| 2534 AccessorGetterCallback getter, | 2560 AccessorGetterCallback getter, |
| 2535 AccessorSetterCallback setter = 0, | 2561 AccessorSetterCallback setter = 0, |
| 2536 Handle<Value> data = Handle<Value>(), | 2562 Handle<Value> data = Handle<Value>(), |
| 2537 AccessControl settings = DEFAULT, | 2563 AccessControl settings = DEFAULT, |
| 2538 PropertyAttribute attribute = None); | 2564 PropertyAttribute attribute = None); |
| 2539 bool SetAccessor(Handle<Name> name, | 2565 // TODO(dcarney): deprecate |
| 2540 AccessorNameGetterCallback getter, | 2566 bool SetAccessor(Handle<Name> name, AccessorNameGetterCallback getter, |
| 2541 AccessorNameSetterCallback setter = 0, | 2567 AccessorNameSetterCallback setter = 0, |
| 2542 Handle<Value> data = Handle<Value>(), | 2568 Handle<Value> data = Handle<Value>(), |
| 2543 AccessControl settings = DEFAULT, | 2569 AccessControl settings = DEFAULT, |
| 2544 PropertyAttribute attribute = None); | 2570 PropertyAttribute attribute = None); |
| 2571 Maybe<bool> SetAccessor(Local<Context> context, Local<Name> name, |
| 2572 AccessorNameGetterCallback getter, |
| 2573 AccessorNameSetterCallback setter = 0, |
| 2574 MaybeLocal<Value> data = MaybeLocal<Value>(), |
| 2575 AccessControl settings = DEFAULT, |
| 2576 PropertyAttribute attribute = None); |
| 2545 | 2577 |
| 2546 void SetAccessorProperty(Local<Name> name, | 2578 void SetAccessorProperty(Local<Name> name, |
| 2547 Local<Function> getter, | 2579 Local<Function> getter, |
| 2548 Handle<Function> setter = Handle<Function>(), | 2580 Handle<Function> setter = Handle<Function>(), |
| 2549 PropertyAttribute attribute = None, | 2581 PropertyAttribute attribute = None, |
| 2550 AccessControl settings = DEFAULT); | 2582 AccessControl settings = DEFAULT); |
| 2551 | 2583 |
| 2552 /** | 2584 /** |
| 2553 * Functionality for private properties. | 2585 * Functionality for private properties. |
| 2554 * This is an experimental feature, use at your own risk. | 2586 * This is an experimental feature, use at your own risk. |
| (...skipping 3169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5724 }; | 5756 }; |
| 5725 | 5757 |
| 5726 | 5758 |
| 5727 /** | 5759 /** |
| 5728 * A simple Maybe type, representing an object which may or may not have a | 5760 * A simple Maybe type, representing an object which may or may not have a |
| 5729 * value, see https://hackage.haskell.org/package/base/docs/Data-Maybe.html. | 5761 * value, see https://hackage.haskell.org/package/base/docs/Data-Maybe.html. |
| 5730 */ | 5762 */ |
| 5731 template <class T> | 5763 template <class T> |
| 5732 class Maybe { | 5764 class Maybe { |
| 5733 public: | 5765 public: |
| 5766 V8_INLINE bool IsNothing() const { return !has_value; } |
| 5734 V8_INLINE bool IsJust() const { return has_value; } | 5767 V8_INLINE bool IsJust() const { return has_value; } |
| 5735 | 5768 |
| 5736 V8_INLINE T FromJust() const { | 5769 V8_INLINE T FromJust() const { |
| 5737 #ifdef V8_ENABLE_CHECKS | 5770 #ifdef V8_ENABLE_CHECKS |
| 5738 V8::CheckIsJust(IsJust()); | 5771 V8::CheckIsJust(IsJust()); |
| 5739 #endif | 5772 #endif |
| 5740 return value; | 5773 return value; |
| 5741 } | 5774 } |
| 5742 | 5775 |
| 5743 V8_INLINE T FromMaybe(const T& default_value) const { | 5776 V8_INLINE T FromMaybe(const T& default_value) const { |
| (...skipping 1907 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7651 */ | 7684 */ |
| 7652 | 7685 |
| 7653 | 7686 |
| 7654 } // namespace v8 | 7687 } // namespace v8 |
| 7655 | 7688 |
| 7656 | 7689 |
| 7657 #undef TYPE_CHECK | 7690 #undef TYPE_CHECK |
| 7658 | 7691 |
| 7659 | 7692 |
| 7660 #endif // V8_H_ | 7693 #endif // V8_H_ |
| OLD | NEW |