Initial commit
[yaffs-website] / node_modules / nan / nan_private.h
1 /*********************************************************************
2  * NAN - Native Abstractions for Node.js
3  *
4  * Copyright (c) 2017 NAN contributors
5  *
6  * MIT License <https://github.com/nodejs/nan/blob/master/LICENSE.md>
7  ********************************************************************/
8
9 #ifndef NAN_PRIVATE_H_
10 #define NAN_PRIVATE_H_
11
12 inline Maybe<bool>
13 HasPrivate(v8::Local<v8::Object> object, v8::Local<v8::String> key) {
14   HandleScope scope;
15 #if NODE_MODULE_VERSION >= NODE_6_0_MODULE_VERSION
16   v8::Isolate *isolate = v8::Isolate::GetCurrent();
17   v8::Local<v8::Context> context = isolate->GetCurrentContext();
18   v8::Local<v8::Private> private_key = v8::Private::ForApi(isolate, key);
19   return object->HasPrivate(context, private_key);
20 #else
21   return Just(!object->GetHiddenValue(key).IsEmpty());
22 #endif
23 }
24
25 inline MaybeLocal<v8::Value>
26 GetPrivate(v8::Local<v8::Object> object, v8::Local<v8::String> key) {
27 #if NODE_MODULE_VERSION >= NODE_6_0_MODULE_VERSION
28   v8::Isolate *isolate = v8::Isolate::GetCurrent();
29   v8::EscapableHandleScope scope(isolate);
30   v8::Local<v8::Context> context = isolate->GetCurrentContext();
31   v8::Local<v8::Private> private_key = v8::Private::ForApi(isolate, key);
32   v8::MaybeLocal<v8::Value> v = object->GetPrivate(context, private_key);
33   return scope.Escape(v.ToLocalChecked());
34 #else
35   EscapableHandleScope scope;
36   v8::Local<v8::Value> v = object->GetHiddenValue(key);
37   if (v.IsEmpty()) {
38     v = Undefined();
39   }
40   return scope.Escape(v);
41 #endif
42 }
43
44 inline Maybe<bool> SetPrivate(
45     v8::Local<v8::Object> object,
46     v8::Local<v8::String> key,
47     v8::Local<v8::Value> value) {
48 #if NODE_MODULE_VERSION >= NODE_6_0_MODULE_VERSION
49   HandleScope scope;
50   v8::Isolate *isolate = v8::Isolate::GetCurrent();
51   v8::Local<v8::Context> context = isolate->GetCurrentContext();
52   v8::Local<v8::Private> private_key = v8::Private::ForApi(isolate, key);
53   return object->SetPrivate(context, private_key, value);
54 #else
55   return Just(object->SetHiddenValue(key, value));
56 #endif
57 }
58
59 inline Maybe<bool> DeletePrivate(
60     v8::Local<v8::Object> object,
61     v8::Local<v8::String> key) {
62 #if NODE_MODULE_VERSION >= NODE_6_0_MODULE_VERSION
63   HandleScope scope;
64   v8::Isolate *isolate = v8::Isolate::GetCurrent();
65   v8::Local<v8::Private> private_key = v8::Private::ForApi(isolate, key);
66   return object->DeletePrivate(isolate->GetCurrentContext(), private_key);
67 #else
68   return Just(object->DeleteHiddenValue(key));
69 #endif
70 }
71
72 #endif  // NAN_PRIVATE_H_
73