Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // JS calling code
- var obj = {
- a: 5,
- b : [1, 2, 3]
- }
- addon.add_array(obj);
- assert(obj.b[0] == 6);
- assert(obj.b[1] == 7);
- assert(obj.b[2] == 8);
- /////////////////////////
- // accept object with a number "a" and an array "b". Add a to all b values.
- NAN_METHOD(AddArray) {
- if ( info.Length() > 0 ) {
- // initial input parameter is an object
- Local<Object> input = info[0]->ToObject();
- Local<String> a_prop = Nan::New<String>("a").ToLocalChecked();
- Local<String> b_prop = Nan::New<String>("b").ToLocalChecked();
- // Use NumberValue to get the number property named a
- double a = Nan::Get(input, a_prop).ToLocalChecked()->NumberValue();
- // Use Cast to get the array property named b
- Local<Array> b = Local<Array>::Cast(Nan::Get(input, b_prop).ToLocalChecked());
- for (unsigned int i = 0; i < b->Length(); i++ ) {
- if (Nan::Has(b, i).FromJust()) {
- // get data from a particular index
- double value = Nan::Get(b, i).ToLocalChecked()->NumberValue();
- // set a particular index - note the array parameter
- // is mutable
- Nan::Set(b, i, Nan::New<Number>(value + a));
- }
- }
- }
- }
- NAN_MODULE_INIT(Init) {
- Nan::Set(target, New<String>("add_array").ToLocalChecked(),
- GetFunction(New<FunctionTemplate>(AddArray)).ToLocalChecked());
- }
- NODE_MODULE(my_addon, Init)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement