1 /** 2 * Copyright 2020 Huawei Technologies Co., Ltd 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef MINDSPORE_LITE_SRC_COMMON_LOG_UTIL_H_ 18 #define MINDSPORE_LITE_SRC_COMMON_LOG_UTIL_H_ 19 20 #include "src/common/log_adapter.h" 21 #include "include/errorcode.h" 22 23 #define MSLITE_CHECK_PTR(ptr) \ 24 do { \ 25 if ((ptr) == nullptr) { \ 26 MS_LOG(ERROR) << ": The pointer[" << #ptr << "] is null."; \ 27 return mindspore::lite::RET_ERROR; \ 28 } \ 29 } while (0) 30 31 #define CHECK_MALLOC_RES(ptr, errcode) \ 32 do { \ 33 if ((ptr) == nullptr) { \ 34 MS_LOG(ERROR) << "malloc data failed."; \ 35 return errcode; \ 36 } \ 37 } while (0) 38 39 #define MSLITE_CHECK_PTR_RETURN(ptr, errcode) \ 40 do { \ 41 if ((ptr) == nullptr) { \ 42 MS_LOG(ERROR) << ": The pointer [" << #ptr << "] is null."; \ 43 return errcode; \ 44 } \ 45 } while (0) 46 47 #ifndef ENABLE_HIGH_PERFORMANCE 48 #define CHECK_NULL_RETURN(ptr) \ 49 do { \ 50 if ((ptr) == nullptr) { \ 51 MS_LOG(ERROR) << #ptr << " must not be null!"; \ 52 return mindspore::lite::RET_NULL_PTR; \ 53 } \ 54 } while (0) 55 56 #define CHECK_NULL_RETURN_VOID(ptr) \ 57 do { \ 58 if ((ptr) == nullptr) { \ 59 MS_LOG(ERROR) << #ptr << " must not be null!"; \ 60 return; \ 61 } \ 62 } while (0) 63 64 #define CHECK_LESS_RETURN(size1, size2) \ 65 do { \ 66 if ((size1) < (size2)) { \ 67 MS_LOG(ERROR) << #size1 << " must not be less than " << #size2; \ 68 return mindspore::lite::RET_ERROR; \ 69 } \ 70 } while (0) 71 72 #define CHECK_LARGE_RETURN(size1, size2) \ 73 do { \ 74 if ((size1) > (size2)) { \ 75 MS_LOG(ERROR) << #size1 << " must not be large than " << #size2; \ 76 return mindspore::lite::RET_ERROR; \ 77 } \ 78 } while (0) 79 80 #define CHECK_NOT_EQUAL_RETURN(size1, size2) \ 81 do { \ 82 if ((size1) != (size2)) { \ 83 MS_LOG(ERROR) << #size1 << " must be equal to " << #size2; \ 84 return mindspore::lite::RET_ERROR; \ 85 } \ 86 } while (0) 87 88 #define CHECK_EQUAL_RETURN(size1, size2) \ 89 do { \ 90 if ((size1) == (size2)) { \ 91 MS_LOG(ERROR) << #size1 << " must be not equal to " << #size2; \ 92 return mindspore::lite::RET_ERROR; \ 93 } \ 94 } while (0) 95 96 #define CHECK_LESS_RETURN_RET(size1, size2, ret, free_parm) \ 97 do { \ 98 if ((size1) < (size2)) { \ 99 MS_LOG(ERROR) << #size1 << " must not be less than " << #size2; \ 100 free(free_parm); \ 101 return ret; \ 102 } \ 103 } while (0) 104 105 // Check whether value is true, if not return 'errcode' 106 // and print error string msg 107 #define MS_CHECK_TRUE_MSG(value, errcode, msg) \ 108 do { \ 109 if (!(value)) { \ 110 MS_LOG(ERROR) << #msg; \ 111 return errcode; \ 112 } \ 113 } while (0) 114 115 #define MS_CHECK_FALSE_MSG(value, errcode, msg) \ 116 do { \ 117 if ((value)) { \ 118 MS_LOG(ERROR) << #msg; \ 119 return errcode; \ 120 } \ 121 } while (0) 122 123 #define MS_CHECK_LT(value1, value2, errcode) \ 124 do { \ 125 if ((value1) >= (value2)) { \ 126 MS_LOG(ERROR) << "check ge fail, value1: " << value1 << " value2: " << value2; \ 127 return errcode; \ 128 } \ 129 } while (0) 130 131 #define MS_CHECK_GT(value1, value2, errcode) \ 132 do { \ 133 if ((value1) <= (value2)) { \ 134 MS_LOG(ERROR) << "check gt fail, value1: " << value1 << " value2: " << value2; \ 135 return errcode; \ 136 } \ 137 } while (0) 138 139 #define MS_CHECK_LE(value1, value2, errcode) \ 140 do { \ 141 if ((value1) > (value2)) { \ 142 MS_LOG(ERROR) << "check le fail, value1: " << value1 << " value2: " << value2; \ 143 return errcode; \ 144 } \ 145 } while (0) 146 147 #define MS_CHECK_GE(value1, value2, errcode) \ 148 do { \ 149 if ((value1) < (value2)) { \ 150 MS_LOG(ERROR) << "check ge fail, value1: " << value1 << " value2: " << value2; \ 151 return errcode; \ 152 } \ 153 } while (0) 154 155 #define MS_CHECK_EQ(value1, value2, errcode) \ 156 do { \ 157 if ((value1) != (value2)) { \ 158 MS_LOG(ERROR) << "check eq fail, value1: " << value1 << " value2: " << value2; \ 159 return errcode; \ 160 } \ 161 } while (0) 162 163 #define MS_CHECK_PTR_IF_NULL(ptr) \ 164 do { \ 165 if ((ptr) == nullptr) { \ 166 MS_LOG(ERROR) << ": The pointer[" << #ptr << "] is null."; \ 167 return; \ 168 } \ 169 } while (0) 170 171 // Check whether value is false, if not return 'errcode' 172 #define MS_CHECK_FALSE(value, errcode) \ 173 do { \ 174 if ((value)) { \ 175 return errcode; \ 176 } \ 177 } while (0) 178 179 // Check whether value is true, if not return 'errcode' 180 #define MS_CHECK_TRUE_RET(value, errcode) \ 181 do { \ 182 if (!(value)) { \ 183 return errcode; \ 184 } \ 185 } while (0) 186 187 #define MS_CHECK_TRUE_RET_VOID(value) \ 188 do { \ 189 if (!(value)) { \ 190 return; \ 191 } \ 192 } while (0) 193 194 #define MS_CHECK_INT_MUL_NOT_OVERFLOW(value1, value2, errcode) \ 195 MS_CHECK_TRUE_RET(!(INT_MUL_OVERFLOW(value1, value2)), errcode) 196 #define MS_CHECK_INT_ADD_NOT_OVERFLOW(value1, value2, errcode) \ 197 MS_CHECK_TRUE_RET(!(INT_ADD_OVERFLOW(value1, value2)), errcode) 198 199 #else 200 #define CHECK_NULL_RETURN(ptr) 201 #define CHECK_NULL_RETURN_VOID(ptr) 202 #define CHECK_LESS_RETURN(size1, size2) 203 #define CHECK_NOT_EQUAL_RETURN(size1, size2) 204 #define CHECK_EQUAL_RETURN(size1, size2) 205 #define CHECK_LESS_RETURN_RET(size1, size2, ret, do_exec) 206 #define MS_CHECK_TRUE_MSG(value, errcode, msg) 207 #define MS_CHECK_FALSE_MSG(value, errcode, msg) 208 #define MS_CHECK_LT(value1, value2, errcode) 209 #define MS_CHECK_GT(value1, value2, errcode) 210 #define MS_CHECK_LE(value1, value2, errcode) 211 #define MS_CHECK_GE(value1, value2, errcode) 212 #define MS_CHECK_EQ(value1, value2, errcode) 213 #define MS_CHECK_PTR_IF_NULL(ptr) 214 #define MS_CHECK_FALSE(value, errcode) 215 #define MS_CHECK_TRUE_RET(value, errcode) 216 #define MS_CHECK_TRUE_RET_VOID(value) 217 #define MS_CHECK_INT_MUL_NOT_OVERFLOW(value1, value2, errcode) 218 #define MS_CHECK_INT_ADD_NOT_OVERFLOW(value1, value2, errcode) 219 220 #endif 221 #endif // MINDSPORE_LITE_SRC_COMMON_LOG_UTIL_H_ 222