Projekt

Obecné

Profil

Stáhnout (2.42 KB) Statistiky
| Větev: | Revize:
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_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

    
(22-22/26)