Browse Source

src: define Is* util functions with macros

The Is* type checking functions in node_util.cc are mostly
the same boilerplate. This commit defines them using a macro.

Refs: https://github.com/nodejs/node/pull/4100
PR-URL: https://github.com/nodejs/node/pull/4118
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: James M Snell <jasnell@gmail.com>
process-exit-stdio-flushing
cjihrig 9 years ago
parent
commit
46af39768d
  1. 87
      src/node_util.cc

87
src/node_util.cc

@ -14,63 +14,27 @@ using v8::String;
using v8::Value; using v8::Value;
static void IsRegExp(const FunctionCallbackInfo<Value>& args) { #define VALUE_METHOD_MAP(V) \
CHECK_EQ(1, args.Length()); V(isArrayBuffer, IsArrayBuffer) \
args.GetReturnValue().Set(args[0]->IsRegExp()); V(isDataView, IsDataView) \
} V(isDate, IsDate) \
V(isMap, IsMap) \
V(isMapIterator, IsMapIterator) \
static void IsDate(const FunctionCallbackInfo<Value>& args) { V(isPromise, IsPromise) \
CHECK_EQ(1, args.Length()); V(isRegExp, IsRegExp) \
args.GetReturnValue().Set(args[0]->IsDate()); V(isSet, IsSet) \
} V(isSetIterator, IsSetIterator) \
V(isTypedArray, IsTypedArray)
static void IsMap(const FunctionCallbackInfo<Value>& args) {
CHECK_EQ(1, args.Length());
args.GetReturnValue().Set(args[0]->IsMap());
}
static void IsMapIterator(const FunctionCallbackInfo<Value>& args) {
CHECK_EQ(1, args.Length());
args.GetReturnValue().Set(args[0]->IsMapIterator());
}
static void IsSet(const FunctionCallbackInfo<Value>& args) {
CHECK_EQ(1, args.Length());
args.GetReturnValue().Set(args[0]->IsSet());
}
static void IsSetIterator(const FunctionCallbackInfo<Value>& args) { #define V(_, ucname) \
CHECK_EQ(1, args.Length()); static void ucname(const FunctionCallbackInfo<Value>& args) { \
args.GetReturnValue().Set(args[0]->IsSetIterator()); CHECK_EQ(1, args.Length()); \
} args.GetReturnValue().Set(args[0]->ucname()); \
}
static void IsPromise(const FunctionCallbackInfo<Value>& args) {
CHECK_EQ(1, args.Length());
args.GetReturnValue().Set(args[0]->IsPromise());
}
VALUE_METHOD_MAP(V)
static void IsTypedArray(const FunctionCallbackInfo<Value>& args) { #undef V
CHECK_EQ(1, args.Length());
args.GetReturnValue().Set(args[0]->IsTypedArray());
}
static void IsArrayBuffer(const FunctionCallbackInfo<Value>& args) {
CHECK_EQ(1, args.Length());
args.GetReturnValue().Set(args[0]->IsArrayBuffer());
}
static void IsDataView(const FunctionCallbackInfo<Value>& args) {
CHECK_EQ(1, args.Length());
args.GetReturnValue().Set(args[0]->IsDataView());
}
static void GetHiddenValue(const FunctionCallbackInfo<Value>& args) { static void GetHiddenValue(const FunctionCallbackInfo<Value>& args) {
@ -93,16 +57,11 @@ void Initialize(Local<Object> target,
Local<Value> unused, Local<Value> unused,
Local<Context> context) { Local<Context> context) {
Environment* env = Environment::GetCurrent(context); Environment* env = Environment::GetCurrent(context);
env->SetMethod(target, "isRegExp", IsRegExp);
env->SetMethod(target, "isDate", IsDate); #define V(lcname, ucname) env->SetMethod(target, #lcname, ucname);
env->SetMethod(target, "isMap", IsMap); VALUE_METHOD_MAP(V)
env->SetMethod(target, "isMapIterator", IsMapIterator); #undef V
env->SetMethod(target, "isSet", IsSet);
env->SetMethod(target, "isSetIterator", IsSetIterator);
env->SetMethod(target, "isPromise", IsPromise);
env->SetMethod(target, "isTypedArray", IsTypedArray);
env->SetMethod(target, "isArrayBuffer", IsArrayBuffer);
env->SetMethod(target, "isDataView", IsDataView);
env->SetMethod(target, "getHiddenValue", GetHiddenValue); env->SetMethod(target, "getHiddenValue", GetHiddenValue);
} }

Loading…
Cancel
Save