Skip to content

Instantly share code, notes, and snippets.

@gabrielschulhof
Created November 8, 2016 08:30
Show Gist options
  • Save gabrielschulhof/a1b1fa02708f68b15160dce3ac36a449 to your computer and use it in GitHub Desktop.
Save gabrielschulhof/a1b1fa02708f68b15160dce3ac36a449 to your computer and use it in GitHub Desktop.
{
"targets": [ {
"target_name": "hello",
"include_dirs": [
"<!(node -e \"require('nan')\")"
],
"sources": [ "hello.cc" ]
} ]
}
#include <nan.h>
using namespace v8;
#define SET_IS(target, argument, checker) \
Nan::Set((returnValue), Nan::New(#checker).ToLocalChecked(), \
Nan::New((argument)->checker()));
NAN_METHOD(getNumberType) {
Local<Object> returnValue = Nan::New<Object>();
SET_IS(returnValue, info[0], IsNumber);
SET_IS(returnValue, info[0], IsUint32);
SET_IS(returnValue, info[0], IsInt32);
info.GetReturnValue().Set(returnValue);
}
NAN_MODULE_INIT(Init) {
Nan::SetMethod(target, "getNumberType", getNumberType);
}
NODE_MODULE(hello, Init)
var hello = require( "bindings" )( "hello" );
function doOneNumber( theNumber ) {
console.log( theNumber + ": " + JSON.stringify( hello.getNumberType( theNumber ) ) );
}
doOneNumber( -1.2 );
doOneNumber( -1.0 );
doOneNumber( -1 );
doOneNumber( -0.0 );
doOneNumber( -0 );
doOneNumber( 0 );
doOneNumber( +0 );
doOneNumber( +0.0 );
doOneNumber( 0.0 );
doOneNumber( 1.0 );
doOneNumber( +1.0 );
doOneNumber( +1 );
doOneNumber( 1 );
doOneNumber( 1.2 );
doOneNumber( +1.2 );
{
"name": "hello",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"dependencies": {
"bindings": "^1.2.1",
"nan": "^2.2.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment