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