diff options
Diffstat (limited to 'node_modules/nan/nan_converters.h')
-rw-r--r-- | node_modules/nan/nan_converters.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/node_modules/nan/nan_converters.h b/node_modules/nan/nan_converters.h new file mode 100644 index 0000000..c0b3272 --- /dev/null +++ b/node_modules/nan/nan_converters.h @@ -0,0 +1,72 @@ +/********************************************************************* + * 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_H_ +#define NAN_CONVERTERS_H_ + +namespace imp { +template<typename T> struct ToFactoryBase { + typedef MaybeLocal<T> return_t; +}; +template<typename T> struct ValueFactoryBase { typedef Maybe<T> return_t; }; + +template<typename T> struct ToFactory; + +template<> +struct ToFactory<v8::Function> : ToFactoryBase<v8::Function> { + static inline return_t convert(v8::Local<v8::Value> val) { + if (val.IsEmpty() || !val->IsFunction()) return MaybeLocal<v8::Function>(); + return MaybeLocal<v8::Function>(val.As<v8::Function>()); + } +}; + +#define X(TYPE) \ + template<> \ + struct ToFactory<v8::TYPE> : ToFactoryBase<v8::TYPE> { \ + static inline return_t convert(v8::Local<v8::Value> val); \ + }; + +X(Boolean) +X(Number) +X(String) +X(Object) +X(Integer) +X(Uint32) +X(Int32) + +#undef X + +#define X(TYPE) \ + template<> \ + struct ToFactory<TYPE> : ValueFactoryBase<TYPE> { \ + static inline return_t convert(v8::Local<v8::Value> val); \ + }; + +X(bool) +X(double) +X(int64_t) +X(uint32_t) +X(int32_t) + +#undef X +} // end of namespace imp + +template<typename T> +inline +typename imp::ToFactory<T>::return_t To(v8::Local<v8::Value> val) { + return imp::ToFactory<T>::convert(val); +} + +#if defined(V8_MAJOR_VERSION) && (V8_MAJOR_VERSION > 4 || \ + (V8_MAJOR_VERSION == 4 && defined(V8_MINOR_VERSION) && V8_MINOR_VERSION >= 3)) +# include "nan_converters_43_inl.h" +#else +# include "nan_converters_pre_43_inl.h" +#endif + +#endif // NAN_CONVERTERS_H_ |