xref: /aosp_15_r20/external/abseil-cpp/absl/log/internal/check_impl.h (revision 9356374a3709195abf420251b3e825997ff56c0f)
1*9356374aSAndroid Build Coastguard Worker // Copyright 2022 The Abseil Authors.
2*9356374aSAndroid Build Coastguard Worker //
3*9356374aSAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License");
4*9356374aSAndroid Build Coastguard Worker // you may not use this file except in compliance with the License.
5*9356374aSAndroid Build Coastguard Worker // You may obtain a copy of the License at
6*9356374aSAndroid Build Coastguard Worker //
7*9356374aSAndroid Build Coastguard Worker //      https://www.apache.org/licenses/LICENSE-2.0
8*9356374aSAndroid Build Coastguard Worker //
9*9356374aSAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software
10*9356374aSAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS,
11*9356374aSAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*9356374aSAndroid Build Coastguard Worker // See the License for the specific language governing permissions and
13*9356374aSAndroid Build Coastguard Worker // limitations under the License.
14*9356374aSAndroid Build Coastguard Worker 
15*9356374aSAndroid Build Coastguard Worker #ifndef ABSL_LOG_INTERNAL_CHECK_IMPL_H_
16*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_CHECK_IMPL_H_
17*9356374aSAndroid Build Coastguard Worker 
18*9356374aSAndroid Build Coastguard Worker #include "absl/base/optimization.h"
19*9356374aSAndroid Build Coastguard Worker #include "absl/log/internal/check_op.h"
20*9356374aSAndroid Build Coastguard Worker #include "absl/log/internal/conditions.h"
21*9356374aSAndroid Build Coastguard Worker #include "absl/log/internal/log_message.h"
22*9356374aSAndroid Build Coastguard Worker #include "absl/log/internal/strip.h"
23*9356374aSAndroid Build Coastguard Worker 
24*9356374aSAndroid Build Coastguard Worker // CHECK
25*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_CHECK_IMPL(condition, condition_text)       \
26*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
27*9356374aSAndroid Build Coastguard Worker                                     ABSL_PREDICT_FALSE(!(condition))) \
28*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
29*9356374aSAndroid Build Coastguard Worker 
30*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_QCHECK_IMPL(condition, condition_text)       \
31*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CONDITION_QFATAL(STATELESS,                        \
32*9356374aSAndroid Build Coastguard Worker                                      ABSL_PREDICT_FALSE(!(condition))) \
33*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_QCHECK(condition_text).InternalStream()
34*9356374aSAndroid Build Coastguard Worker 
35*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_PCHECK_IMPL(condition, condition_text) \
36*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_IMPL(condition, condition_text).WithPerror()
37*9356374aSAndroid Build Coastguard Worker 
38*9356374aSAndroid Build Coastguard Worker #ifndef NDEBUG
39*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_IMPL(condition, condition_text) \
40*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_IMPL(condition, condition_text)
41*9356374aSAndroid Build Coastguard Worker #else
42*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_IMPL(condition, condition_text) \
43*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_IMPL(true || (condition), "true")
44*9356374aSAndroid Build Coastguard Worker #endif
45*9356374aSAndroid Build Coastguard Worker 
46*9356374aSAndroid Build Coastguard Worker // CHECK_EQ
47*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_CHECK_EQ_IMPL(val1, val1_text, val2, val2_text) \
48*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_OP(Check_EQ, ==, val1, val1_text, val2, val2_text)
49*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_CHECK_NE_IMPL(val1, val1_text, val2, val2_text) \
50*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_OP(Check_NE, !=, val1, val1_text, val2, val2_text)
51*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_CHECK_LE_IMPL(val1, val1_text, val2, val2_text) \
52*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_OP(Check_LE, <=, val1, val1_text, val2, val2_text)
53*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_CHECK_LT_IMPL(val1, val1_text, val2, val2_text) \
54*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_OP(Check_LT, <, val1, val1_text, val2, val2_text)
55*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_CHECK_GE_IMPL(val1, val1_text, val2, val2_text) \
56*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_OP(Check_GE, >=, val1, val1_text, val2, val2_text)
57*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_CHECK_GT_IMPL(val1, val1_text, val2, val2_text) \
58*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_OP(Check_GT, >, val1, val1_text, val2, val2_text)
59*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_QCHECK_EQ_IMPL(val1, val1_text, val2, val2_text) \
60*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_QCHECK_OP(Check_EQ, ==, val1, val1_text, val2, val2_text)
61*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_QCHECK_NE_IMPL(val1, val1_text, val2, val2_text) \
62*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_QCHECK_OP(Check_NE, !=, val1, val1_text, val2, val2_text)
63*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_QCHECK_LE_IMPL(val1, val1_text, val2, val2_text) \
64*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_QCHECK_OP(Check_LE, <=, val1, val1_text, val2, val2_text)
65*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_QCHECK_LT_IMPL(val1, val1_text, val2, val2_text) \
66*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_QCHECK_OP(Check_LT, <, val1, val1_text, val2, val2_text)
67*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_QCHECK_GE_IMPL(val1, val1_text, val2, val2_text) \
68*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_QCHECK_OP(Check_GE, >=, val1, val1_text, val2, val2_text)
69*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_QCHECK_GT_IMPL(val1, val1_text, val2, val2_text) \
70*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_QCHECK_OP(Check_GT, >, val1, val1_text, val2, val2_text)
71*9356374aSAndroid Build Coastguard Worker #ifndef NDEBUG
72*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_EQ_IMPL(val1, val1_text, val2, val2_text) \
73*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_EQ_IMPL(val1, val1_text, val2, val2_text)
74*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_NE_IMPL(val1, val1_text, val2, val2_text) \
75*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_NE_IMPL(val1, val1_text, val2, val2_text)
76*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_LE_IMPL(val1, val1_text, val2, val2_text) \
77*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_LE_IMPL(val1, val1_text, val2, val2_text)
78*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_LT_IMPL(val1, val1_text, val2, val2_text) \
79*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_LT_IMPL(val1, val1_text, val2, val2_text)
80*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_GE_IMPL(val1, val1_text, val2, val2_text) \
81*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_GE_IMPL(val1, val1_text, val2, val2_text)
82*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_GT_IMPL(val1, val1_text, val2, val2_text) \
83*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_GT_IMPL(val1, val1_text, val2, val2_text)
84*9356374aSAndroid Build Coastguard Worker #else  // ndef NDEBUG
85*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_EQ_IMPL(val1, val1_text, val2, val2_text) \
86*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
87*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_NE_IMPL(val1, val1_text, val2, val2_text) \
88*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
89*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_LE_IMPL(val1, val1_text, val2, val2_text) \
90*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
91*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_LT_IMPL(val1, val1_text, val2, val2_text) \
92*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
93*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_GE_IMPL(val1, val1_text, val2, val2_text) \
94*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
95*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_GT_IMPL(val1, val1_text, val2, val2_text) \
96*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
97*9356374aSAndroid Build Coastguard Worker #endif  // def NDEBUG
98*9356374aSAndroid Build Coastguard Worker 
99*9356374aSAndroid Build Coastguard Worker // CHECK_OK
100*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_CHECK_OK_IMPL(status, status_text) \
101*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_OK(status, status_text)
102*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_QCHECK_OK_IMPL(status, status_text) \
103*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_QCHECK_OK(status, status_text)
104*9356374aSAndroid Build Coastguard Worker #ifndef NDEBUG
105*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_OK_IMPL(status, status_text) \
106*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_OK(status, status_text)
107*9356374aSAndroid Build Coastguard Worker #else
108*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_OK_IMPL(status, status_text) \
109*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_DCHECK_NOP(status, nullptr)
110*9356374aSAndroid Build Coastguard Worker #endif
111*9356374aSAndroid Build Coastguard Worker 
112*9356374aSAndroid Build Coastguard Worker // CHECK_STREQ
113*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_CHECK_STREQ_IMPL(s1, s1_text, s2, s2_text) \
114*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_STROP(strcmp, ==, true, s1, s1_text, s2, s2_text)
115*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_CHECK_STRNE_IMPL(s1, s1_text, s2, s2_text) \
116*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_STROP(strcmp, !=, false, s1, s1_text, s2, s2_text)
117*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_CHECK_STRCASEEQ_IMPL(s1, s1_text, s2, s2_text) \
118*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_STROP(strcasecmp, ==, true, s1, s1_text, s2, s2_text)
119*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_CHECK_STRCASENE_IMPL(s1, s1_text, s2, s2_text) \
120*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_STROP(strcasecmp, !=, false, s1, s1_text, s2, s2_text)
121*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_QCHECK_STREQ_IMPL(s1, s1_text, s2, s2_text) \
122*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_QCHECK_STROP(strcmp, ==, true, s1, s1_text, s2, s2_text)
123*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_QCHECK_STRNE_IMPL(s1, s1_text, s2, s2_text) \
124*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_QCHECK_STROP(strcmp, !=, false, s1, s1_text, s2, s2_text)
125*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_QCHECK_STRCASEEQ_IMPL(s1, s1_text, s2, s2_text) \
126*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_QCHECK_STROP(strcasecmp, ==, true, s1, s1_text, s2, s2_text)
127*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_QCHECK_STRCASENE_IMPL(s1, s1_text, s2, s2_text) \
128*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_QCHECK_STROP(strcasecmp, !=, false, s1, s1_text, s2,  \
129*9356374aSAndroid Build Coastguard Worker                                  s2_text)
130*9356374aSAndroid Build Coastguard Worker #ifndef NDEBUG
131*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_STREQ_IMPL(s1, s1_text, s2, s2_text) \
132*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_STREQ_IMPL(s1, s1_text, s2, s2_text)
133*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_STRCASEEQ_IMPL(s1, s1_text, s2, s2_text) \
134*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_STRCASEEQ_IMPL(s1, s1_text, s2, s2_text)
135*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_STRNE_IMPL(s1, s1_text, s2, s2_text) \
136*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_STRNE_IMPL(s1, s1_text, s2, s2_text)
137*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_STRCASENE_IMPL(s1, s1_text, s2, s2_text) \
138*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_CHECK_STRCASENE_IMPL(s1, s1_text, s2, s2_text)
139*9356374aSAndroid Build Coastguard Worker #else  // ndef NDEBUG
140*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_STREQ_IMPL(s1, s1_text, s2, s2_text) \
141*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_DCHECK_NOP(s1, s2)
142*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_STRCASEEQ_IMPL(s1, s1_text, s2, s2_text) \
143*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_DCHECK_NOP(s1, s2)
144*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_STRNE_IMPL(s1, s1_text, s2, s2_text) \
145*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_DCHECK_NOP(s1, s2)
146*9356374aSAndroid Build Coastguard Worker #define ABSL_LOG_INTERNAL_DCHECK_STRCASENE_IMPL(s1, s1_text, s2, s2_text) \
147*9356374aSAndroid Build Coastguard Worker   ABSL_LOG_INTERNAL_DCHECK_NOP(s1, s2)
148*9356374aSAndroid Build Coastguard Worker #endif  // def NDEBUG
149*9356374aSAndroid Build Coastguard Worker 
150*9356374aSAndroid Build Coastguard Worker #endif  // ABSL_LOG_INTERNAL_CHECK_IMPL_H_
151