diff options
author | babenko <babenko@yandex-team.ru> | 2022-02-10 16:49:19 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:49:19 +0300 |
commit | cec37806d8847aa3db53bafc9e251d4aaf325c12 (patch) | |
tree | 4a61c191e93e31d9ab423e258c71ab43550ee3d2 /library/cpp/yt/assert/assert.h | |
parent | 58cd0b86ed99a72df22479e26a20bc1c1e57e65e (diff) | |
download | ydb-cec37806d8847aa3db53bafc9e251d4aaf325c12.tar.gz |
Restoring authorship annotation for <babenko@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'library/cpp/yt/assert/assert.h')
-rw-r--r-- | library/cpp/yt/assert/assert.h | 152 |
1 files changed, 76 insertions, 76 deletions
diff --git a/library/cpp/yt/assert/assert.h b/library/cpp/yt/assert/assert.h index 7a9e761a3a..40f1d5d829 100644 --- a/library/cpp/yt/assert/assert.h +++ b/library/cpp/yt/assert/assert.h @@ -1,76 +1,76 @@ -#pragma once - -#include <util/system/compiler.h> -#include <util/system/src_root.h> - -#include <util/generic/strbuf.h> - -namespace NYT { - -//////////////////////////////////////////////////////////////////////////////// - -namespace NDetail { - -[[noreturn]] -void AssertTrapImpl( - TStringBuf trapType, - TStringBuf expr, - TStringBuf file, - int line, - TStringBuf function); - -} // namespace NDetail - -#ifdef __GNUC__ - #define YT_BUILTIN_TRAP() __builtin_trap() -#else - #define YT_BUILTIN_TRAP() std::terminate() -#endif - -#define YT_ASSERT_TRAP(trapType, expr) \ - ::NYT::NDetail::AssertTrapImpl(TStringBuf(trapType), TStringBuf(expr), __SOURCE_FILE_IMPL__.As<TStringBuf>(), __LINE__, TStringBuf(__FUNCTION__)); \ - Y_UNREACHABLE() \ - -#ifdef NDEBUG - #define YT_ASSERT(expr) \ - do { \ - if (false) { \ - (void) (expr); \ - } \ - } while (false) -#else - #define YT_ASSERT(expr) \ - do { \ - if (Y_UNLIKELY(!(expr))) { \ - YT_ASSERT_TRAP("YT_ASSERT", #expr); \ - } \ - } while (false) -#endif - -//! Same as |YT_ASSERT| but evaluates and checks the expression in both release and debug mode. -#define YT_VERIFY(expr) \ - do { \ - if (Y_UNLIKELY(!(expr))) { \ - YT_ASSERT_TRAP("YT_VERIFY", #expr); \ - } \ - } while (false) - -//! Fatal error code marker. Abnormally terminates the current process. -#ifdef YT_COMPILING_UDF - #define YT_ABORT() __YT_BUILTIN_ABORT() -#else - #define YT_ABORT() \ - do { \ - YT_ASSERT_TRAP("YT_ABORT", ""); \ - } while (false) -#endif - -//! Unimplemented code marker. Abnormally terminates the current process. -#define YT_UNIMPLEMENTED() \ - do { \ - YT_ASSERT_TRAP("YT_UNIMPLEMENTED", ""); \ - } while (false) - -//////////////////////////////////////////////////////////////////////////////// - -} // namespace NYT +#pragma once + +#include <util/system/compiler.h> +#include <util/system/src_root.h> + +#include <util/generic/strbuf.h> + +namespace NYT { + +//////////////////////////////////////////////////////////////////////////////// + +namespace NDetail { + +[[noreturn]] +void AssertTrapImpl( + TStringBuf trapType, + TStringBuf expr, + TStringBuf file, + int line, + TStringBuf function); + +} // namespace NDetail + +#ifdef __GNUC__ + #define YT_BUILTIN_TRAP() __builtin_trap() +#else + #define YT_BUILTIN_TRAP() std::terminate() +#endif + +#define YT_ASSERT_TRAP(trapType, expr) \ + ::NYT::NDetail::AssertTrapImpl(TStringBuf(trapType), TStringBuf(expr), __SOURCE_FILE_IMPL__.As<TStringBuf>(), __LINE__, TStringBuf(__FUNCTION__)); \ + Y_UNREACHABLE() \ + +#ifdef NDEBUG + #define YT_ASSERT(expr) \ + do { \ + if (false) { \ + (void) (expr); \ + } \ + } while (false) +#else + #define YT_ASSERT(expr) \ + do { \ + if (Y_UNLIKELY(!(expr))) { \ + YT_ASSERT_TRAP("YT_ASSERT", #expr); \ + } \ + } while (false) +#endif + +//! Same as |YT_ASSERT| but evaluates and checks the expression in both release and debug mode. +#define YT_VERIFY(expr) \ + do { \ + if (Y_UNLIKELY(!(expr))) { \ + YT_ASSERT_TRAP("YT_VERIFY", #expr); \ + } \ + } while (false) + +//! Fatal error code marker. Abnormally terminates the current process. +#ifdef YT_COMPILING_UDF + #define YT_ABORT() __YT_BUILTIN_ABORT() +#else + #define YT_ABORT() \ + do { \ + YT_ASSERT_TRAP("YT_ABORT", ""); \ + } while (false) +#endif + +//! Unimplemented code marker. Abnormally terminates the current process. +#define YT_UNIMPLEMENTED() \ + do { \ + YT_ASSERT_TRAP("YT_UNIMPLEMENTED", ""); \ + } while (false) + +//////////////////////////////////////////////////////////////////////////////// + +} // namespace NYT |