• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License") \;
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef PANDA_ENUMERATE_NAPI_H
17 #define PANDA_ENUMERATE_NAPI_H
18 
19 // NOLINTBEGIN(cppcoreguidelines-macro-usage)
20 
21 // CC-OFFNXT(G.PRE.02) code generation
22 #define EVERY_SECOND2(first, second) , second
23 #define EVERY_SECOND3(first, second, ...) , second EVERY_SECOND2(__VA_ARGS__)
24 #define EVERY_SECOND4(first, second, ...) , second EVERY_SECOND3(__VA_ARGS__)
25 #define EVERY_SECOND5(first, second, ...) , second EVERY_SECOND4(__VA_ARGS__)
26 #define EVERY_SECOND6(first, second, ...) , second EVERY_SECOND5(__VA_ARGS__)
27 #define EVERY_SECOND7(first, second, ...) , second EVERY_SECOND6(__VA_ARGS__)
28 #define EVERY_SECOND8(first, second, ...) , second EVERY_SECOND7(__VA_ARGS__)
29 #define EVERY_SECOND9(first, second, ...) , second EVERY_SECOND8(__VA_ARGS__)
30 
31 #define PARAMS_PAIR2(first, second) , first second
32 #define PARAMS_PAIR3(first, second, ...) , first second PARAMS_PAIR2(__VA_ARGS__)
33 #define PARAMS_PAIR4(first, second, ...) , first second PARAMS_PAIR3(__VA_ARGS__)
34 #define PARAMS_PAIR5(first, second, ...) , first second PARAMS_PAIR4(__VA_ARGS__)
35 #define PARAMS_PAIR6(first, second, ...) , first second PARAMS_PAIR5(__VA_ARGS__)
36 #define PARAMS_PAIR7(first, second, ...) , first second PARAMS_PAIR6(__VA_ARGS__)
37 #define PARAMS_PAIR8(first, second, ...) , first second PARAMS_PAIR7(__VA_ARGS__)
38 #define PARAMS_PAIR9(first, second, ...) , first second PARAMS_PAIR8(__VA_ARGS__)
39 
40 #define COUNT_EVERY_SECOND(_2, __2, _3, __3, _4, __4, _5, __5, _6, __6, _7, __7, _8, __8, num, ...) EVERY_SECOND##num
41 #define EVERY_SECOND(first, second, ...) \
42     second COUNT_EVERY_SECOND(__VA_ARGS__, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1)(__VA_ARGS__)
43 
44 #define COUNT_PARAMS_PAIR(_2, __2, _3, __3, _4, __4, _5, __5, _6, __6, _7, __7, _8, __8, num, ...) PARAMS_PAIR##num
45 #define PARAMS_PAIR(first, second, ...) \
46     first second COUNT_PARAMS_PAIR(__VA_ARGS__, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1)(__VA_ARGS__)
47 
48 // CC-OFFNXT(G.PRE.06) list generation
49 #define ENUMERATE_NAPI(FN_MACRO)                                                                                       \
50     FN_MACRO(napi_resolve_deferred, napi_env, env, napi_deferred, deferred, napi_value, resolution)                    \
51     FN_MACRO(napi_open_escapable_handle_scope, napi_env, env, napi_escapable_handle_scope *, result)                   \
52     FN_MACRO(napi_typeof, napi_env, env, napi_value, value, napi_valuetype *, result)                                  \
53     FN_MACRO(napi_is_dataview, napi_env, env, napi_value, value, bool *, result)                                       \
54     FN_MACRO(napi_is_typedarray, napi_env, env, napi_value, value, bool *, result)                                     \
55     FN_MACRO(napi_create_int32, napi_env, env, int32_t, value, napi_value *, result)                                   \
56     FN_MACRO(napi_unwrap, napi_env, env, napi_value, js_object, void **, result)                                       \
57     FN_MACRO(napi_new_instance, napi_env, env, napi_value, constructor, size_t, argc, const napi_value *, argv,        \
58              napi_value *, result)                                                                                     \
59     FN_MACRO(napi_is_exception_pending, napi_env, env, bool *, result)                                                 \
60     FN_MACRO(napi_close_escapable_handle_scope, napi_env, env, napi_escapable_handle_scope, scope)                     \
61     FN_MACRO(napi_get_null, napi_env, env, napi_value *, result)                                                       \
62     FN_MACRO(napi_set_element, napi_env, env, napi_value, object, uint32_t, index, napi_value, value)                  \
63     FN_MACRO(napi_call_function, napi_env, env, napi_value, recv, napi_value, func, size_t, argc, const napi_value *,  \
64              argv, napi_value *, result)                                                                               \
65     FN_MACRO(napi_is_error, napi_env, env, napi_value, value, bool *, result)                                          \
66     FN_MACRO(napi_create_arraybuffer, napi_env, env, size_t, byte_length, void **, data, napi_value *, result)         \
67     FN_MACRO(napi_get_value_uint32, napi_env, env, napi_value, value, uint32_t *, result)                              \
68     FN_MACRO(napi_delete_reference, napi_env, env, napi_ref, ref)                                                      \
69     FN_MACRO(napi_get_new_target, napi_env, env, napi_callback_info, cbinfo, napi_value *, result)                     \
70     FN_MACRO(napi_get_undefined, napi_env, env, napi_value *, result)                                                  \
71     FN_MACRO(napi_strict_equals, napi_env, env, napi_value, lhs, napi_value, rhs, bool *, result)                      \
72     FN_MACRO(napi_throw_error, napi_env, env, const char *, code, const char *, msg)                                   \
73     FN_MACRO(napi_instanceof, napi_env, env, napi_value, object, napi_value, constructor, bool *, result)              \
74     FN_MACRO(napi_reject_deferred, napi_env, env, napi_deferred, deferred, napi_value, rejection)                      \
75     FN_MACRO(napi_get_reference_value, napi_env, env, napi_ref, ref, napi_value *, result)                             \
76     FN_MACRO(napi_get_value_string_utf8, napi_env, env, napi_value, value, char *, buf, size_t, bufsize, size_t *,     \
77              result)                                                                                                   \
78     FN_MACRO(napi_get_value_int32, napi_env, env, napi_value, value, int32_t *, result)                                \
79     FN_MACRO(napi_get_element, napi_env, env, napi_value, object, uint32_t, index, napi_value *, result)               \
80     FN_MACRO(napi_get_property, napi_env, env, napi_value, object, napi_value, key, napi_value *, result)              \
81     FN_MACRO(napi_create_promise, napi_env, env, napi_deferred *, deferred, napi_value *, promise)                     \
82     FN_MACRO(napi_create_reference, napi_env, env, napi_value, value, uint32_t, initial_refcount, napi_ref *, result)  \
83     FN_MACRO(napi_create_array_with_length, napi_env, env, size_t, length, napi_value *, result)                       \
84     FN_MACRO(napi_is_promise, napi_env, env, napi_value, value, bool *, is_promise)                                    \
85     FN_MACRO(napi_get_value_string_utf16, napi_env, env, napi_value, value, char16_t *, buf, size_t, bufsize,          \
86              size_t *, result)                                                                                         \
87     FN_MACRO(napi_get_array_length, napi_env, env, napi_value, value, uint32_t *, result)                              \
88     FN_MACRO(napi_get_value_int64, napi_env, env, napi_value, value, int64_t *, result)                                \
89     FN_MACRO(napi_fatal_exception, napi_env, env, napi_value, err)                                                     \
90     FN_MACRO(napi_get_boolean, napi_env, env, bool, value, napi_value *, result)                                       \
91     FN_MACRO(napi_object_seal, napi_env, env, napi_value, object)                                                      \
92     FN_MACRO(napi_get_value_bool, napi_env, env, napi_value, value, bool *, result)                                    \
93     FN_MACRO(napi_get_named_property, napi_env, env, napi_value, object, const char *, utf8name, napi_value *, result) \
94     FN_MACRO(napi_create_error, napi_env, env, napi_value, code, napi_value, msg, napi_value *, result)                \
95     FN_MACRO(napi_coerce_to_string, napi_env, env, napi_value, value, napi_value *, result)                            \
96     FN_MACRO(napi_create_int64, napi_env, env, int64_t, value, napi_value *, result)                                   \
97     FN_MACRO(napi_reference_ref, napi_env, env, napi_ref, ref, uint32_t *, result)                                     \
98     FN_MACRO(napi_throw_type_error, napi_env, env, const char *, code, const char *, msg)                              \
99     FN_MACRO(napi_get_global, napi_env, env, napi_value *, result)                                                     \
100     FN_MACRO(napi_create_function, napi_env, env, const char *, utf8name, size_t, length, napi_callback, cb, void *,   \
101              data, napi_value *, result)                                                                               \
102     FN_MACRO(napi_escape_handle, napi_env, env, napi_escapable_handle_scope, scope, napi_value, escapee, napi_value *, \
103              result)                                                                                                   \
104     FN_MACRO(napi_set_named_property, napi_env, env, napi_value, object, const char *, utf8name, napi_value, value)    \
105     FN_MACRO(napi_wrap, napi_env, env, napi_value, js_object, void *, native_object, napi_finalize, finalize_cb,       \
106              void *, finalize_hint, napi_ref *, result)                                                                \
107     FN_MACRO(napi_get_cb_info, napi_env, env, napi_callback_info, cbinfo, size_t *, argc, napi_value *, argv,          \
108              napi_value *, this_arg, void **, data)                                                                    \
109     FN_MACRO(napi_is_array, napi_env, env, napi_value, value, bool *, result)                                          \
110     FN_MACRO(napi_throw, napi_env, env, napi_value, error)                                                             \
111     FN_MACRO(napi_open_handle_scope, napi_env, env, napi_handle_scope *, result)                                       \
112     FN_MACRO(napi_create_uint32, napi_env, env, uint32_t, value, napi_value *, result)                                 \
113     FN_MACRO(napi_create_double, napi_env, env, double, value, napi_value *, result)                                   \
114     FN_MACRO(napi_create_bigint_words, napi_env, env, int, sign_bit, size_t, word_count, const uint64_t *, words,      \
115              napi_value *, result)                                                                                     \
116     FN_MACRO(napi_get_value_bigint_uint64, napi_env, env, napi_value, value, uint64_t *, result, bool *, lossless)     \
117     FN_MACRO(napi_get_value_bigint_words, napi_env, env, napi_value, value, int *, sign_bit, size_t *, word_count,     \
118              uint64_t *, words)                                                                                        \
119     FN_MACRO(napi_get_arraybuffer_info, napi_env, env, napi_value, arraybuffer, void **, data, size_t *, byte_length)  \
120     FN_MACRO(napi_define_class, napi_env, env, const char *, utf8name, size_t, length, napi_callback, constructor,     \
121              void *, data, size_t, property_count, const napi_property_descriptor *, properties, napi_value *, result) \
122     FN_MACRO(napi_is_date, napi_env, env, napi_value, value, bool *, is_date)                                          \
123     FN_MACRO(napi_get_and_clear_last_exception, napi_env, env, napi_value *, result)                                   \
124     FN_MACRO(napi_create_string_utf8, napi_env, env, const char *, str, size_t, length, napi_value *, result)          \
125     FN_MACRO(napi_get_value_double, napi_env, env, napi_value, value, double *, result)                                \
126     FN_MACRO(napi_is_arraybuffer, napi_env, env, napi_value, value, bool *, result)                                    \
127     FN_MACRO(napi_close_handle_scope, napi_env, env, napi_handle_scope, scope)                                         \
128     FN_MACRO(napi_create_string_utf16, napi_env, env, const char16_t *, str, size_t, length, napi_value *, result)     \
129     FN_MACRO(napi_create_object, napi_env, env, napi_value *, result)
130 
131 // NOLINTEND(cppcoreguidelines-macro-usage)
132 
133 #endif  // PANDA_ENUMERATE_NAPI_H
134