NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
source_location.hpp
浏览该文件的文档.
1#ifndef NEXUSFORCE_CORE_EXCEPTION_SOURCE_LOCATION_HPP__
2#define NEXUSFORCE_CORE_EXCEPTION_SOURCE_LOCATION_HPP__
3
10
12NEFORCE_BEGIN_NAMESPACE__
13
18
23struct source_location {
24private:
25 const char* file_{nullptr};
26 const char* func_{nullptr};
27 uint32_t line_{0};
28 uint32_t column_{0};
29
30public:
31 constexpr source_location() noexcept = default;
32
33 constexpr explicit source_location(const char* file, const char* func, uint32_t line = 0,
34 uint32_t column = 0) noexcept :
35 file_(file),
36 func_(func),
37 line_(line),
38 column_(column) {}
39
43 NEFORCE_NODISCARD constexpr const char* file_name() const noexcept { return file_ == nullptr ? "" : file_; }
44
48 NEFORCE_NODISCARD constexpr const char* func_name() const noexcept { return func_ == nullptr ? "" : func_; }
49
53 NEFORCE_NODISCARD constexpr uint32_t line() const noexcept { return line_; }
54
58 NEFORCE_NODISCARD constexpr uint32_t column() const noexcept { return column_; }
59
63 NEFORCE_NODISCARD static NEFORCE_CONSTEVAL20 source_location current() noexcept {
64#ifdef NEFORCE_COMPILER_GCC
65 return source_location{__builtin_FILE(), __builtin_FUNCTION(), __builtin_LINE(), 0};
66#elif defined(NEFORCE_COMPILER_CLANG)
67 return source_location{__builtin_FILE(), __builtin_FUNCTION(), __builtin_LINE(), __builtin_COLUMN()};
68#elif defined(NEFORCE_COMPILER_MSVC)
69 return source_location{__builtin_FILE(), __builtin_FUNCSIG(), __builtin_LINE(), __builtin_COLUMN()};
70#endif
71 }
72};
73 // DebugAndAssertions
75
76NEFORCE_END_NAMESPACE__
77#endif // NEXUSFORCE_CORE_EXCEPTION_SOURCE_LOCATION_HPP__
文件操作类
unsigned int uint32_t
32位无符号整数类型
static consteval source_location current() noexcept
当前源码位置
constexpr uint32_t column() const noexcept
列号
constexpr const char * func_name() const noexcept
函数名
constexpr const char * file_name() const noexcept
文件名
constexpr uint32_t line() const noexcept
行号
基本类型别名