v8  10.1.124 (node 18.2.0)
V8 is Google's open source JavaScript engine
v8-container.h
Go to the documentation of this file.
1 // Copyright 2021 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef INCLUDE_V8_CONTAINER_H_
6 #define INCLUDE_V8_CONTAINER_H_
7 
8 #include <stddef.h>
9 #include <stdint.h>
10 
11 #include "v8-local-handle.h" // NOLINT(build/include_directory)
12 #include "v8-object.h" // NOLINT(build/include_directory)
13 #include "v8config.h" // NOLINT(build/include_directory)
14 
15 namespace v8 {
16 
17 class Context;
18 class Isolate;
19 
20 /**
21  * An instance of the built-in array constructor (ECMA-262, 15.4.2).
22  */
23 class V8_EXPORT Array : public Object {
24  public:
25  uint32_t Length() const;
26 
27  /**
28  * Creates a JavaScript array with the given length. If the length
29  * is negative the returned array will have length 0.
30  */
31  static Local<Array> New(Isolate* isolate, int length = 0);
32 
33  /**
34  * Creates a JavaScript array out of a Local<Value> array in C++
35  * with a known length.
36  */
37  static Local<Array> New(Isolate* isolate, Local<Value>* elements,
38  size_t length);
39  V8_INLINE static Array* Cast(Value* value) {
40 #ifdef V8_ENABLE_CHECKS
41  CheckCast(value);
42 #endif
43  return static_cast<Array*>(value);
44  }
45 
46  private:
47  Array();
48  static void CheckCast(Value* obj);
49 };
50 
51 /**
52  * An instance of the built-in Map constructor (ECMA-262, 6th Edition, 23.1.1).
53  */
54 class V8_EXPORT Map : public Object {
55  public:
56  size_t Size() const;
57  void Clear();
59  Local<Value> key);
61  Local<Value> key,
62  Local<Value> value);
64  Local<Value> key);
66  Local<Value> key);
67 
68  /**
69  * Returns an array of length Size() * 2, where index N is the Nth key and
70  * index N + 1 is the Nth value.
71  */
72  Local<Array> AsArray() const;
73 
74  /**
75  * Creates a new empty Map.
76  */
77  static Local<Map> New(Isolate* isolate);
78 
79  V8_INLINE static Map* Cast(Value* value) {
80 #ifdef V8_ENABLE_CHECKS
81  CheckCast(value);
82 #endif
83  return static_cast<Map*>(value);
84  }
85 
86  private:
87  Map();
88  static void CheckCast(Value* obj);
89 };
90 
91 /**
92  * An instance of the built-in Set constructor (ECMA-262, 6th Edition, 23.2.1).
93  */
94 class V8_EXPORT Set : public Object {
95  public:
96  size_t Size() const;
97  void Clear();
99  Local<Value> key);
101  Local<Value> key);
103  Local<Value> key);
104 
105  /**
106  * Returns an array of the keys in this Set.
107  */
108  Local<Array> AsArray() const;
109 
110  /**
111  * Creates a new empty Set.
112  */
113  static Local<Set> New(Isolate* isolate);
114 
115  V8_INLINE static Set* Cast(Value* value) {
116 #ifdef V8_ENABLE_CHECKS
117  CheckCast(value);
118 #endif
119  return static_cast<Set*>(value);
120  }
121 
122  private:
123  Set();
124  static void CheckCast(Value* obj);
125 };
126 
127 } // namespace v8
128 
129 #endif // INCLUDE_V8_CONTAINER_H_