You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							73 lines
						
					
					
						
							2.4 KiB
						
					
					
				
			
		
		
	
	
							73 lines
						
					
					
						
							2.4 KiB
						
					
					
				/********************************************************************* | 
						|
 * NAN - Native Abstractions for Node.js | 
						|
 * | 
						|
 * Copyright (c) 2018 NAN contributors | 
						|
 * | 
						|
 * MIT License <https://github.com/nodejs/nan/blob/master/LICENSE.md> | 
						|
 ********************************************************************/ | 
						|
 | 
						|
#ifndef NAN_PRIVATE_H_ | 
						|
#define NAN_PRIVATE_H_ | 
						|
 | 
						|
inline Maybe<bool> | 
						|
HasPrivate(v8::Local<v8::Object> object, v8::Local<v8::String> key) { | 
						|
  HandleScope scope; | 
						|
#if NODE_MODULE_VERSION >= NODE_6_0_MODULE_VERSION | 
						|
  v8::Isolate *isolate = v8::Isolate::GetCurrent(); | 
						|
  v8::Local<v8::Context> context = isolate->GetCurrentContext(); | 
						|
  v8::Local<v8::Private> private_key = v8::Private::ForApi(isolate, key); | 
						|
  return object->HasPrivate(context, private_key); | 
						|
#else | 
						|
  return Just(!object->GetHiddenValue(key).IsEmpty()); | 
						|
#endif | 
						|
} | 
						|
 | 
						|
inline MaybeLocal<v8::Value> | 
						|
GetPrivate(v8::Local<v8::Object> object, v8::Local<v8::String> key) { | 
						|
#if NODE_MODULE_VERSION >= NODE_6_0_MODULE_VERSION | 
						|
  v8::Isolate *isolate = v8::Isolate::GetCurrent(); | 
						|
  v8::EscapableHandleScope scope(isolate); | 
						|
  v8::Local<v8::Context> context = isolate->GetCurrentContext(); | 
						|
  v8::Local<v8::Private> private_key = v8::Private::ForApi(isolate, key); | 
						|
  v8::MaybeLocal<v8::Value> v = object->GetPrivate(context, private_key); | 
						|
  return scope.Escape(v.ToLocalChecked()); | 
						|
#else | 
						|
  EscapableHandleScope scope; | 
						|
  v8::Local<v8::Value> v = object->GetHiddenValue(key); | 
						|
  if (v.IsEmpty()) { | 
						|
    v = Undefined(); | 
						|
  } | 
						|
  return scope.Escape(v); | 
						|
#endif | 
						|
} | 
						|
 | 
						|
inline Maybe<bool> SetPrivate( | 
						|
    v8::Local<v8::Object> object, | 
						|
    v8::Local<v8::String> key, | 
						|
    v8::Local<v8::Value> value) { | 
						|
#if NODE_MODULE_VERSION >= NODE_6_0_MODULE_VERSION | 
						|
  HandleScope scope; | 
						|
  v8::Isolate *isolate = v8::Isolate::GetCurrent(); | 
						|
  v8::Local<v8::Context> context = isolate->GetCurrentContext(); | 
						|
  v8::Local<v8::Private> private_key = v8::Private::ForApi(isolate, key); | 
						|
  return object->SetPrivate(context, private_key, value); | 
						|
#else | 
						|
  return Just(object->SetHiddenValue(key, value)); | 
						|
#endif | 
						|
} | 
						|
 | 
						|
inline Maybe<bool> DeletePrivate( | 
						|
    v8::Local<v8::Object> object, | 
						|
    v8::Local<v8::String> key) { | 
						|
#if NODE_MODULE_VERSION >= NODE_6_0_MODULE_VERSION | 
						|
  HandleScope scope; | 
						|
  v8::Isolate *isolate = v8::Isolate::GetCurrent(); | 
						|
  v8::Local<v8::Private> private_key = v8::Private::ForApi(isolate, key); | 
						|
  return object->DeletePrivate(isolate->GetCurrentContext(), private_key); | 
						|
#else | 
						|
  return Just(object->DeleteHiddenValue(key)); | 
						|
#endif | 
						|
} | 
						|
 | 
						|
#endif  // NAN_PRIVATE_H_ | 
						|
 | 
						|
 |