You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
2.7 KiB
68 lines
2.7 KiB
/********************************************************************* |
|
* 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_
|
|
|