installed pty
[VSoRC/.git] / node_modules / node-pty / node_modules / nan / nan_maybe_pre_43_inl.h
1 /*********************************************************************
2  * NAN - Native Abstractions for Node.js
3  *
4  * Copyright (c) 2018 NAN contributors
5  *
6  * MIT License <https://github.com/nodejs/nan/blob/master/LICENSE.md>
7  ********************************************************************/
8
9 #ifndef NAN_MAYBE_PRE_43_INL_H_
10 #define NAN_MAYBE_PRE_43_INL_H_
11
12 template<typename T>
13 class MaybeLocal {
14  public:
15   inline MaybeLocal() : val_(v8::Local<T>()) {}
16
17   template<typename S>
18 # if NODE_MODULE_VERSION >= NODE_0_12_MODULE_VERSION
19   inline
20   MaybeLocal(v8::Local<S> that) : val_(that) {}  // NOLINT(runtime/explicit)
21 # else
22   inline
23   MaybeLocal(v8::Local<S> that) :  // NOLINT(runtime/explicit)
24       val_(*reinterpret_cast<v8::Local<T>*>(&that)) {}
25 # endif
26
27   inline bool IsEmpty() const { return val_.IsEmpty(); }
28
29   template<typename S>
30   inline bool ToLocal(v8::Local<S> *out) const {
31     *out = val_;
32     return !IsEmpty();
33   }
34
35   inline v8::Local<T> ToLocalChecked() const {
36 #if defined(V8_ENABLE_CHECKS)
37     assert(!IsEmpty() && "ToLocalChecked is Empty");
38 #endif  // V8_ENABLE_CHECKS
39     return val_;
40   }
41
42   template<typename S>
43   inline v8::Local<S> FromMaybe(v8::Local<S> default_value) const {
44     return IsEmpty() ? default_value : v8::Local<S>(val_);
45   }
46
47  private:
48   v8::Local<T> val_;
49 };
50
51 inline
52 MaybeLocal<v8::String> ToDetailString(v8::Handle<v8::Value> val) {
53   return MaybeLocal<v8::String>(val->ToDetailString());
54 }
55
56 inline
57 MaybeLocal<v8::Uint32> ToArrayIndex(v8::Handle<v8::Value> val) {
58   return MaybeLocal<v8::Uint32>(val->ToArrayIndex());
59 }
60
61 inline
62 Maybe<bool> Equals(v8::Handle<v8::Value> a, v8::Handle<v8::Value>(b)) {
63   return Just<bool>(a->Equals(b));
64 }
65
66 inline
67 MaybeLocal<v8::Object> NewInstance(v8::Handle<v8::Function> h) {
68   return MaybeLocal<v8::Object>(h->NewInstance());
69 }
70
71 inline
72 MaybeLocal<v8::Object> NewInstance(
73       v8::Local<v8::Function> h
74     , int argc
75     , v8::Local<v8::Value> argv[]) {
76   return MaybeLocal<v8::Object>(h->NewInstance(argc, argv));
77 }
78
79 inline
80 MaybeLocal<v8::Object> NewInstance(v8::Handle<v8::ObjectTemplate> h) {
81   return MaybeLocal<v8::Object>(h->NewInstance());
82 }
83
84 inline
85 MaybeLocal<v8::Function> GetFunction(v8::Handle<v8::FunctionTemplate> t) {
86   return MaybeLocal<v8::Function>(t->GetFunction());
87 }
88
89 inline Maybe<bool> Set(
90     v8::Handle<v8::Object> obj
91   , v8::Handle<v8::Value> key
92   , v8::Handle<v8::Value> value) {
93   return Just<bool>(obj->Set(key, value));
94 }
95
96 inline Maybe<bool> Set(
97     v8::Handle<v8::Object> obj
98   , uint32_t index
99   , v8::Handle<v8::Value> value) {
100   return Just<bool>(obj->Set(index, value));
101 }
102
103 #include "nan_define_own_property_helper.h"  // NOLINT(build/include)
104
105 inline Maybe<bool> DefineOwnProperty(
106     v8::Handle<v8::Object> obj
107   , v8::Handle<v8::String> key
108   , v8::Handle<v8::Value> value
109   , v8::PropertyAttribute attribs = v8::None) {
110   v8::PropertyAttribute current = obj->GetPropertyAttributes(key);
111   return imp::DefineOwnPropertyHelper(current, obj, key, value, attribs);
112 }
113
114 NAN_DEPRECATED inline Maybe<bool> ForceSet(
115     v8::Handle<v8::Object> obj
116   , v8::Handle<v8::Value> key
117   , v8::Handle<v8::Value> value
118   , v8::PropertyAttribute attribs = v8::None) {
119   return Just<bool>(obj->ForceSet(key, value, attribs));
120 }
121
122 inline MaybeLocal<v8::Value> Get(
123     v8::Handle<v8::Object> obj
124   , v8::Handle<v8::Value> key) {
125   return MaybeLocal<v8::Value>(obj->Get(key));
126 }
127
128 inline MaybeLocal<v8::Value> Get(
129     v8::Handle<v8::Object> obj
130   , uint32_t index) {
131   return MaybeLocal<v8::Value>(obj->Get(index));
132 }
133
134 inline Maybe<v8::PropertyAttribute> GetPropertyAttributes(
135     v8::Handle<v8::Object> obj
136   , v8::Handle<v8::Value> key) {
137   return Just<v8::PropertyAttribute>(obj->GetPropertyAttributes(key));
138 }
139
140 inline Maybe<bool> Has(
141     v8::Handle<v8::Object> obj
142   , v8::Handle<v8::String> key) {
143   return Just<bool>(obj->Has(key));
144 }
145
146 inline Maybe<bool> Has(
147     v8::Handle<v8::Object> obj
148   , uint32_t index) {
149   return Just<bool>(obj->Has(index));
150 }
151
152 inline Maybe<bool> Delete(
153     v8::Handle<v8::Object> obj
154   , v8::Handle<v8::String> key) {
155   return Just<bool>(obj->Delete(key));
156 }
157
158 inline Maybe<bool> Delete(
159     v8::Handle<v8::Object> obj
160   , uint32_t index) {
161   return Just<bool>(obj->Delete(index));
162 }
163
164 inline
165 MaybeLocal<v8::Array> GetPropertyNames(v8::Handle<v8::Object> obj) {
166   return MaybeLocal<v8::Array>(obj->GetPropertyNames());
167 }
168
169 inline
170 MaybeLocal<v8::Array> GetOwnPropertyNames(v8::Handle<v8::Object> obj) {
171   return MaybeLocal<v8::Array>(obj->GetOwnPropertyNames());
172 }
173
174 inline Maybe<bool> SetPrototype(
175     v8::Handle<v8::Object> obj
176   , v8::Handle<v8::Value> prototype) {
177   return Just<bool>(obj->SetPrototype(prototype));
178 }
179
180 inline MaybeLocal<v8::String> ObjectProtoToString(
181     v8::Handle<v8::Object> obj) {
182   return MaybeLocal<v8::String>(obj->ObjectProtoToString());
183 }
184
185 inline Maybe<bool> HasOwnProperty(
186     v8::Handle<v8::Object> obj
187   , v8::Handle<v8::String> key) {
188   return Just<bool>(obj->HasOwnProperty(key));
189 }
190
191 inline Maybe<bool> HasRealNamedProperty(
192     v8::Handle<v8::Object> obj
193   , v8::Handle<v8::String> key) {
194   return Just<bool>(obj->HasRealNamedProperty(key));
195 }
196
197 inline Maybe<bool> HasRealIndexedProperty(
198     v8::Handle<v8::Object> obj
199   , uint32_t index) {
200   return Just<bool>(obj->HasRealIndexedProperty(index));
201 }
202
203 inline Maybe<bool> HasRealNamedCallbackProperty(
204     v8::Handle<v8::Object> obj
205   , v8::Handle<v8::String> key) {
206   return Just<bool>(obj->HasRealNamedCallbackProperty(key));
207 }
208
209 inline MaybeLocal<v8::Value> GetRealNamedPropertyInPrototypeChain(
210     v8::Handle<v8::Object> obj
211   , v8::Handle<v8::String> key) {
212   return MaybeLocal<v8::Value>(
213       obj->GetRealNamedPropertyInPrototypeChain(key));
214 }
215
216 inline MaybeLocal<v8::Value> GetRealNamedProperty(
217     v8::Handle<v8::Object> obj
218   , v8::Handle<v8::String> key) {
219   return MaybeLocal<v8::Value>(obj->GetRealNamedProperty(key));
220 }
221
222 inline MaybeLocal<v8::Value> CallAsFunction(
223     v8::Handle<v8::Object> obj
224   , v8::Handle<v8::Object> recv
225   , int argc
226   , v8::Handle<v8::Value> argv[]) {
227   return MaybeLocal<v8::Value>(obj->CallAsFunction(recv, argc, argv));
228 }
229
230 inline MaybeLocal<v8::Value> CallAsConstructor(
231     v8::Handle<v8::Object> obj
232   , int argc
233   , v8::Local<v8::Value> argv[]) {
234   return MaybeLocal<v8::Value>(obj->CallAsConstructor(argc, argv));
235 }
236
237 inline
238 MaybeLocal<v8::String> GetSourceLine(v8::Handle<v8::Message> msg) {
239   return MaybeLocal<v8::String>(msg->GetSourceLine());
240 }
241
242 inline Maybe<int> GetLineNumber(v8::Handle<v8::Message> msg) {
243   return Just<int>(msg->GetLineNumber());
244 }
245
246 inline Maybe<int> GetStartColumn(v8::Handle<v8::Message> msg) {
247   return Just<int>(msg->GetStartColumn());
248 }
249
250 inline Maybe<int> GetEndColumn(v8::Handle<v8::Message> msg) {
251   return Just<int>(msg->GetEndColumn());
252 }
253
254 inline MaybeLocal<v8::Object> CloneElementAt(
255     v8::Handle<v8::Array> array
256   , uint32_t index) {
257   return MaybeLocal<v8::Object>(array->CloneElementAt(index));
258 }
259
260 inline MaybeLocal<v8::Value> Call(
261     v8::Local<v8::Function> fun
262   , v8::Local<v8::Object> recv
263   , int argc
264   , v8::Local<v8::Value> argv[]) {
265   return MaybeLocal<v8::Value>(fun->Call(recv, argc, argv));
266 }
267
268 #endif  // NAN_MAYBE_PRE_43_INL_H_