diff --git a/include/addon-tools.hpp b/include/addon-tools.hpp index 0d602aa..fad6858 100644 --- a/include/addon-tools.hpp +++ b/include/addon-tools.hpp @@ -128,7 +128,7 @@ typedef Nan::Persistent V8_STORE_VAL; #define LET_EXT_ARG(I, VAR) \ CHECK_LET_ARG(I, IsExternal(), "number"); \ - v8::Local VAR = IS_ARG_EMPTY(I) ? JS_EXT(NULL) : \ + v8::Local VAR = IS_ARG_EMPTY(I) ? JS_EXT(nullptr) : \ v8::Local::Cast(info[I]); @@ -226,23 +226,14 @@ typedef Nan::Persistent V8_STORE_VAL; template -inline Type* getArrayData(v8::Local arg, int *num = NULL) { +inline Type* getArrayData(V8_VAR_OBJ obj, int *num = nullptr) { - Type *data = NULL; + Type *data = nullptr; if (num) { *num = 0; } - if (arg->IsNull() || arg->IsUndefined()) { - return data; - } - - if (arg->IsArray()) { - Nan::ThrowError("JS Array is not supported here."); - return data; - } - if ( ! arg->IsArrayBufferView() ) { Nan::ThrowError("Argument must be a TypedArray."); return data; @@ -259,27 +250,16 @@ inline Type* getArrayData(v8::Local arg, int *num = NULL) { } -inline void *getImageData(v8::Local arg) { +inline void *getData(V8_VAR_OBJ obj) { - void *pixels = NULL; - - if (arg->IsNull() || arg->IsUndefined()) { - return pixels; - } - - v8::Local obj = v8::Local::Cast(arg); - - if ( ! obj->IsObject() ) { - Nan::ThrowError("Bad Image argument"); - return pixels; - } + void *pixels = nullptr; if (obj->IsArrayBufferView()) { - pixels = getArrayData(obj, NULL); + pixels = getArrayData(obj); } else if (obj->Has(JS_STR("data"))) { pixels = node::Buffer::Data(Nan::Get(obj, JS_STR("data")).ToLocalChecked()); } else { - Nan::ThrowError("Bad Image argument"); + Nan::ThrowError("Bad argument"); } return pixels;