• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef JS_NATIVE_API_COMMON_INL_H_
2 #define JS_NATIVE_API_COMMON_INL_H_
3 
4 #include <js_native_api.h>
5 #include "common.h"
6 
7 #include <stdio.h>
8 
add_returned_status(napi_env env,const char * key,napi_value object,char * expected_message,napi_status expected_status,napi_status actual_status)9 inline void add_returned_status(napi_env env,
10                                 const char* key,
11                                 napi_value object,
12                                 char* expected_message,
13                                 napi_status expected_status,
14                                 napi_status actual_status) {
15   char napi_message_string[100] = "";
16   napi_value prop_value;
17 
18   if (actual_status != expected_status) {
19     snprintf(napi_message_string,
20              sizeof(napi_message_string),
21              "Invalid status [%d]",
22              actual_status);
23   }
24 
25   NODE_API_CALL_RETURN_VOID(
26       env,
27       napi_create_string_utf8(
28           env,
29           (actual_status == expected_status ? expected_message
30                                             : napi_message_string),
31           NAPI_AUTO_LENGTH,
32           &prop_value));
33   NODE_API_CALL_RETURN_VOID(
34       env, napi_set_named_property(env, object, key, prop_value));
35 }
36 
add_last_status(napi_env env,const char * key,napi_value return_value)37 inline void add_last_status(napi_env env,
38                             const char* key,
39                             napi_value return_value) {
40   napi_value prop_value;
41   const napi_extended_error_info* p_last_error;
42   NODE_API_CALL_RETURN_VOID(env, napi_get_last_error_info(env, &p_last_error));
43 
44   NODE_API_CALL_RETURN_VOID(
45       env,
46       napi_create_string_utf8(
47           env,
48           (p_last_error->error_message == NULL ? "napi_ok"
49                                                : p_last_error->error_message),
50           NAPI_AUTO_LENGTH,
51           &prop_value));
52   NODE_API_CALL_RETURN_VOID(
53       env, napi_set_named_property(env, return_value, key, prop_value));
54 }
55 
56 #endif  // JS_NATIVE_API_COMMON_INL_H_
57