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