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 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 class Date; | 70 class Date; |
71 class DeclaredAccessorDescriptor; | 71 class DeclaredAccessorDescriptor; |
72 class External; | 72 class External; |
73 class Function; | 73 class Function; |
74 class FunctionTemplate; | 74 class FunctionTemplate; |
75 class HeapProfiler; | 75 class HeapProfiler; |
76 class ImplementationUtilities; | 76 class ImplementationUtilities; |
77 class Int32; | 77 class Int32; |
78 class Integer; | 78 class Integer; |
79 class Isolate; | 79 class Isolate; |
| 80 class Name; |
80 class Number; | 81 class Number; |
81 class NumberObject; | 82 class NumberObject; |
82 class Object; | 83 class Object; |
83 class ObjectOperationDescriptor; | 84 class ObjectOperationDescriptor; |
84 class ObjectTemplate; | 85 class ObjectTemplate; |
85 class Platform; | 86 class Platform; |
86 class Primitive; | 87 class Primitive; |
87 class RawOperationDescriptor; | 88 class RawOperationDescriptor; |
88 class Script; | 89 class Script; |
89 class Signature; | 90 class Signature; |
(...skipping 1270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1360 * Returns true if this value is true. | 1361 * Returns true if this value is true. |
1361 */ | 1362 */ |
1362 bool IsTrue() const; | 1363 bool IsTrue() const; |
1363 | 1364 |
1364 /** | 1365 /** |
1365 * Returns true if this value is false. | 1366 * Returns true if this value is false. |
1366 */ | 1367 */ |
1367 bool IsFalse() const; | 1368 bool IsFalse() const; |
1368 | 1369 |
1369 /** | 1370 /** |
| 1371 * Returns true if this value is a symbol or a string. |
| 1372 * This is an experimental feature. |
| 1373 */ |
| 1374 bool IsName() const; |
| 1375 |
| 1376 /** |
1370 * Returns true if this value is an instance of the String type. | 1377 * Returns true if this value is an instance of the String type. |
1371 * See ECMA-262 8.4. | 1378 * See ECMA-262 8.4. |
1372 */ | 1379 */ |
1373 V8_INLINE bool IsString() const; | 1380 V8_INLINE bool IsString() const; |
1374 | 1381 |
1375 /** | 1382 /** |
1376 * Returns true if this value is a symbol. | 1383 * Returns true if this value is a symbol. |
1377 * This is an experimental feature. | 1384 * This is an experimental feature. |
1378 */ | 1385 */ |
1379 bool IsSymbol() const; | 1386 bool IsSymbol() const; |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1587 * or false value. | 1594 * or false value. |
1588 */ | 1595 */ |
1589 class V8_EXPORT Boolean : public Primitive { | 1596 class V8_EXPORT Boolean : public Primitive { |
1590 public: | 1597 public: |
1591 bool Value() const; | 1598 bool Value() const; |
1592 V8_INLINE static Handle<Boolean> New(Isolate* isolate, bool value); | 1599 V8_INLINE static Handle<Boolean> New(Isolate* isolate, bool value); |
1593 }; | 1600 }; |
1594 | 1601 |
1595 | 1602 |
1596 /** | 1603 /** |
| 1604 * A superclass for symbols and strings. |
| 1605 */ |
| 1606 class V8_EXPORT Name : public Primitive { |
| 1607 public: |
| 1608 V8_INLINE static Name* Cast(v8::Value* obj); |
| 1609 private: |
| 1610 static void CheckCast(v8::Value* obj); |
| 1611 }; |
| 1612 |
| 1613 |
| 1614 /** |
1597 * A JavaScript string value (ECMA-262, 4.3.17). | 1615 * A JavaScript string value (ECMA-262, 4.3.17). |
1598 */ | 1616 */ |
1599 class V8_EXPORT String : public Primitive { | 1617 class V8_EXPORT String : public Name { |
1600 public: | 1618 public: |
1601 enum Encoding { | 1619 enum Encoding { |
1602 UNKNOWN_ENCODING = 0x1, | 1620 UNKNOWN_ENCODING = 0x1, |
1603 TWO_BYTE_ENCODING = 0x0, | 1621 TWO_BYTE_ENCODING = 0x0, |
1604 ASCII_ENCODING = 0x4, | 1622 ASCII_ENCODING = 0x4, |
1605 ONE_BYTE_ENCODING = 0x4 | 1623 ONE_BYTE_ENCODING = 0x4 |
1606 }; | 1624 }; |
1607 /** | 1625 /** |
1608 * Returns the number of characters in this string. | 1626 * Returns the number of characters in this string. |
1609 */ | 1627 */ |
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1928 void VerifyExternalStringResource(ExternalStringResource* val) const; | 1946 void VerifyExternalStringResource(ExternalStringResource* val) const; |
1929 static void CheckCast(v8::Value* obj); | 1947 static void CheckCast(v8::Value* obj); |
1930 }; | 1948 }; |
1931 | 1949 |
1932 | 1950 |
1933 /** | 1951 /** |
1934 * A JavaScript symbol (ECMA-262 edition 6) | 1952 * A JavaScript symbol (ECMA-262 edition 6) |
1935 * | 1953 * |
1936 * This is an experimental feature. Use at your own risk. | 1954 * This is an experimental feature. Use at your own risk. |
1937 */ | 1955 */ |
1938 class V8_EXPORT Symbol : public Primitive { | 1956 class V8_EXPORT Symbol : public Name { |
1939 public: | 1957 public: |
1940 // Returns the print name string of the symbol, or undefined if none. | 1958 // Returns the print name string of the symbol, or undefined if none. |
1941 Local<Value> Name() const; | 1959 Local<Value> Name() const; |
1942 | 1960 |
1943 // Create a symbol. If name is not empty, it will be used as the description. | 1961 // Create a symbol. If name is not empty, it will be used as the description. |
1944 static Local<Symbol> New( | 1962 static Local<Symbol> New( |
1945 Isolate *isolate, Local<String> name = Local<String>()); | 1963 Isolate *isolate, Local<String> name = Local<String>()); |
1946 | 1964 |
1947 // Access global symbol registry. | 1965 // Access global symbol registry. |
1948 // Note that symbols created this way are never collected, so | 1966 // Note that symbols created this way are never collected, so |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2072 }; | 2090 }; |
2073 | 2091 |
2074 /** | 2092 /** |
2075 * Accessor[Getter|Setter] are used as callback functions when | 2093 * Accessor[Getter|Setter] are used as callback functions when |
2076 * setting|getting a particular property. See Object and ObjectTemplate's | 2094 * setting|getting a particular property. See Object and ObjectTemplate's |
2077 * method SetAccessor. | 2095 * method SetAccessor. |
2078 */ | 2096 */ |
2079 typedef void (*AccessorGetterCallback)( | 2097 typedef void (*AccessorGetterCallback)( |
2080 Local<String> property, | 2098 Local<String> property, |
2081 const PropertyCallbackInfo<Value>& info); | 2099 const PropertyCallbackInfo<Value>& info); |
| 2100 typedef void (*AccessorNameGetterCallback)( |
| 2101 Local<Name> property, |
| 2102 const PropertyCallbackInfo<Value>& info); |
2082 | 2103 |
2083 | 2104 |
2084 typedef void (*AccessorSetterCallback)( | 2105 typedef void (*AccessorSetterCallback)( |
2085 Local<String> property, | 2106 Local<String> property, |
2086 Local<Value> value, | 2107 Local<Value> value, |
2087 const PropertyCallbackInfo<void>& info); | 2108 const PropertyCallbackInfo<void>& info); |
| 2109 typedef void (*AccessorNameSetterCallback)( |
| 2110 Local<Name> property, |
| 2111 Local<Value> value, |
| 2112 const PropertyCallbackInfo<void>& info); |
2088 | 2113 |
2089 | 2114 |
2090 /** | 2115 /** |
2091 * Access control specifications. | 2116 * Access control specifications. |
2092 * | 2117 * |
2093 * Some accessors should be accessible across contexts. These | 2118 * Some accessors should be accessible across contexts. These |
2094 * accessors have an explicit access control parameter which specifies | 2119 * accessors have an explicit access control parameter which specifies |
2095 * the kind of cross-context access that should be allowed. | 2120 * the kind of cross-context access that should be allowed. |
2096 * | 2121 * |
2097 * TODO(dcarney): Remove PROHIBITS_OVERWRITING as it is now unused. | 2122 * TODO(dcarney): Remove PROHIBITS_OVERWRITING as it is now unused. |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2152 bool Has(uint32_t index); | 2177 bool Has(uint32_t index); |
2153 | 2178 |
2154 bool Delete(uint32_t index); | 2179 bool Delete(uint32_t index); |
2155 | 2180 |
2156 bool SetAccessor(Handle<String> name, | 2181 bool SetAccessor(Handle<String> name, |
2157 AccessorGetterCallback getter, | 2182 AccessorGetterCallback getter, |
2158 AccessorSetterCallback setter = 0, | 2183 AccessorSetterCallback setter = 0, |
2159 Handle<Value> data = Handle<Value>(), | 2184 Handle<Value> data = Handle<Value>(), |
2160 AccessControl settings = DEFAULT, | 2185 AccessControl settings = DEFAULT, |
2161 PropertyAttribute attribute = None); | 2186 PropertyAttribute attribute = None); |
| 2187 bool SetAccessor(Handle<Name> name, |
| 2188 AccessorNameGetterCallback getter, |
| 2189 AccessorNameSetterCallback setter = 0, |
| 2190 Handle<Value> data = Handle<Value>(), |
| 2191 AccessControl settings = DEFAULT, |
| 2192 PropertyAttribute attribute = None); |
2162 | 2193 |
2163 // This function is not yet stable and should not be used at this time. | 2194 // This function is not yet stable and should not be used at this time. |
2164 bool SetDeclaredAccessor(Local<String> name, | 2195 bool SetDeclaredAccessor(Local<Name> name, |
2165 Local<DeclaredAccessorDescriptor> descriptor, | 2196 Local<DeclaredAccessorDescriptor> descriptor, |
2166 PropertyAttribute attribute = None, | 2197 PropertyAttribute attribute = None, |
2167 AccessControl settings = DEFAULT); | 2198 AccessControl settings = DEFAULT); |
2168 | 2199 |
2169 void SetAccessorProperty(Local<String> name, | 2200 void SetAccessorProperty(Local<Name> name, |
2170 Local<Function> getter, | 2201 Local<Function> getter, |
2171 Handle<Function> setter = Handle<Function>(), | 2202 Handle<Function> setter = Handle<Function>(), |
2172 PropertyAttribute attribute = None, | 2203 PropertyAttribute attribute = None, |
2173 AccessControl settings = DEFAULT); | 2204 AccessControl settings = DEFAULT); |
2174 | 2205 |
2175 /** | 2206 /** |
2176 * Functionality for private properties. | 2207 * Functionality for private properties. |
2177 * This is an experimental feature, use at your own risk. | 2208 * This is an experimental feature, use at your own risk. |
2178 * Note: Private properties are inherited. Do not rely on this, since it may | 2209 * Note: Private properties are inherited. Do not rely on this, since it may |
2179 * change. | 2210 * change. |
(...skipping 981 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3161 | 3192 |
3162 // --- Templates --- | 3193 // --- Templates --- |
3163 | 3194 |
3164 | 3195 |
3165 /** | 3196 /** |
3166 * The superclass of object and function templates. | 3197 * The superclass of object and function templates. |
3167 */ | 3198 */ |
3168 class V8_EXPORT Template : public Data { | 3199 class V8_EXPORT Template : public Data { |
3169 public: | 3200 public: |
3170 /** Adds a property to each instance created by this template.*/ | 3201 /** Adds a property to each instance created by this template.*/ |
3171 void Set(Handle<String> name, Handle<Data> value, | 3202 void Set(Handle<Name> name, Handle<Data> value, |
3172 PropertyAttribute attributes = None); | 3203 PropertyAttribute attributes = None); |
3173 V8_INLINE void Set(Isolate* isolate, const char* name, Handle<Data> value); | 3204 V8_INLINE void Set(Isolate* isolate, const char* name, Handle<Data> value); |
3174 | 3205 |
3175 void SetAccessorProperty( | 3206 void SetAccessorProperty( |
3176 Local<String> name, | 3207 Local<Name> name, |
3177 Local<FunctionTemplate> getter = Local<FunctionTemplate>(), | 3208 Local<FunctionTemplate> getter = Local<FunctionTemplate>(), |
3178 Local<FunctionTemplate> setter = Local<FunctionTemplate>(), | 3209 Local<FunctionTemplate> setter = Local<FunctionTemplate>(), |
3179 PropertyAttribute attribute = None, | 3210 PropertyAttribute attribute = None, |
3180 AccessControl settings = DEFAULT); | 3211 AccessControl settings = DEFAULT); |
3181 | 3212 |
3182 /** | 3213 /** |
3183 * Whenever the property with the given name is accessed on objects | 3214 * Whenever the property with the given name is accessed on objects |
3184 * created from this Template the getter and setter callbacks | 3215 * created from this Template the getter and setter callbacks |
3185 * are called instead of getting and setting the property directly | 3216 * are called instead of getting and setting the property directly |
3186 * on the JavaScript object. | 3217 * on the JavaScript object. |
(...skipping 21 matching lines...) Expand all Loading... |
3208 */ | 3239 */ |
3209 void SetNativeDataProperty(Local<String> name, | 3240 void SetNativeDataProperty(Local<String> name, |
3210 AccessorGetterCallback getter, | 3241 AccessorGetterCallback getter, |
3211 AccessorSetterCallback setter = 0, | 3242 AccessorSetterCallback setter = 0, |
3212 // TODO(dcarney): gcc can't handle Local below | 3243 // TODO(dcarney): gcc can't handle Local below |
3213 Handle<Value> data = Handle<Value>(), | 3244 Handle<Value> data = Handle<Value>(), |
3214 PropertyAttribute attribute = None, | 3245 PropertyAttribute attribute = None, |
3215 Local<AccessorSignature> signature = | 3246 Local<AccessorSignature> signature = |
3216 Local<AccessorSignature>(), | 3247 Local<AccessorSignature>(), |
3217 AccessControl settings = DEFAULT); | 3248 AccessControl settings = DEFAULT); |
| 3249 void SetNativeDataProperty(Local<Name> name, |
| 3250 AccessorNameGetterCallback getter, |
| 3251 AccessorNameSetterCallback setter = 0, |
| 3252 // TODO(dcarney): gcc can't handle Local below |
| 3253 Handle<Value> data = Handle<Value>(), |
| 3254 PropertyAttribute attribute = None, |
| 3255 Local<AccessorSignature> signature = |
| 3256 Local<AccessorSignature>(), |
| 3257 AccessControl settings = DEFAULT); |
3218 | 3258 |
3219 // This function is not yet stable and should not be used at this time. | 3259 // This function is not yet stable and should not be used at this time. |
3220 bool SetDeclaredAccessor(Local<String> name, | 3260 bool SetDeclaredAccessor(Local<Name> name, |
3221 Local<DeclaredAccessorDescriptor> descriptor, | 3261 Local<DeclaredAccessorDescriptor> descriptor, |
3222 PropertyAttribute attribute = None, | 3262 PropertyAttribute attribute = None, |
3223 Local<AccessorSignature> signature = | 3263 Local<AccessorSignature> signature = |
3224 Local<AccessorSignature>(), | 3264 Local<AccessorSignature>(), |
3225 AccessControl settings = DEFAULT); | 3265 AccessControl settings = DEFAULT); |
3226 | 3266 |
3227 private: | 3267 private: |
3228 Template(); | 3268 Template(); |
3229 | 3269 |
3230 friend class ObjectTemplate; | 3270 friend class ObjectTemplate; |
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3577 * thrown and no callback is invoked. | 3617 * thrown and no callback is invoked. |
3578 */ | 3618 */ |
3579 void SetAccessor(Handle<String> name, | 3619 void SetAccessor(Handle<String> name, |
3580 AccessorGetterCallback getter, | 3620 AccessorGetterCallback getter, |
3581 AccessorSetterCallback setter = 0, | 3621 AccessorSetterCallback setter = 0, |
3582 Handle<Value> data = Handle<Value>(), | 3622 Handle<Value> data = Handle<Value>(), |
3583 AccessControl settings = DEFAULT, | 3623 AccessControl settings = DEFAULT, |
3584 PropertyAttribute attribute = None, | 3624 PropertyAttribute attribute = None, |
3585 Handle<AccessorSignature> signature = | 3625 Handle<AccessorSignature> signature = |
3586 Handle<AccessorSignature>()); | 3626 Handle<AccessorSignature>()); |
| 3627 void SetAccessor(Handle<Name> name, |
| 3628 AccessorNameGetterCallback getter, |
| 3629 AccessorNameSetterCallback setter = 0, |
| 3630 Handle<Value> data = Handle<Value>(), |
| 3631 AccessControl settings = DEFAULT, |
| 3632 PropertyAttribute attribute = None, |
| 3633 Handle<AccessorSignature> signature = |
| 3634 Handle<AccessorSignature>()); |
3587 | 3635 |
3588 /** | 3636 /** |
3589 * Sets a named property handler on the object template. | 3637 * Sets a named property handler on the object template. |
3590 * | 3638 * |
3591 * Whenever a named property is accessed on objects created from | 3639 * Whenever a property whose name is a string is accessed on objects created |
3592 * this object template, the provided callback is invoked instead of | 3640 * from this object template, the provided callback is invoked instead of |
3593 * accessing the property directly on the JavaScript object. | 3641 * accessing the property directly on the JavaScript object. |
3594 * | 3642 * |
3595 * \param getter The callback to invoke when getting a property. | 3643 * \param getter The callback to invoke when getting a property. |
3596 * \param setter The callback to invoke when setting a property. | 3644 * \param setter The callback to invoke when setting a property. |
3597 * \param query The callback to invoke to check if a property is present, | 3645 * \param query The callback to invoke to check if a property is present, |
3598 * and if present, get its attributes. | 3646 * and if present, get its attributes. |
3599 * \param deleter The callback to invoke when deleting a property. | 3647 * \param deleter The callback to invoke when deleting a property. |
3600 * \param enumerator The callback to invoke to enumerate all the named | 3648 * \param enumerator The callback to invoke to enumerate all the named |
3601 * properties of an object. | 3649 * properties of an object. |
3602 * \param data A piece of data that will be passed to the callbacks | 3650 * \param data A piece of data that will be passed to the callbacks |
(...skipping 2728 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6331 if (!I::HasHeapObjectTag(obj)) return false; | 6379 if (!I::HasHeapObjectTag(obj)) return false; |
6332 return (I::GetInstanceType(obj) < I::kFirstNonstringType); | 6380 return (I::GetInstanceType(obj) < I::kFirstNonstringType); |
6333 } | 6381 } |
6334 | 6382 |
6335 | 6383 |
6336 template <class T> Value* Value::Cast(T* value) { | 6384 template <class T> Value* Value::Cast(T* value) { |
6337 return static_cast<Value*>(value); | 6385 return static_cast<Value*>(value); |
6338 } | 6386 } |
6339 | 6387 |
6340 | 6388 |
| 6389 Name* Name::Cast(v8::Value* value) { |
| 6390 #ifdef V8_ENABLE_CHECKS |
| 6391 CheckCast(value); |
| 6392 #endif |
| 6393 return static_cast<Name*>(value); |
| 6394 } |
| 6395 |
| 6396 |
6341 Symbol* Symbol::Cast(v8::Value* value) { | 6397 Symbol* Symbol::Cast(v8::Value* value) { |
6342 #ifdef V8_ENABLE_CHECKS | 6398 #ifdef V8_ENABLE_CHECKS |
6343 CheckCast(value); | 6399 CheckCast(value); |
6344 #endif | 6400 #endif |
6345 return static_cast<Symbol*>(value); | 6401 return static_cast<Symbol*>(value); |
6346 } | 6402 } |
6347 | 6403 |
6348 | 6404 |
6349 Number* Number::Cast(v8::Value* value) { | 6405 Number* Number::Cast(v8::Value* value) { |
6350 #ifdef V8_ENABLE_CHECKS | 6406 #ifdef V8_ENABLE_CHECKS |
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6732 */ | 6788 */ |
6733 | 6789 |
6734 | 6790 |
6735 } // namespace v8 | 6791 } // namespace v8 |
6736 | 6792 |
6737 | 6793 |
6738 #undef TYPE_CHECK | 6794 #undef TYPE_CHECK |
6739 | 6795 |
6740 | 6796 |
6741 #endif // V8_H_ | 6797 #endif // V8_H_ |
OLD | NEW |