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.
		
		
		
		
		
			
		
			
				
					
					
						
							268 lines
						
					
					
						
							7.0 KiB
						
					
					
				
			
		
		
	
	
							268 lines
						
					
					
						
							7.0 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_MAYBE_PRE_43_INL_H_ | 
						|
#define NAN_MAYBE_PRE_43_INL_H_ | 
						|
 | 
						|
template<typename T> | 
						|
class MaybeLocal { | 
						|
 public: | 
						|
  inline MaybeLocal() : val_(v8::Local<T>()) {} | 
						|
 | 
						|
  template<typename S> | 
						|
# if NODE_MODULE_VERSION >= NODE_0_12_MODULE_VERSION | 
						|
  inline | 
						|
  MaybeLocal(v8::Local<S> that) : val_(that) {}  // NOLINT(runtime/explicit) | 
						|
# else | 
						|
  inline | 
						|
  MaybeLocal(v8::Local<S> that) :  // NOLINT(runtime/explicit) | 
						|
      val_(*reinterpret_cast<v8::Local<T>*>(&that)) {} | 
						|
# endif | 
						|
 | 
						|
  inline bool IsEmpty() const { return val_.IsEmpty(); } | 
						|
 | 
						|
  template<typename S> | 
						|
  inline bool ToLocal(v8::Local<S> *out) const { | 
						|
    *out = val_; | 
						|
    return !IsEmpty(); | 
						|
  } | 
						|
 | 
						|
  inline v8::Local<T> ToLocalChecked() const { | 
						|
#if defined(V8_ENABLE_CHECKS) | 
						|
    assert(!IsEmpty() && "ToLocalChecked is Empty"); | 
						|
#endif  // V8_ENABLE_CHECKS | 
						|
    return val_; | 
						|
  } | 
						|
 | 
						|
  template<typename S> | 
						|
  inline v8::Local<S> FromMaybe(v8::Local<S> default_value) const { | 
						|
    return IsEmpty() ? default_value : v8::Local<S>(val_); | 
						|
  } | 
						|
 | 
						|
 private: | 
						|
  v8::Local<T> val_; | 
						|
}; | 
						|
 | 
						|
inline | 
						|
MaybeLocal<v8::String> ToDetailString(v8::Handle<v8::Value> val) { | 
						|
  return MaybeLocal<v8::String>(val->ToDetailString()); | 
						|
} | 
						|
 | 
						|
inline | 
						|
MaybeLocal<v8::Uint32> ToArrayIndex(v8::Handle<v8::Value> val) { | 
						|
  return MaybeLocal<v8::Uint32>(val->ToArrayIndex()); | 
						|
} | 
						|
 | 
						|
inline | 
						|
Maybe<bool> Equals(v8::Handle<v8::Value> a, v8::Handle<v8::Value>(b)) { | 
						|
  return Just<bool>(a->Equals(b)); | 
						|
} | 
						|
 | 
						|
inline | 
						|
MaybeLocal<v8::Object> NewInstance(v8::Handle<v8::Function> h) { | 
						|
  return MaybeLocal<v8::Object>(h->NewInstance()); | 
						|
} | 
						|
 | 
						|
inline | 
						|
MaybeLocal<v8::Object> NewInstance( | 
						|
      v8::Local<v8::Function> h | 
						|
    , int argc | 
						|
    , v8::Local<v8::Value> argv[]) { | 
						|
  return MaybeLocal<v8::Object>(h->NewInstance(argc, argv)); | 
						|
} | 
						|
 | 
						|
inline | 
						|
MaybeLocal<v8::Object> NewInstance(v8::Handle<v8::ObjectTemplate> h) { | 
						|
  return MaybeLocal<v8::Object>(h->NewInstance()); | 
						|
} | 
						|
 | 
						|
inline | 
						|
MaybeLocal<v8::Function> GetFunction(v8::Handle<v8::FunctionTemplate> t) { | 
						|
  return MaybeLocal<v8::Function>(t->GetFunction()); | 
						|
} | 
						|
 | 
						|
inline Maybe<bool> Set( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , v8::Handle<v8::Value> key | 
						|
  , v8::Handle<v8::Value> value) { | 
						|
  return Just<bool>(obj->Set(key, value)); | 
						|
} | 
						|
 | 
						|
inline Maybe<bool> Set( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , uint32_t index | 
						|
  , v8::Handle<v8::Value> value) { | 
						|
  return Just<bool>(obj->Set(index, value)); | 
						|
} | 
						|
 | 
						|
#include "nan_define_own_property_helper.h"  // NOLINT(build/include) | 
						|
 | 
						|
inline Maybe<bool> DefineOwnProperty( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , v8::Handle<v8::String> key | 
						|
  , v8::Handle<v8::Value> value | 
						|
  , v8::PropertyAttribute attribs = v8::None) { | 
						|
  v8::PropertyAttribute current = obj->GetPropertyAttributes(key); | 
						|
  return imp::DefineOwnPropertyHelper(current, obj, key, value, attribs); | 
						|
} | 
						|
 | 
						|
NAN_DEPRECATED inline Maybe<bool> ForceSet( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , v8::Handle<v8::Value> key | 
						|
  , v8::Handle<v8::Value> value | 
						|
  , v8::PropertyAttribute attribs = v8::None) { | 
						|
  return Just<bool>(obj->ForceSet(key, value, attribs)); | 
						|
} | 
						|
 | 
						|
inline MaybeLocal<v8::Value> Get( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , v8::Handle<v8::Value> key) { | 
						|
  return MaybeLocal<v8::Value>(obj->Get(key)); | 
						|
} | 
						|
 | 
						|
inline MaybeLocal<v8::Value> Get( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , uint32_t index) { | 
						|
  return MaybeLocal<v8::Value>(obj->Get(index)); | 
						|
} | 
						|
 | 
						|
inline Maybe<v8::PropertyAttribute> GetPropertyAttributes( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , v8::Handle<v8::Value> key) { | 
						|
  return Just<v8::PropertyAttribute>(obj->GetPropertyAttributes(key)); | 
						|
} | 
						|
 | 
						|
inline Maybe<bool> Has( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , v8::Handle<v8::String> key) { | 
						|
  return Just<bool>(obj->Has(key)); | 
						|
} | 
						|
 | 
						|
inline Maybe<bool> Has( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , uint32_t index) { | 
						|
  return Just<bool>(obj->Has(index)); | 
						|
} | 
						|
 | 
						|
inline Maybe<bool> Delete( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , v8::Handle<v8::String> key) { | 
						|
  return Just<bool>(obj->Delete(key)); | 
						|
} | 
						|
 | 
						|
inline Maybe<bool> Delete( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , uint32_t index) { | 
						|
  return Just<bool>(obj->Delete(index)); | 
						|
} | 
						|
 | 
						|
inline | 
						|
MaybeLocal<v8::Array> GetPropertyNames(v8::Handle<v8::Object> obj) { | 
						|
  return MaybeLocal<v8::Array>(obj->GetPropertyNames()); | 
						|
} | 
						|
 | 
						|
inline | 
						|
MaybeLocal<v8::Array> GetOwnPropertyNames(v8::Handle<v8::Object> obj) { | 
						|
  return MaybeLocal<v8::Array>(obj->GetOwnPropertyNames()); | 
						|
} | 
						|
 | 
						|
inline Maybe<bool> SetPrototype( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , v8::Handle<v8::Value> prototype) { | 
						|
  return Just<bool>(obj->SetPrototype(prototype)); | 
						|
} | 
						|
 | 
						|
inline MaybeLocal<v8::String> ObjectProtoToString( | 
						|
    v8::Handle<v8::Object> obj) { | 
						|
  return MaybeLocal<v8::String>(obj->ObjectProtoToString()); | 
						|
} | 
						|
 | 
						|
inline Maybe<bool> HasOwnProperty( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , v8::Handle<v8::String> key) { | 
						|
  return Just<bool>(obj->HasOwnProperty(key)); | 
						|
} | 
						|
 | 
						|
inline Maybe<bool> HasRealNamedProperty( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , v8::Handle<v8::String> key) { | 
						|
  return Just<bool>(obj->HasRealNamedProperty(key)); | 
						|
} | 
						|
 | 
						|
inline Maybe<bool> HasRealIndexedProperty( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , uint32_t index) { | 
						|
  return Just<bool>(obj->HasRealIndexedProperty(index)); | 
						|
} | 
						|
 | 
						|
inline Maybe<bool> HasRealNamedCallbackProperty( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , v8::Handle<v8::String> key) { | 
						|
  return Just<bool>(obj->HasRealNamedCallbackProperty(key)); | 
						|
} | 
						|
 | 
						|
inline MaybeLocal<v8::Value> GetRealNamedPropertyInPrototypeChain( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , v8::Handle<v8::String> key) { | 
						|
  return MaybeLocal<v8::Value>( | 
						|
      obj->GetRealNamedPropertyInPrototypeChain(key)); | 
						|
} | 
						|
 | 
						|
inline MaybeLocal<v8::Value> GetRealNamedProperty( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , v8::Handle<v8::String> key) { | 
						|
  return MaybeLocal<v8::Value>(obj->GetRealNamedProperty(key)); | 
						|
} | 
						|
 | 
						|
inline MaybeLocal<v8::Value> CallAsFunction( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , v8::Handle<v8::Object> recv | 
						|
  , int argc | 
						|
  , v8::Handle<v8::Value> argv[]) { | 
						|
  return MaybeLocal<v8::Value>(obj->CallAsFunction(recv, argc, argv)); | 
						|
} | 
						|
 | 
						|
inline MaybeLocal<v8::Value> CallAsConstructor( | 
						|
    v8::Handle<v8::Object> obj | 
						|
  , int argc | 
						|
  , v8::Local<v8::Value> argv[]) { | 
						|
  return MaybeLocal<v8::Value>(obj->CallAsConstructor(argc, argv)); | 
						|
} | 
						|
 | 
						|
inline | 
						|
MaybeLocal<v8::String> GetSourceLine(v8::Handle<v8::Message> msg) { | 
						|
  return MaybeLocal<v8::String>(msg->GetSourceLine()); | 
						|
} | 
						|
 | 
						|
inline Maybe<int> GetLineNumber(v8::Handle<v8::Message> msg) { | 
						|
  return Just<int>(msg->GetLineNumber()); | 
						|
} | 
						|
 | 
						|
inline Maybe<int> GetStartColumn(v8::Handle<v8::Message> msg) { | 
						|
  return Just<int>(msg->GetStartColumn()); | 
						|
} | 
						|
 | 
						|
inline Maybe<int> GetEndColumn(v8::Handle<v8::Message> msg) { | 
						|
  return Just<int>(msg->GetEndColumn()); | 
						|
} | 
						|
 | 
						|
inline MaybeLocal<v8::Object> CloneElementAt( | 
						|
    v8::Handle<v8::Array> array | 
						|
  , uint32_t index) { | 
						|
  return MaybeLocal<v8::Object>(array->CloneElementAt(index)); | 
						|
} | 
						|
 | 
						|
inline MaybeLocal<v8::Value> Call( | 
						|
    v8::Local<v8::Function> fun | 
						|
  , v8::Local<v8::Object> recv | 
						|
  , int argc | 
						|
  , v8::Local<v8::Value> argv[]) { | 
						|
  return MaybeLocal<v8::Value>(fun->Call(recv, argc, argv)); | 
						|
} | 
						|
 | 
						|
#endif  // NAN_MAYBE_PRE_43_INL_H_
 | 
						|
 |