5using namespace std::literals;
21 else if (
'a' <= c && c <=
'z')
23 else if (
'A' <= c && c <=
'Z')
25 else if (
'0' <= c && c <=
'9')
45 else if (2 <= c && c < 28)
47 else if (28 <= c && c < 54)
60 if (s[0] !=
'%')
return {};
63 auto dot =
sv.find(
'.');
64 if (dot == std::string_view::npos)
return {};
70 if (
auto dot =
tag.find(
'.'); dot != std::string_view::npos) {
The World represents the whole program and manages creation of Thorin nodes (Defs).
Sym sym(std::string_view)
std::string_view subview(std::string_view s, size_t i, size_t n=std::string_view::npos)
Like std::string::substr, but works on std::string_view instead.
static Sym demangle(World &, plugin_t u)
Reverts an Axiom::mangled string to a Sym.
static std::optional< plugin_t > mangle(Sym s)
Mangles s into a dense 48-bit representation.
static constexpr flags_t Base
static std::array< Sym, 3 > split(World &, Sym)
static constexpr size_t Max_Plugin_Size