package.nan_converters.h Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of nan Show documentation
Show all versions of nan Show documentation
Native Abstractions for Node.js: C++ header for Node 0.8 -> 18 compatibility
/*********************************************************************
* NAN - Native Abstractions for Node.js
*
* Copyright (c) 2018 NAN contributors
*
* MIT License
********************************************************************/
#ifndef NAN_CONVERTERS_H_
#define NAN_CONVERTERS_H_
namespace imp {
template struct ToFactoryBase {
typedef MaybeLocal return_t;
};
template struct ValueFactoryBase { typedef Maybe return_t; };
template struct ToFactory;
template<>
struct ToFactory : ToFactoryBase {
static inline return_t convert(v8::Local val) {
if (val.IsEmpty() || !val->IsFunction()) return MaybeLocal();
return MaybeLocal(val.As());
}
};
#define X(TYPE) \
template<> \
struct ToFactory : ToFactoryBase { \
static inline return_t convert(v8::Local val); \
};
X(Boolean)
X(Number)
X(String)
X(Object)
X(Integer)
X(Uint32)
X(Int32)
#undef X
#define X(TYPE) \
template<> \
struct ToFactory : ValueFactoryBase { \
static inline return_t convert(v8::Local val); \
};
X(bool)
X(double)
X(int64_t)
X(uint32_t)
X(int32_t)
#undef X
} // end of namespace imp
template
inline
typename imp::ToFactory::return_t To(v8::Local val) {
return imp::ToFactory::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_
© 2015 - 2024 Weber Informatics LLC | Privacy Policy