1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
|
#include <js_native_api.h>
#include "../common.h"
#include "../entry_point.h"
#include "test_null.h"
static napi_value AsBool(napi_env env, napi_callback_info info) {
size_t argc = 1;
napi_value args[1];
NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL));
bool value;
NODE_API_CALL(env, napi_get_value_bool(env, args[0], &value));
napi_value output;
NODE_API_CALL(env, napi_get_boolean(env, value, &output));
return output;
}
static napi_value AsInt32(napi_env env, napi_callback_info info) {
size_t argc = 1;
napi_value args[1];
NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL));
int32_t value;
NODE_API_CALL(env, napi_get_value_int32(env, args[0], &value));
napi_value output;
NODE_API_CALL(env, napi_create_int32(env, value, &output));
return output;
}
static napi_value AsUInt32(napi_env env, napi_callback_info info) {
size_t argc = 1;
napi_value args[1];
NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL));
uint32_t value;
NODE_API_CALL(env, napi_get_value_uint32(env, args[0], &value));
napi_value output;
NODE_API_CALL(env, napi_create_uint32(env, value, &output));
return output;
}
static napi_value AsInt64(napi_env env, napi_callback_info info) {
size_t argc = 1;
napi_value args[1];
NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL));
int64_t value;
NODE_API_CALL(env, napi_get_value_int64(env, args[0], &value));
napi_value output;
NODE_API_CALL(env, napi_create_int64(env, (double)value, &output));
return output;
}
static napi_value AsDouble(napi_env env, napi_callback_info info) {
size_t argc = 1;
napi_value args[1];
NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL));
double value;
NODE_API_CALL(env, napi_get_value_double(env, args[0], &value));
napi_value output;
NODE_API_CALL(env, napi_create_double(env, value, &output));
return output;
}
static napi_value AsString(napi_env env, napi_callback_info info) {
size_t argc = 1;
napi_value args[1];
NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL));
char value[100];
NODE_API_CALL(env,
napi_get_value_string_utf8(env, args[0], value, sizeof(value), NULL));
napi_value output;
NODE_API_CALL(env, napi_create_string_utf8(
env, value, NAPI_AUTO_LENGTH, &output));
return output;
}
static napi_value ToBool(napi_env env, napi_callback_info info) {
size_t argc = 1;
napi_value args[1];
NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL));
napi_value output;
NODE_API_CALL(env, napi_coerce_to_bool(env, args[0], &output));
return output;
}
static napi_value ToNumber(napi_env env, napi_callback_info info) {
size_t argc = 1;
napi_value args[1];
NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL));
napi_value output;
NODE_API_CALL(env, napi_coerce_to_number(env, args[0], &output));
return output;
}
static napi_value ToObject(napi_env env, napi_callback_info info) {
size_t argc = 1;
napi_value args[1];
NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL));
napi_value output;
NODE_API_CALL(env, napi_coerce_to_object(env, args[0], &output));
return output;
}
static napi_value ToString(napi_env env, napi_callback_info info) {
size_t argc = 1;
napi_value args[1];
NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL));
napi_value output;
NODE_API_CALL(env, napi_coerce_to_string(env, args[0], &output));
return output;
}
EXTERN_C_START
napi_value Init(napi_env env, napi_value exports) {
napi_property_descriptor descriptors[] = {
DECLARE_NODE_API_PROPERTY("asBool", AsBool),
DECLARE_NODE_API_PROPERTY("asInt32", AsInt32),
DECLARE_NODE_API_PROPERTY("asUInt32", AsUInt32),
DECLARE_NODE_API_PROPERTY("asInt64", AsInt64),
DECLARE_NODE_API_PROPERTY("asDouble", AsDouble),
DECLARE_NODE_API_PROPERTY("asString", AsString),
DECLARE_NODE_API_PROPERTY("toBool", ToBool),
DECLARE_NODE_API_PROPERTY("toNumber", ToNumber),
DECLARE_NODE_API_PROPERTY("toObject", ToObject),
DECLARE_NODE_API_PROPERTY("toString", ToString),
};
NODE_API_CALL(env, napi_define_properties(
env, exports, sizeof(descriptors) / sizeof(*descriptors), descriptors));
init_test_null(env, exports);
return exports;
}
EXTERN_C_END
|