Skip to content

Commit

Permalink
Generate JSTypeTraits by macro functions
Browse files Browse the repository at this point in the history
  • Loading branch information
corona10 committed Oct 8, 2017
1 parent f617601 commit c155ff9
Showing 1 changed file with 28 additions and 29 deletions.
57 changes: 28 additions & 29 deletions core/js_type_traits.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,34 +25,33 @@ inline Napi::Value JSTypeTraits(Napi::Env env, T value) {
return T();
}

template <>
inline Napi::Value JSTypeTraits(Napi::Env env, bool value) {
return Napi::Boolean::New(env, value);
}

template <>
inline Napi::Value JSTypeTraits(Napi::Env env, double value) {
return Napi::Number::New(env, value);
}

template <>
inline Napi::Value JSTypeTraits(Napi::Env env, int16_t value) {
return Napi::Number::New(env, value);
}

template <>
inline Napi::Value JSTypeTraits(Napi::Env env, int32_t value) {
return Napi::Number::New(env, value);
}

template <>
inline Napi::Value JSTypeTraits(Napi::Env env, int64_t value) {
return Napi::Number::New(env, value);
}

template <>
inline Napi::Value JSTypeTraits(Napi::Env env, const std::string value) {
return Napi::String::New(env, value);
}
#define JS_TYPE_TRAITS_NUMBER(type) \
template <> \
inline Napi::Value JSTypeTraits(Napi::Env env, type value) { \
return Napi::Number::New(env, value); \
}

#define JS_TYPE_TRAITS_BOOLEAN(type) \
template <> \
inline Napi::Value JSTypeTraits(Napi::Env env, type value) { \
return Napi::Boolean::New(env, value); \
}

#define JS_TYPE_TRAITS_STRING(type) \
template <> \
inline Napi::Value JSTypeTraits(Napi::Env env, type value) { \
return Napi::String::New(env, value); \
}

// TODO(corona10): Auto generate JS_TYPE_TRAITS_XXXX.

JS_TYPE_TRAITS_NUMBER(int16_t);
JS_TYPE_TRAITS_NUMBER(int32_t);
JS_TYPE_TRAITS_NUMBER(int64_t);
JS_TYPE_TRAITS_NUMBER(double);

JS_TYPE_TRAITS_BOOLEAN(bool);

JS_TYPE_TRAITS_STRING(std::string);

#endif // CORE_JS_TYPE_TRAITS_H_

0 comments on commit c155ff9

Please sign in to comment.