diff options
Diffstat (limited to 'node_modules/nan/nan_maybe_43_inl.h')
-rw-r--r-- | node_modules/nan/nan_maybe_43_inl.h | 356 |
1 files changed, 356 insertions, 0 deletions
diff --git a/node_modules/nan/nan_maybe_43_inl.h b/node_modules/nan/nan_maybe_43_inl.h new file mode 100644 index 0000000..c04ce30 --- /dev/null +++ b/node_modules/nan/nan_maybe_43_inl.h @@ -0,0 +1,356 @@ +/********************************************************************* + * 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_43_INL_H_ +#define NAN_MAYBE_43_INL_H_ + +template<typename T> +using MaybeLocal = v8::MaybeLocal<T>; + +inline +MaybeLocal<v8::String> ToDetailString(v8::Local<v8::Value> val) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::EscapableHandleScope scope(isolate); + return scope.Escape(val->ToDetailString(isolate->GetCurrentContext()) + .FromMaybe(v8::Local<v8::String>())); +} + +inline +MaybeLocal<v8::Uint32> ToArrayIndex(v8::Local<v8::Value> val) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::EscapableHandleScope scope(isolate); + return scope.Escape(val->ToArrayIndex(isolate->GetCurrentContext()) + .FromMaybe(v8::Local<v8::Uint32>())); +} + +inline +Maybe<bool> Equals(v8::Local<v8::Value> a, v8::Local<v8::Value>(b)) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::HandleScope scope(isolate); + return a->Equals(isolate->GetCurrentContext(), b); +} + +inline +MaybeLocal<v8::Object> NewInstance(v8::Local<v8::Function> h) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::EscapableHandleScope scope(isolate); + return scope.Escape(h->NewInstance(isolate->GetCurrentContext()) + .FromMaybe(v8::Local<v8::Object>())); +} + +inline +MaybeLocal<v8::Object> NewInstance( + v8::Local<v8::Function> h + , int argc + , v8::Local<v8::Value> argv[]) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::EscapableHandleScope scope(isolate); + return scope.Escape(h->NewInstance(isolate->GetCurrentContext(), argc, argv) + .FromMaybe(v8::Local<v8::Object>())); +} + +inline +MaybeLocal<v8::Object> NewInstance(v8::Local<v8::ObjectTemplate> h) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::EscapableHandleScope scope(isolate); + return scope.Escape(h->NewInstance(isolate->GetCurrentContext()) + .FromMaybe(v8::Local<v8::Object>())); +} + + +inline MaybeLocal<v8::Function> GetFunction( + v8::Local<v8::FunctionTemplate> t) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::EscapableHandleScope scope(isolate); + return scope.Escape(t->GetFunction(isolate->GetCurrentContext()) + .FromMaybe(v8::Local<v8::Function>())); +} + +inline Maybe<bool> Set( + v8::Local<v8::Object> obj + , v8::Local<v8::Value> key + , v8::Local<v8::Value> value) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::HandleScope scope(isolate); + return obj->Set(isolate->GetCurrentContext(), key, value); +} + +inline Maybe<bool> Set( + v8::Local<v8::Object> obj + , uint32_t index + , v8::Local<v8::Value> value) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::HandleScope scope(isolate); + return obj->Set(isolate->GetCurrentContext(), index, value); +} + +#if NODE_MODULE_VERSION < NODE_4_0_MODULE_VERSION +#include "nan_define_own_property_helper.h" // NOLINT(build/include) +#endif + +inline Maybe<bool> DefineOwnProperty( + v8::Local<v8::Object> obj + , v8::Local<v8::String> key + , v8::Local<v8::Value> value + , v8::PropertyAttribute attribs = v8::None) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::HandleScope scope(isolate); +#if NODE_MODULE_VERSION >= NODE_4_0_MODULE_VERSION + return obj->DefineOwnProperty(isolate->GetCurrentContext(), key, value, + attribs); +#else + Maybe<v8::PropertyAttribute> maybeCurrent = + obj->GetPropertyAttributes(isolate->GetCurrentContext(), key); + if (maybeCurrent.IsNothing()) { + return Nothing<bool>(); + } + v8::PropertyAttribute current = maybeCurrent.FromJust(); + return imp::DefineOwnPropertyHelper(current, obj, key, value, attribs); +#endif +} + +NAN_DEPRECATED inline Maybe<bool> ForceSet( + v8::Local<v8::Object> obj + , v8::Local<v8::Value> key + , v8::Local<v8::Value> value + , v8::PropertyAttribute attribs = v8::None) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::HandleScope scope(isolate); +#if NODE_MODULE_VERSION >= NODE_9_0_MODULE_VERSION + return key->IsName() + ? obj->DefineOwnProperty(isolate->GetCurrentContext(), + key.As<v8::Name>(), value, attribs) + : Nothing<bool>(); +#else + return obj->ForceSet(isolate->GetCurrentContext(), key, value, attribs); +#endif +} + +inline MaybeLocal<v8::Value> Get( + v8::Local<v8::Object> obj + , v8::Local<v8::Value> key) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::EscapableHandleScope scope(isolate); + return scope.Escape(obj->Get(isolate->GetCurrentContext(), key) + .FromMaybe(v8::Local<v8::Value>())); +} + +inline +MaybeLocal<v8::Value> Get(v8::Local<v8::Object> obj, uint32_t index) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::EscapableHandleScope scope(isolate); + return scope.Escape(obj->Get(isolate->GetCurrentContext(), index) + .FromMaybe(v8::Local<v8::Value>())); +} + +inline v8::PropertyAttribute GetPropertyAttributes( + v8::Local<v8::Object> obj + , v8::Local<v8::Value> key) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::HandleScope scope(isolate); + return obj->GetPropertyAttributes(isolate->GetCurrentContext(), key) + .FromJust(); +} + +inline Maybe<bool> Has( + v8::Local<v8::Object> obj + , v8::Local<v8::String> key) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::HandleScope scope(isolate); + return obj->Has(isolate->GetCurrentContext(), key); +} + +inline Maybe<bool> Has(v8::Local<v8::Object> obj, uint32_t index) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::HandleScope scope(isolate); + return obj->Has(isolate->GetCurrentContext(), index); +} + +inline Maybe<bool> Delete( + v8::Local<v8::Object> obj + , v8::Local<v8::String> key) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::HandleScope scope(isolate); + return obj->Delete(isolate->GetCurrentContext(), key); +} + +inline +Maybe<bool> Delete(v8::Local<v8::Object> obj, uint32_t index) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::HandleScope scope(isolate); + return obj->Delete(isolate->GetCurrentContext(), index); +} + +inline +MaybeLocal<v8::Array> GetPropertyNames(v8::Local<v8::Object> obj) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::EscapableHandleScope scope(isolate); + return scope.Escape(obj->GetPropertyNames(isolate->GetCurrentContext()) + .FromMaybe(v8::Local<v8::Array>())); +} + +inline +MaybeLocal<v8::Array> GetOwnPropertyNames(v8::Local<v8::Object> obj) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::EscapableHandleScope scope(isolate); + return scope.Escape(obj->GetOwnPropertyNames(isolate->GetCurrentContext()) + .FromMaybe(v8::Local<v8::Array>())); +} + +inline Maybe<bool> SetPrototype( + v8::Local<v8::Object> obj + , v8::Local<v8::Value> prototype) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::HandleScope scope(isolate); + return obj->SetPrototype(isolate->GetCurrentContext(), prototype); +} + +inline MaybeLocal<v8::String> ObjectProtoToString( + v8::Local<v8::Object> obj) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::EscapableHandleScope scope(isolate); + return scope.Escape(obj->ObjectProtoToString(isolate->GetCurrentContext()) + .FromMaybe(v8::Local<v8::String>())); +} + +inline Maybe<bool> HasOwnProperty( + v8::Local<v8::Object> obj + , v8::Local<v8::String> key) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::HandleScope scope(isolate); + return obj->HasOwnProperty(isolate->GetCurrentContext(), key); +} + +inline Maybe<bool> HasRealNamedProperty( + v8::Local<v8::Object> obj + , v8::Local<v8::String> key) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::HandleScope scope(isolate); + return obj->HasRealNamedProperty(isolate->GetCurrentContext(), key); +} + +inline Maybe<bool> HasRealIndexedProperty( + v8::Local<v8::Object> obj + , uint32_t index) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::HandleScope scope(isolate); + return obj->HasRealIndexedProperty(isolate->GetCurrentContext(), index); +} + +inline Maybe<bool> HasRealNamedCallbackProperty( + v8::Local<v8::Object> obj + , v8::Local<v8::String> key) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::HandleScope scope(isolate); + return obj->HasRealNamedCallbackProperty(isolate->GetCurrentContext(), key); +} + +inline MaybeLocal<v8::Value> GetRealNamedPropertyInPrototypeChain( + v8::Local<v8::Object> obj + , v8::Local<v8::String> key) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::EscapableHandleScope scope(isolate); + return scope.Escape(obj->GetRealNamedPropertyInPrototypeChain( + isolate->GetCurrentContext(), key) + .FromMaybe(v8::Local<v8::Value>())); +} + +inline MaybeLocal<v8::Value> GetRealNamedProperty( + v8::Local<v8::Object> obj + , v8::Local<v8::String> key) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::EscapableHandleScope scope(isolate); + return scope.Escape( + obj->GetRealNamedProperty(isolate->GetCurrentContext(), key) + .FromMaybe(v8::Local<v8::Value>())); +} + +inline MaybeLocal<v8::Value> CallAsFunction( + v8::Local<v8::Object> obj + , v8::Local<v8::Object> recv + , int argc + , v8::Local<v8::Value> argv[]) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::EscapableHandleScope scope(isolate); + return scope.Escape( + obj->CallAsFunction(isolate->GetCurrentContext(), recv, argc, argv) + .FromMaybe(v8::Local<v8::Value>())); +} + +inline MaybeLocal<v8::Value> CallAsConstructor( + v8::Local<v8::Object> obj + , int argc, v8::Local<v8::Value> argv[]) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::EscapableHandleScope scope(isolate); + return scope.Escape( + obj->CallAsConstructor(isolate->GetCurrentContext(), argc, argv) + .FromMaybe(v8::Local<v8::Value>())); +} + +inline +MaybeLocal<v8::String> GetSourceLine(v8::Local<v8::Message> msg) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::EscapableHandleScope scope(isolate); + return scope.Escape(msg->GetSourceLine(isolate->GetCurrentContext()) + .FromMaybe(v8::Local<v8::String>())); +} + +inline Maybe<int> GetLineNumber(v8::Local<v8::Message> msg) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::HandleScope scope(isolate); + return msg->GetLineNumber(isolate->GetCurrentContext()); +} + +inline Maybe<int> GetStartColumn(v8::Local<v8::Message> msg) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::HandleScope scope(isolate); + return msg->GetStartColumn(isolate->GetCurrentContext()); +} + +inline Maybe<int> GetEndColumn(v8::Local<v8::Message> msg) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::HandleScope scope(isolate); + return msg->GetEndColumn(isolate->GetCurrentContext()); +} + +inline MaybeLocal<v8::Object> CloneElementAt( + v8::Local<v8::Array> array + , uint32_t index) { +#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::Value> elem; + v8::Local<v8::Object> obj; + if (!array->Get(context, index).ToLocal(&elem)) { + return scope.Escape(obj); + } + if (!elem->ToObject(context).ToLocal(&obj)) { + return scope.Escape(v8::Local<v8::Object>()); + } + return scope.Escape(obj->Clone()); +#else + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::EscapableHandleScope scope(isolate); + return scope.Escape(array->CloneElementAt(isolate->GetCurrentContext(), index) + .FromMaybe(v8::Local<v8::Object>())); +#endif +} + +inline MaybeLocal<v8::Value> Call( + v8::Local<v8::Function> fun + , v8::Local<v8::Object> recv + , int argc + , v8::Local<v8::Value> argv[]) { + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::EscapableHandleScope scope(isolate); + return scope.Escape(fun->Call(isolate->GetCurrentContext(), recv, argc, argv) + .FromMaybe(v8::Local<v8::Value>())); +} + +#endif // NAN_MAYBE_43_INL_H_ |