• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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