• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright (c) 2021-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_PLUGINS_ETS_RUNTIME_NAPI_ETS_NAPI_MACROS_H
17 #define PANDA_PLUGINS_ETS_RUNTIME_NAPI_ETS_NAPI_MACROS_H
18 
19 // NOLINTBEGIN(cppcoreguidelines-macro-usage)
20 
21 #define ETS_NAPI_ABORT_HOOK()                    \
22     do {                                         \
23         std::string msg("ETS_NAPI Abort: ");     \
24         msg += __func__;                         \
25         msg += ",";                              \
26         msg += __FILE__;                         \
27         msg += ":";                              \
28         msg += std::to_string(__LINE__);         \
29         ark::ets::PandaEtsVM::Abort(msg.data()); \
30     } while (false)
31 
32 #define ETS_NAPI_ABORT_IF(pred)    \
33     do {                           \
34         if (pred) {                \
35             ETS_NAPI_ABORT_HOOK(); \
36         }                          \
37     } while (false)
38 
39 #define ETS_NAPI_ABORT_IF_NULL(p)  \
40     do {                           \
41         if ((p) == nullptr) {      \
42             ETS_NAPI_ABORT_HOOK(); \
43         }                          \
44     } while (false)
45 
46 #define ETS_NAPI_ABORT_IF_LZ(p)    \
47     do {                           \
48         if ((p) < 0) {             \
49             ETS_NAPI_ABORT_HOOK(); \
50         }                          \
51     } while (false)
52 
53 #define ETS_NAPI_ABORT_IF_NE(a, b) \
54     do {                           \
55         if ((a) != (b)) {          \
56             ETS_NAPI_ABORT_HOOK(); \
57         }                          \
58     } while (false)
59 
60 #define ETS_NAPI_ABORT_IF_LT(a, b) \
61     do {                           \
62         if ((a) < (b)) {           \
63             ETS_NAPI_ABORT_HOOK(); \
64         }                          \
65     } while (false)
66 
67 #define ETS_NAPI_ABORT_IF_LE(a, b) \
68     do {                           \
69         if ((a) <= (b)) {          \
70             ETS_NAPI_ABORT_HOOK(); \
71         }                          \
72     } while (false)
73 
74 #define ETS_NAPI_ABORT_IF_GT(a, b) \
75     do {                           \
76         if ((a) > (b)) {           \
77             ETS_NAPI_ABORT_HOOK(); \
78         }                          \
79     } while (false)
80 
81 #define ETS_NAPI_ABORT_IF_GE(a, b) \
82     do {                           \
83         if ((a) >= (b)) {          \
84             ETS_NAPI_ABORT_HOOK(); \
85         }                          \
86     } while (false)
87 
88 #define ETS_NAPI_RETURN_VOID_IF_NULL(p) \
89     do {                                \
90         if ((p) == nullptr) {           \
91             return;                     \
92         }                               \
93     } while (false)
94 
95 #define ETS_NAPI_RETURN_IF_EQ(a, b, ret) \
96     do {                                 \
97         if (UNLIKELY((a) == (b))) {      \
98             return ret;                  \
99         }                                \
100     } while (false)
101 
102 #define ETS_NAPI_RETURN_IF_NE(a, b, ret) \
103     do {                                 \
104         if (UNLIKELY((a) != (b))) {      \
105             return ret;                  \
106         }                                \
107     } while (false)
108 
109 #define ETS_NAPI_RETURN_IF_GT(a, b, ret) \
110     do {                                 \
111         if (UNLIKELY((a) > (b))) {       \
112             return ret;                  \
113         }                                \
114     } while (false)
115 
116 #define ETS_NAPI_RETURN_IF_GE(a, b, ret) \
117     do {                                 \
118         if (UNLIKELY((a) >= (b))) {      \
119             return ret;                  \
120         }                                \
121     } while (false)
122 
123 #define ETS_NAPI_RETURN_IF_LT(a, b, ret) \
124     do {                                 \
125         if (UNLIKELY((a) < (b))) {       \
126             return ret;                  \
127         }                                \
128     } while (false)
129 
130 #define ETS_NAPI_RETURN_IF_LE(a, b, ret) \
131     do {                                 \
132         if (UNLIKELY((a) <= (b))) {      \
133             return ret;                  \
134         }                                \
135     } while (false)
136 
137 // NOLINTEND(cppcoreguidelines-macro-usage)
138 
139 #endif  // PANDA_PLUGINS_ETS_RUNTIME_NAPI_ETS_NAPI_MACROS_H
140