• 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_GUARD_UTIL_ASSERT_UTIL_H
17 #define PANDA_GUARD_UTIL_ASSERT_UTIL_H
18 
19 #include "macros.h"
20 #include "util/error.h"
21 
22 #define PANDA_GUARD_ERROR_PRINT(tag, errCode, desc, cause, solutions)              \
23     do {                                                                           \
24         panda::guard::Error error((errCode), (tag));                               \
25         error.GetDescStream() << desc;           /* CC-OFF(G.PRE.02) string arg */ \
26         error.GetCauseStream() << cause;         /* CC-OFF(G.PRE.02) string arg */ \
27         error.GetSolutionsStream() << solutions; /* CC-OFF(G.PRE.02) string arg */ \
28         error.Print();                                                             \
29     } while (0)
30 
31 #define PANDA_GUARD_ASSERT_PRINT(cond, tag, errCode, desc)       \
32     do {                                                         \
33         if (UNLIKELY((cond))) {                                  \
34             PANDA_GUARD_ERROR_PRINT(tag, errCode, desc, "", ""); \
35             std::abort();                                        \
36         }                                                        \
37     } while (0)
38 
39 #define PANDA_GUARD_ABORT_PRINT(tag, errCode, desc)          \
40     do {                                                     \
41         PANDA_GUARD_ERROR_PRINT(tag, errCode, desc, "", ""); \
42         std::abort();                                        \
43     } while (0)
44 
45 #endif  // PANDA_GUARD_UTIL_ASSERT_UTIL_H
46