/********************************************************************* * NAN - Native Abstractions for Node.js * * Copyright (c) 2018 NAN contributors * * MIT License <https://github.com/nodejs/nan/blob/master/LICENSE.md> ********************************************************************/ #ifndef NAN_CONVERTERS_43_INL_H_ #define NAN_CONVERTERS_43_INL_H_ #define X(TYPE) \ imp::ToFactory<v8::TYPE>::return_t \ imp::ToFactory<v8::TYPE>::convert(v8::Local<v8::Value> val) { \ v8::Isolate *isolate = v8::Isolate::GetCurrent(); \ v8::EscapableHandleScope scope(isolate); \ return scope.Escape( \ val->To ## TYPE(isolate->GetCurrentContext()) \ .FromMaybe(v8::Local<v8::TYPE>())); \ } X(Number) X(String) X(Object) X(Integer) X(Uint32) X(Int32) // V8 <= 7.0 #if V8_MAJOR_VERSION < 7 || (V8_MAJOR_VERSION == 7 && V8_MINOR_VERSION == 0) X(Boolean) #else imp::ToFactory<v8::Boolean>::return_t \ imp::ToFactory<v8::Boolean>::convert(v8::Local<v8::Value> val) { \ v8::Isolate *isolate = v8::Isolate::GetCurrent(); \ v8::EscapableHandleScope scope(isolate); \ return scope.Escape(val->ToBoolean(isolate)); \ } #endif #undef X #define X(TYPE, NAME) \ imp::ToFactory<TYPE>::return_t \ imp::ToFactory<TYPE>::convert(v8::Local<v8::Value> val) { \ v8::Isolate *isolate = v8::Isolate::GetCurrent(); \ v8::HandleScope scope(isolate); \ return val->NAME ## Value(isolate->GetCurrentContext()); \ } X(double, Number) X(int64_t, Integer) X(uint32_t, Uint32) X(int32_t, Int32) // V8 <= 7.0 #if V8_MAJOR_VERSION < 7 || (V8_MAJOR_VERSION == 7 && V8_MINOR_VERSION == 0) X(bool, Boolean) #else imp::ToFactory<bool>::return_t \ imp::ToFactory<bool>::convert(v8::Local<v8::Value> val) { \ v8::Isolate *isolate = v8::Isolate::GetCurrent(); \ v8::HandleScope scope(isolate); \ return Just<bool>(val->BooleanValue(isolate)); \ } #endif #undef X #endif // NAN_CONVERTERS_43_INL_H_