7#include "ll/api/base/Macro.h"
8#include "ll/api/base/StdInt.h"
19 [[nodiscard]]
constexpr SymbolView() =
default;
26 [[nodiscard]]
constexpr explicit SymbolView(std::string_view symbol) : sym(symbol) {}
32 [[nodiscard]]
constexpr size_t size()
const {
return sym.size(); }
34 LLNDAPI
void* resolve(
bool disableErrorOutput =
false)
const;
36 [[nodiscard]]
constexpr std::string_view raw()
const {
return sym; }
38 LLNDAPI std::string toString()
const;
45 [[nodiscard]]
explicit constexpr Symbol(std::string symbol) : sym(std::move(symbol)) {}
47 LLNDAPI
static std::vector<Symbol> fromAddress(
void*);
49 [[nodiscard]]
constexpr size_t size()
const {
return sym.size(); }
54[[nodiscard]]
constexpr SymbolView::SymbolView(
Symbol const& symbol) :
SymbolView(symbol.view()) {}
61 [[nodiscard]]
consteval FixedSymbol(std::string_view symbol) { std::copy_n(symbol.data(), symbol.size(), sym); }
62 [[nodiscard]]
consteval FixedSymbol(
char const* symbol) { std::copy_n(symbol, N, sym); }
64 [[nodiscard]]
consteval size_t size()
const {
return N; }
74template <FixedSymbol symbol>
75inline void* symbolAddressCache = symbol.view().resolve();
79namespace ll::inline literals::inline memory_literals {
80template <memory::FixedSymbol symbol>
81consteval memory::SymbolView
operator""_sym() noexcept {
84template <memory::FixedSymbol symbol>
85constexpr void*
operator""_symp() noexcept {
86 return memory::symbolAddressCache<symbol>;