Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. // JS calling code
  2. var obj = {
  3. a: 5,
  4. b : [1, 2, 3]
  5. }
  6.  
  7. addon.add_array(obj);
  8. assert(obj.b[0] == 6);
  9. assert(obj.b[1] == 7);
  10. assert(obj.b[2] == 8);
  11. /////////////////////////
  12.  
  13. // accept object with a number "a" and an array "b". Add a to all b values.
  14. NAN_METHOD(AddArray) {
  15. if ( info.Length() > 0 ) {
  16. // initial input parameter is an object
  17. Local<Object> input = info[0]->ToObject();
  18. Local<String> a_prop = Nan::New<String>("a").ToLocalChecked();
  19. Local<String> b_prop = Nan::New<String>("b").ToLocalChecked();
  20.  
  21. // Use NumberValue to get the number property named a
  22. double a = Nan::Get(input, a_prop).ToLocalChecked()->NumberValue();
  23. // Use Cast to get the array property named b
  24. Local<Array> b = Local<Array>::Cast(Nan::Get(input, b_prop).ToLocalChecked());
  25.  
  26. for (unsigned int i = 0; i < b->Length(); i++ ) {
  27. if (Nan::Has(b, i).FromJust()) {
  28. // get data from a particular index
  29. double value = Nan::Get(b, i).ToLocalChecked()->NumberValue();
  30.  
  31. // set a particular index - note the array parameter
  32. // is mutable
  33. Nan::Set(b, i, Nan::New<Number>(value + a));
  34. }
  35. }
  36. }
  37. }
  38.  
  39. NAN_MODULE_INIT(Init) {
  40. Nan::Set(target, New<String>("add_array").ToLocalChecked(),
  41. GetFunction(New<FunctionTemplate>(AddArray)).ToLocalChecked());
  42. }
  43.  
  44. NODE_MODULE(my_addon, Init)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement