LeviLamina
Loading...
Searching...
No Matches
SourceLocation.h
1#pragma once
2
3#include <string>
4
5#include "ll/api/base/CompilerPredefine.h"
6
7#include "fmt/format.h"
8
9namespace ll {
11public:
12 char const* mFile;
13 char const* mFunction;
14 char const* mFuncsig;
15 int mLine;
16 int mColumn;
17
18 static consteval SourceLocation current(
19 char const* file = LL_CURRENT_FILE,
20 char const* function = LL_CURRENT_FUNCTION,
21 char const* funcsig = LL_CURRENT_FUNCSIG,
22 int line = LL_CURRENT_LINE,
23 int column = LL_CURRENT_COLUMN
24 ) noexcept {
25 return {file, function, funcsig, line, column};
26 }
27
28 static consteval SourceLocation unknown() noexcept { return {"", "", "", 0, 0}; }
29
30 consteval SourceLocation(char const* file, char const* function, char const* funcsig, int line, int column) noexcept
31 : mFile(file),
32 mFunction(function),
33 mFuncsig(funcsig),
34 mLine(line),
35 mColumn(column) {}
36
37 [[nodiscard]] char const* file() const noexcept { return mFile; }
38 [[nodiscard]] char const* function() const noexcept { return mFunction; }
39 [[nodiscard]] char const* funcsig() const noexcept { return mFuncsig; }
40 [[nodiscard]] int line() const noexcept { return mLine; }
41 [[nodiscard]] int column() const noexcept { return mColumn; }
42
43 [[nodiscard]] std::string toString() const {
44 return fmt::format("{} at {}({}:{})", mFunction, mFile, mLine, mColumn);
45 }
46};
47} // namespace ll
Definition SourceLocation.h:10