File indexing completed on 2025-02-21 10:05:23
0001
0002
0003
0004
0005 #ifndef INCLUDE_V8_CONTAINER_H_
0006 #define INCLUDE_V8_CONTAINER_H_
0007
0008 #include <stddef.h>
0009 #include <stdint.h>
0010
0011 #include <functional>
0012
0013 #include "v8-local-handle.h" // NOLINT(build/include_directory)
0014 #include "v8-object.h" // NOLINT(build/include_directory)
0015 #include "v8config.h" // NOLINT(build/include_directory)
0016
0017 namespace v8 {
0018
0019 class Context;
0020 class Isolate;
0021
0022
0023
0024
0025 class V8_EXPORT Array : public Object {
0026 public:
0027 uint32_t Length() const;
0028
0029
0030
0031
0032
0033 static Local<Array> New(Isolate* isolate, int length = 0);
0034
0035
0036
0037
0038
0039 static Local<Array> New(Isolate* isolate, Local<Value>* elements,
0040 size_t length);
0041 V8_INLINE static Array* Cast(Value* value) {
0042 #ifdef V8_ENABLE_CHECKS
0043 CheckCast(value);
0044 #endif
0045 return static_cast<Array*>(value);
0046 }
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060 static MaybeLocal<Array> New(
0061 Local<Context> context, size_t length,
0062 std::function<MaybeLocal<v8::Value>()> next_value_callback);
0063
0064 enum class CallbackResult {
0065 kException,
0066 kBreak,
0067 kContinue,
0068 };
0069 using IterationCallback = CallbackResult (*)(uint32_t index,
0070 Local<Value> element,
0071 void* data);
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097 Maybe<void> Iterate(Local<Context> context, IterationCallback callback,
0098 void* callback_data);
0099
0100 private:
0101 Array();
0102 static void CheckCast(Value* obj);
0103 };
0104
0105
0106
0107
0108 class V8_EXPORT Map : public Object {
0109 public:
0110 size_t Size() const;
0111 void Clear();
0112 V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
0113 Local<Value> key);
0114 V8_WARN_UNUSED_RESULT MaybeLocal<Map> Set(Local<Context> context,
0115 Local<Value> key,
0116 Local<Value> value);
0117 V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
0118 Local<Value> key);
0119 V8_WARN_UNUSED_RESULT Maybe<bool> Delete(Local<Context> context,
0120 Local<Value> key);
0121
0122
0123
0124
0125
0126 Local<Array> AsArray() const;
0127
0128
0129
0130
0131 static Local<Map> New(Isolate* isolate);
0132
0133 V8_INLINE static Map* Cast(Value* value) {
0134 #ifdef V8_ENABLE_CHECKS
0135 CheckCast(value);
0136 #endif
0137 return static_cast<Map*>(value);
0138 }
0139
0140 private:
0141 Map();
0142 static void CheckCast(Value* obj);
0143 };
0144
0145
0146
0147
0148 class V8_EXPORT Set : public Object {
0149 public:
0150 size_t Size() const;
0151 void Clear();
0152 V8_WARN_UNUSED_RESULT MaybeLocal<Set> Add(Local<Context> context,
0153 Local<Value> key);
0154 V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
0155 Local<Value> key);
0156 V8_WARN_UNUSED_RESULT Maybe<bool> Delete(Local<Context> context,
0157 Local<Value> key);
0158
0159
0160
0161
0162 Local<Array> AsArray() const;
0163
0164
0165
0166
0167 static Local<Set> New(Isolate* isolate);
0168
0169 V8_INLINE static Set* Cast(Value* value) {
0170 #ifdef V8_ENABLE_CHECKS
0171 CheckCast(value);
0172 #endif
0173 return static_cast<Set*>(value);
0174 }
0175
0176 private:
0177 Set();
0178 static void CheckCast(Value* obj);
0179 };
0180
0181 }
0182
0183 #endif