|
|
/*********************************************************************
* 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_
|