• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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