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