1 /********************************************************************* 2 * NAN - Native Abstractions for Node.js 3 * 4 * Copyright (c) 2018 NAN contributors 5 * 6 * MIT License <https://github.com/nodejs/nan/blob/master/LICENSE.md> 7 ********************************************************************/ 8 9 #ifndef NAN_CONVERTERS_43_INL_H_ 10 #define NAN_CONVERTERS_43_INL_H_ 11 12 #define X(TYPE) \ 13 imp::ToFactory<v8::TYPE>::return_t \ 14 imp::ToFactory<v8::TYPE>::convert(v8::Local<v8::Value> val) { \ 15 v8::Isolate *isolate = v8::Isolate::GetCurrent(); \ 16 v8::EscapableHandleScope scope(isolate); \ 17 return scope.Escape( \ 18 val->To ## TYPE(isolate->GetCurrentContext()) \ 19 .FromMaybe(v8::Local<v8::TYPE>())); \ 20 } 21 22 X(Number) 23 X(String) 24 X(Object) 25 X(Integer) 26 X(Uint32) 27 X(Int32) 28 // V8 <= 7.0 29 #if V8_MAJOR_VERSION < 7 || (V8_MAJOR_VERSION == 7 && V8_MINOR_VERSION == 0) 30 X(Boolean) 31 #else 32 imp::ToFactory<v8::Boolean>::return_t \ 33 imp::ToFactory<v8::Boolean>::convert(v8::Local<v8::Value> val) { \ 34 v8::Isolate *isolate = v8::Isolate::GetCurrent(); \ 35 v8::EscapableHandleScope scope(isolate); \ 36 return scope.Escape(val->ToBoolean(isolate)); \ 37 } 38 #endif 39 40 #undef X 41 42 #define X(TYPE, NAME) \ 43 imp::ToFactory<TYPE>::return_t \ 44 imp::ToFactory<TYPE>::convert(v8::Local<v8::Value> val) { \ 45 v8::Isolate *isolate = v8::Isolate::GetCurrent(); \ 46 v8::HandleScope scope(isolate); \ 47 return val->NAME ## Value(isolate->GetCurrentContext()); \ 48 } 49 50 X(double, Number) 51 X(int64_t, Integer) 52 X(uint32_t, Uint32) 53 X(int32_t, Int32) 54 // V8 <= 7.0 55 #if V8_MAJOR_VERSION < 7 || (V8_MAJOR_VERSION == 7 && V8_MINOR_VERSION == 0) 56 X(bool, Boolean) 57 #else 58 imp::ToFactory<bool>::return_t \ 59 imp::ToFactory<bool>::convert(v8::Local<v8::Value> val) { \ 60 v8::Isolate *isolate = v8::Isolate::GetCurrent(); \ 61 v8::HandleScope scope(isolate); \ 62 return Just<bool>(val->BooleanValue(isolate)); \ 63 } 64 #endif 65 66 #undef X 67 68 #endif // NAN_CONVERTERS_43_INL_H_ 69