Advertisement
Guest User

Untitled

a guest
Jul 27th, 2015
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. #include <node.h>
  2. #include <v8.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. using namespace v8;
  7.  
  8. Handle<Value> getRandomCoords2D(const Arguments& args) {
  9. HandleScope scope;
  10.  
  11. if (args.Length() < 2) {
  12. ThrowException(Exception::TypeError(String::New("Wrong number of arguments")));
  13. return scope.Close(Undefined());
  14. }
  15.  
  16. if (!args[0]->IsNumber() || !args[1]->IsNumber()) {
  17. ThrowException(Exception::TypeError(String::New("Wrong arguments")));
  18. return scope.Close(Undefined());
  19. }
  20.  
  21. Local<Number> xBound = args[0]->ToNumber();
  22. Local<Number> yBound = args[1]->ToNumber();
  23.  
  24. Local<Object> obj = Object::New();
  25. obj->Set(String::NewSymbol("x"), Number::New( 1 + (rand() % xBound->IntegerValue() )));
  26. obj->Set(String::NewSymbol("y"), Number::New( 1 + (rand() % yBound->IntegerValue() )));
  27.  
  28. return scope.Close(obj);
  29. }
  30.  
  31. Handle<Value> getRandomCoords3D(const Arguments& args) {
  32. HandleScope scope;
  33.  
  34. if (args.Length() < 3) {
  35. ThrowException(Exception::TypeError(String::New("Wrong number of arguments")));
  36. return scope.Close(Undefined());
  37. }
  38.  
  39. if (!args[0]->IsNumber() || !args[1]->IsNumber() || !args[2]->IsNumber()) {
  40. ThrowException(Exception::TypeError(String::New("Wrong arguments")));
  41. return scope.Close(Undefined());
  42. }
  43.  
  44. Local<Number> xBound = args[0]->ToNumber();
  45. Local<Number> yBound = args[1]->ToNumber();
  46. Local<Number> zBound = args[2]->ToNumber();
  47.  
  48. Local<Object> obj = Object::New();
  49. obj->Set(String::NewSymbol("x"), Number::New( 1 + (rand() % xBound->IntegerValue() )));
  50. obj->Set(String::NewSymbol("y"), Number::New( 1 + (rand() % yBound->IntegerValue() )));
  51. obj->Set(String::NewSymbol("z"), Number::New( 1 + (rand() % zBound->IntegerValue() )));
  52. return scope.Close(obj);
  53. }
  54.  
  55.  
  56. void init(Handle<Object> target) {
  57. target->Set(String::NewSymbol("getRandomCoords3D"),
  58. FunctionTemplate::New(getRandomCoords3D)->GetFunction());
  59.  
  60. target->Set(String::NewSymbol("getRandomCoords2D"),
  61. FunctionTemplate::New(getRandomCoords2D)->GetFunction());
  62. }
  63. NODE_MODULE(randomcoords, init)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement