Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(376)

Side by Side Diff: include/v8.h

Issue 2244123005: [api] Add PropertyDescriptor and DefineProperty(). (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Add test that shows need for has_attribute() functions Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/api.cc » ('j') | src/api.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 class Maybe; 88 class Maybe;
89 class Name; 89 class Name;
90 class Number; 90 class Number;
91 class NumberObject; 91 class NumberObject;
92 class Object; 92 class Object;
93 class ObjectOperationDescriptor; 93 class ObjectOperationDescriptor;
94 class ObjectTemplate; 94 class ObjectTemplate;
95 class Platform; 95 class Platform;
96 class Primitive; 96 class Primitive;
97 class Promise; 97 class Promise;
98 class PropertyDescriptor;
98 class Proxy; 99 class Proxy;
99 class RawOperationDescriptor; 100 class RawOperationDescriptor;
100 class Script; 101 class Script;
101 class SharedArrayBuffer; 102 class SharedArrayBuffer;
102 class Signature; 103 class Signature;
103 class StartupData; 104 class StartupData;
104 class StackFrame; 105 class StackFrame;
105 class StackTrace; 106 class StackTrace;
106 class String; 107 class String;
107 class StringObject; 108 class StringObject;
(...skipping 2578 matching lines...) Expand 10 before | Expand all | Expand 10 after
2686 // Implements DefineOwnProperty. 2687 // Implements DefineOwnProperty.
2687 // 2688 //
2688 // In general, CreateDataProperty will be faster, however, does not allow 2689 // In general, CreateDataProperty will be faster, however, does not allow
2689 // for specifying attributes. 2690 // for specifying attributes.
2690 // 2691 //
2691 // Returns true on success. 2692 // Returns true on success.
2692 V8_WARN_UNUSED_RESULT Maybe<bool> DefineOwnProperty( 2693 V8_WARN_UNUSED_RESULT Maybe<bool> DefineOwnProperty(
2693 Local<Context> context, Local<Name> key, Local<Value> value, 2694 Local<Context> context, Local<Name> key, Local<Value> value,
2694 PropertyAttribute attributes = None); 2695 PropertyAttribute attributes = None);
2695 2696
2697 // Implements Object.DefineProperty(O, P, Attributes) as in ecma262 19.1.2.4.
2698 //
2699 // The defineProperty function is used to add an own property and/or
Toon Verwaest 2016/08/18 07:25:39 or. You can't add 'add' and 'update' a property :)
Franzi 2016/08/18 09:56:24 Done.
2700 // update the attributes of an existing own property of an object.
2701 //
2702 // Both data and accessor descriptors can be used.
2703 //
2704 // In general, CreateDataProperty will be faster, however, does not allow
Toon Verwaest 2016/08/18 07:25:39 is faster
Franzi 2016/08/18 09:56:24 Done.
2705 // for specifying attributes or an accessor descriptor.
2706 //
2707 // Returns true on success.
2708 V8_WARN_UNUSED_RESULT Maybe<bool> DefineProperty(
2709 Local<Context> context, Local<Name> key,
2710 const PropertyDescriptor* descriptor);
Toon Verwaest 2016/08/18 07:25:39 Perhaps this should be a reference? We'll probably
Franzi 2016/08/18 09:56:24 Done.
2711
2696 // Sets an own property on this object bypassing interceptors and 2712 // Sets an own property on this object bypassing interceptors and
2697 // overriding accessors or read-only properties. 2713 // overriding accessors or read-only properties.
2698 // 2714 //
2699 // Note that if the object has an interceptor the property will be set 2715 // Note that if the object has an interceptor the property will be set
2700 // locally, but since the interceptor takes precedence the local property 2716 // locally, but since the interceptor takes precedence the local property
2701 // will only be returned if the interceptor doesn't return a value. 2717 // will only be returned if the interceptor doesn't return a value.
2702 // 2718 //
2703 // Note also that this only works for named properties. 2719 // Note also that this only works for named properties.
2704 V8_DEPRECATED("Use CreateDataProperty / DefineOwnProperty", 2720 V8_DEPRECATED("Use CreateDataProperty / DefineOwnProperty",
2705 bool ForceSet(Local<Value> key, Local<Value> value, 2721 bool ForceSet(Local<Value> key, Local<Value> value,
(...skipping 724 matching lines...) Expand 10 before | Expand all | Expand 10 after
3430 */ 3446 */
3431 bool HasHandler(); 3447 bool HasHandler();
3432 3448
3433 V8_INLINE static Promise* Cast(Value* obj); 3449 V8_INLINE static Promise* Cast(Value* obj);
3434 3450
3435 private: 3451 private:
3436 Promise(); 3452 Promise();
3437 static void CheckCast(Value* obj); 3453 static void CheckCast(Value* obj);
3438 }; 3454 };
3439 3455
3456 /**
3457 * Property Descriptor.
3458 */
3459 class V8_EXPORT PropertyDescriptor {
3460 public:
3461 // GenericDescriptor
3462 PropertyDescriptor(bool enumerable = false, bool has_enumerable = false,
3463 bool configurable = false, bool has_configurable = false)
3464 : enumerable_(enumerable),
3465 has_enumerable_(has_enumerable),
3466 configurable_(configurable),
3467 has_configurable_(has_configurable) {}
3468
3469 // DataDescriptor
3470 PropertyDescriptor(Local<Value> value, bool has_value,
3471 bool enumerable = false, bool has_enumerable = false,
3472 bool configurable = false, bool has_configurable = false,
3473 bool writable = false, bool has_writable = false)
3474 : value_(value),
3475 has_value_(has_value),
3476 enumerable_(enumerable),
3477 has_enumerable_(has_enumerable),
3478 configurable_(configurable),
3479 has_configurable_(has_configurable),
3480 writable_(writable),
3481 has_writable_(has_writable) {}
3482
3483 // AccessorDescriptor
3484 PropertyDescriptor(Local<Function> get, bool has_get = false,
Toon Verwaest 2016/08/18 07:25:39 If we can get by without has_get etc, I'd prefer t
Franzi 2016/08/18 09:56:24 We need has_x() for all fields. We need to disting
3485 Local<Function> set = Local<Function>(),
3486 bool has_set = false, bool enumerable = false,
3487 bool has_enumerable = false, bool configurable = false,
3488 bool has_configurable = false)
3489 : get_(get),
3490 has_get_(has_get),
3491 set_(set),
3492 has_set_(has_set),
3493 enumerable_(enumerable),
3494 has_enumerable_(has_enumerable),
3495 configurable_(configurable),
3496 has_configurable_(has_configurable) {}
3497
3498 Local<Value> value() const { return value_; }
3499 bool has_value() const { return has_value_; }
3500
3501 Local<Function> get() const { return get_; }
3502 bool has_get() const { return has_get_; }
3503 Local<Function> set() const { return set_; }
3504 bool has_set() const { return has_set_; }
3505
3506 bool enumerable() const { return enumerable_; }
3507 bool has_enumerable() const { return has_enumerable_; }
3508 bool configurable() const { return configurable_; }
3509 bool has_configurable() const { return has_configurable_; }
3510 bool writable() const { return writable_; }
3511 bool has_writable() const { return has_writable_; }
3512
3513 private:
3514 Local<Value> value_;
3515 bool has_value_ = false;
3516
3517 Local<Function> get_;
3518 bool has_get_ = false;
3519 Local<Function> set_;
3520 bool has_set_ = false;
3521
3522 bool enumerable_ = false;
3523 bool has_enumerable_ = false;
3524 bool configurable_ = false;
3525 bool has_configurable_ = false;
3526 bool writable_ = false;
3527 bool has_writable_ = false;
3528 };
3440 3529
3441 /** 3530 /**
3442 * An instance of the built-in Proxy constructor (ECMA-262, 6th Edition, 3531 * An instance of the built-in Proxy constructor (ECMA-262, 6th Edition,
3443 * 26.2.1). 3532 * 26.2.1).
3444 */ 3533 */
3445 class V8_EXPORT Proxy : public Object { 3534 class V8_EXPORT Proxy : public Object {
3446 public: 3535 public:
3447 Local<Object> GetTarget(); 3536 Local<Object> GetTarget();
3448 Local<Value> GetHandler(); 3537 Local<Value> GetHandler();
3449 bool IsRevoked(); 3538 bool IsRevoked();
(...skipping 5536 matching lines...) Expand 10 before | Expand all | Expand 10 after
8986 */ 9075 */
8987 9076
8988 9077
8989 } // namespace v8 9078 } // namespace v8
8990 9079
8991 9080
8992 #undef TYPE_CHECK 9081 #undef TYPE_CHECK
8993 9082
8994 9083
8995 #endif // INCLUDE_V8_H_ 9084 #endif // INCLUDE_V8_H_
OLDNEW
« no previous file with comments | « no previous file | src/api.cc » ('j') | src/api.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698