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