38 lines
1.1 KiB
C++
38 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "types.hpp"
|
|
|
|
namespace util {
|
|
|
|
struct source_location {
|
|
_NODISCARD static constexpr source_location
|
|
current(const uint_least32_t _Line_ = __builtin_LINE(),
|
|
const uint_least32_t _Column_ = __builtin_COLUMN(),
|
|
const char *const _File_ = __builtin_FILE(),
|
|
const char *const _Function_ = __builtin_FUNCTION()) noexcept {
|
|
source_location _Result;
|
|
_Result._Line = _Line_;
|
|
_Result._Column = _Column_;
|
|
_Result._File = _File_;
|
|
_Result._Function = _Function_;
|
|
return _Result;
|
|
}
|
|
|
|
_NODISCARD_CTOR constexpr source_location() noexcept = default;
|
|
|
|
_NODISCARD constexpr uint_least32_t line() const noexcept { return _Line; }
|
|
_NODISCARD constexpr uint_least32_t column() const noexcept {
|
|
return _Column;
|
|
}
|
|
_NODISCARD constexpr const char *file_name() const noexcept { return _File; }
|
|
_NODISCARD constexpr const char *function_name() const noexcept {
|
|
return _Function;
|
|
}
|
|
|
|
private:
|
|
uint_least32_t _Line{};
|
|
uint_least32_t _Column{};
|
|
const char *_File = "";
|
|
const char *_Function = "";
|
|
};
|
|
} |