File indexing completed on 2025-08-28 08:27:09
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #pragma once
0019
0020 #ifdef GANDIVA_IR
0021
0022
0023
0024
0025 # define ARROW_IGNORE_EXPR(expr) ((void)(expr))
0026
0027 # define DCHECK(condition) ARROW_IGNORE_EXPR(condition)
0028 # define DCHECK_OK(status) ARROW_IGNORE_EXPR(status)
0029 # define DCHECK_EQ(val1, val2) ARROW_IGNORE_EXPR(val1)
0030 # define DCHECK_NE(val1, val2) ARROW_IGNORE_EXPR(val1)
0031 # define DCHECK_LE(val1, val2) ARROW_IGNORE_EXPR(val1)
0032 # define DCHECK_LT(val1, val2) ARROW_IGNORE_EXPR(val1)
0033 # define DCHECK_GE(val1, val2) ARROW_IGNORE_EXPR(val1)
0034 # define DCHECK_GT(val1, val2) ARROW_IGNORE_EXPR(val1)
0035
0036 #else
0037
0038 # include <memory>
0039 # include <ostream>
0040 # include <string>
0041
0042 # include "arrow/util/macros.h"
0043 # include "arrow/util/visibility.h"
0044
0045 namespace arrow {
0046 namespace util {
0047
0048 enum class ArrowLogLevel : int {
0049 ARROW_TRACE = -2,
0050 ARROW_DEBUG = -1,
0051 ARROW_INFO = 0,
0052 ARROW_WARNING = 1,
0053 ARROW_ERROR = 2,
0054 ARROW_FATAL = 3
0055 };
0056
0057 # define ARROW_LOG_INTERNAL(level) ::arrow::util::ArrowLog(__FILE__, __LINE__, level)
0058 # define ARROW_LOG(level) ARROW_LOG_INTERNAL(::arrow::util::ArrowLogLevel::ARROW_##level)
0059
0060 # define ARROW_IGNORE_EXPR(expr) ((void)(expr))
0061
0062 # define ARROW_CHECK_OR_LOG(condition, level) \
0063 ARROW_PREDICT_TRUE(condition) \
0064 ? ARROW_IGNORE_EXPR(0) \
0065 : ::arrow::util::Voidify() & ARROW_LOG(level) << " Check failed: " #condition " "
0066
0067 # define ARROW_CHECK(condition) ARROW_CHECK_OR_LOG(condition, FATAL)
0068
0069
0070
0071 # define ARROW_CHECK_OK_PREPEND(to_call, msg, level) \
0072 do { \
0073 ::arrow::Status _s = (to_call); \
0074 ARROW_CHECK_OR_LOG(_s.ok(), level) \
0075 << "Operation failed: " << ARROW_STRINGIFY(to_call) << "\n" \
0076 << (msg) << ": " << _s.ToString(); \
0077 } while (false)
0078
0079
0080
0081 # define ARROW_CHECK_OK(s) ARROW_CHECK_OK_PREPEND(s, "Bad status", FATAL)
0082
0083 # define ARROW_CHECK_EQ(val1, val2) ARROW_CHECK((val1) == (val2))
0084 # define ARROW_CHECK_NE(val1, val2) ARROW_CHECK((val1) != (val2))
0085 # define ARROW_CHECK_LE(val1, val2) ARROW_CHECK((val1) <= (val2))
0086 # define ARROW_CHECK_LT(val1, val2) ARROW_CHECK((val1) < (val2))
0087 # define ARROW_CHECK_GE(val1, val2) ARROW_CHECK((val1) >= (val2))
0088 # define ARROW_CHECK_GT(val1, val2) ARROW_CHECK((val1) > (val2))
0089
0090 # ifdef NDEBUG
0091 # define ARROW_DFATAL ::arrow::util::ArrowLogLevel::ARROW_WARNING
0092
0093
0094
0095
0096 # define ARROW_DCHECK(condition) \
0097 while (false) ARROW_IGNORE_EXPR(condition); \
0098 while (false) ::arrow::util::detail::NullLog()
0099 # define ARROW_DCHECK_OK(s) \
0100 ARROW_IGNORE_EXPR(s); \
0101 while (false) ::arrow::util::detail::NullLog()
0102 # define ARROW_DCHECK_EQ(val1, val2) \
0103 while (false) ARROW_IGNORE_EXPR(val1); \
0104 while (false) ARROW_IGNORE_EXPR(val2); \
0105 while (false) ::arrow::util::detail::NullLog()
0106 # define ARROW_DCHECK_NE(val1, val2) \
0107 while (false) ARROW_IGNORE_EXPR(val1); \
0108 while (false) ARROW_IGNORE_EXPR(val2); \
0109 while (false) ::arrow::util::detail::NullLog()
0110 # define ARROW_DCHECK_LE(val1, val2) \
0111 while (false) ARROW_IGNORE_EXPR(val1); \
0112 while (false) ARROW_IGNORE_EXPR(val2); \
0113 while (false) ::arrow::util::detail::NullLog()
0114 # define ARROW_DCHECK_LT(val1, val2) \
0115 while (false) ARROW_IGNORE_EXPR(val1); \
0116 while (false) ARROW_IGNORE_EXPR(val2); \
0117 while (false) ::arrow::util::detail::NullLog()
0118 # define ARROW_DCHECK_GE(val1, val2) \
0119 while (false) ARROW_IGNORE_EXPR(val1); \
0120 while (false) ARROW_IGNORE_EXPR(val2); \
0121 while (false) ::arrow::util::detail::NullLog()
0122 # define ARROW_DCHECK_GT(val1, val2) \
0123 while (false) ARROW_IGNORE_EXPR(val1); \
0124 while (false) ARROW_IGNORE_EXPR(val2); \
0125 while (false) ::arrow::util::detail::NullLog()
0126
0127 # else
0128 # define ARROW_DFATAL ::arrow::util::ArrowLogLevel::ARROW_FATAL
0129
0130 # define ARROW_DCHECK ARROW_CHECK
0131 # define ARROW_DCHECK_OK ARROW_CHECK_OK
0132 # define ARROW_DCHECK_EQ ARROW_CHECK_EQ
0133 # define ARROW_DCHECK_NE ARROW_CHECK_NE
0134 # define ARROW_DCHECK_LE ARROW_CHECK_LE
0135 # define ARROW_DCHECK_LT ARROW_CHECK_LT
0136 # define ARROW_DCHECK_GE ARROW_CHECK_GE
0137 # define ARROW_DCHECK_GT ARROW_CHECK_GT
0138
0139 # endif
0140
0141
0142 # ifndef DCHECK
0143 # define DCHECK ARROW_DCHECK
0144 # endif
0145 # ifndef DCHECK_OK
0146 # define DCHECK_OK ARROW_DCHECK_OK
0147 # endif
0148 # ifndef DCHECK_EQ
0149 # define DCHECK_EQ ARROW_DCHECK_EQ
0150 # endif
0151 # ifndef DCHECK_NE
0152 # define DCHECK_NE ARROW_DCHECK_NE
0153 # endif
0154 # ifndef DCHECK_LE
0155 # define DCHECK_LE ARROW_DCHECK_LE
0156 # endif
0157 # ifndef DCHECK_LT
0158 # define DCHECK_LT ARROW_DCHECK_LT
0159 # endif
0160 # ifndef DCHECK_GE
0161 # define DCHECK_GE ARROW_DCHECK_GE
0162 # endif
0163 # ifndef DCHECK_GT
0164 # define DCHECK_GT ARROW_DCHECK_GT
0165 # endif
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176 class ARROW_EXPORT ArrowLogBase {
0177 public:
0178 virtual ~ArrowLogBase() {}
0179
0180 virtual bool IsEnabled() const { return false; }
0181
0182 template <typename T>
0183 ArrowLogBase& operator<<(const T& t) {
0184 if (IsEnabled()) {
0185 Stream() << t;
0186 }
0187 return *this;
0188 }
0189
0190 protected:
0191 virtual std::ostream& Stream() = 0;
0192 };
0193
0194 class ARROW_EXPORT ArrowLog : public ArrowLogBase {
0195 public:
0196 ArrowLog(const char* file_name, int line_number, ArrowLogLevel severity);
0197 ~ArrowLog() override;
0198
0199
0200
0201
0202 bool IsEnabled() const override;
0203
0204
0205
0206
0207
0208
0209 static void StartArrowLog(const std::string& appName,
0210 ArrowLogLevel severity_threshold = ArrowLogLevel::ARROW_INFO,
0211 const std::string& logDir = "");
0212
0213
0214 static void ShutDownArrowLog();
0215
0216
0217
0218 static void InstallFailureSignalHandler();
0219
0220
0221 static void UninstallSignalAction();
0222
0223
0224
0225
0226
0227 static bool IsLevelEnabled(ArrowLogLevel log_level);
0228
0229 private:
0230 ARROW_DISALLOW_COPY_AND_ASSIGN(ArrowLog);
0231
0232
0233
0234 void* logging_provider_;
0235
0236 bool is_enabled_;
0237
0238 static ArrowLogLevel severity_threshold_;
0239
0240 protected:
0241 std::ostream& Stream() override;
0242 };
0243
0244
0245
0246 class ARROW_EXPORT Voidify {
0247 public:
0248 Voidify() {}
0249
0250
0251 void operator&(ArrowLogBase&) {}
0252 };
0253
0254 namespace detail {
0255
0256
0257
0258
0259
0260 class NullLog {
0261 public:
0262
0263
0264
0265
0266
0267 template <class T>
0268 NullLog& operator<<(const T& t) {
0269 return *this;
0270 }
0271 };
0272
0273 }
0274 }
0275 }
0276
0277 #endif