| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | /********************************************************************* * 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 imptemplate<typename T>inlinetypename 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_
 |