|
| 1 | +/********************************************************************* |
| 2 | + * NAN - Native Abstractions for Node.js |
| 3 | + * |
| 4 | + * Copyright (c) 2018 NAN contributors |
| 5 | + * |
| 6 | + * MIT License <https://github.com/nodejs/nan/blob/master/LICENSE.md> |
| 7 | + ********************************************************************/ |
| 8 | + |
| 9 | +#include <nan.h> |
| 10 | + |
| 11 | +using namespace Nan; // NOLINT(build/namespaces) |
| 12 | + |
| 13 | +static Global<v8::Boolean> global; |
| 14 | + |
| 15 | +NAN_METHOD(ReturnAValue) { |
| 16 | + const FunctionCallbackInfo<v8::Value> &cbinfo = info; |
| 17 | + ReturnValue<v8::Value> ret = cbinfo.GetReturnValue(); |
| 18 | + if (cbinfo.Length() == 1) { |
| 19 | + ret.Set(To<v8::String>(info[0]).ToLocalChecked()); |
| 20 | + } else { |
| 21 | + ret.Set(New("default").ToLocalChecked()); |
| 22 | + } |
| 23 | +} |
| 24 | + |
| 25 | +NAN_METHOD(ReturnPrimitive) { |
| 26 | + info.GetReturnValue().Set(true); |
| 27 | +} |
| 28 | + |
| 29 | +NAN_METHOD(ReturnGlobal) { |
| 30 | + info.GetReturnValue().Set(global); |
| 31 | + global.Reset(); |
| 32 | +} |
| 33 | + |
| 34 | +NAN_METHOD(ReturnUnsigned) { |
| 35 | + info.GetReturnValue().Set(0x80000000u); |
| 36 | +} |
| 37 | + |
| 38 | +NAN_MODULE_INIT(Init) { |
| 39 | + global.Reset(New(true)); |
| 40 | + |
| 41 | + Set(target |
| 42 | + , New<v8::String>("r").ToLocalChecked() |
| 43 | + , GetFunction(New<v8::FunctionTemplate>(ReturnAValue)).ToLocalChecked() |
| 44 | + ); |
| 45 | + Set(target |
| 46 | + , New<v8::String>("p").ToLocalChecked() |
| 47 | + , GetFunction(New<v8::FunctionTemplate>(ReturnPrimitive)).ToLocalChecked() |
| 48 | + ); |
| 49 | + Set(target |
| 50 | + , New<v8::String>("q").ToLocalChecked() |
| 51 | + , GetFunction(New<v8::FunctionTemplate>(ReturnGlobal)).ToLocalChecked() |
| 52 | + ); |
| 53 | + Set(target |
| 54 | + , New<v8::String>("u").ToLocalChecked() |
| 55 | + , GetFunction(New<v8::FunctionTemplate>(ReturnUnsigned)).ToLocalChecked() |
| 56 | + ); |
| 57 | +} |
| 58 | + |
| 59 | +NODE_MODULE(returnvalue, Init) |
0 commit comments