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