|
FE 0.6.0
A header-only C++ library for writing frontends
|
Namespaces | |
| namespace | format |
| namespace | utf8 |
Classes | |
| class | Arena |
| An arena pre-allocates so-called pages of size Arena::page_size_. More... | |
| struct | basic_ostream_formatter |
Make types that support ostream operators available for std::format. More... | |
| struct | Driver |
| Use/derive from this class for "global" variables that you need all over the place. More... | |
| struct | is_bit_enum |
| class | Lexer |
The blueprint for a lexer with a buffer of K tokens to peek into the future (Lexer::ahead). More... | |
| struct | Loc |
| Location in a File. More... | |
| class | Parser |
The blueprint for a recursive descent/ ascent parser using a K lookahead of Tokens. More... | |
| struct | Pos |
| Position in a source file; pass around as value. More... | |
| class | Ring |
A ring buffer with N elements. More... | |
| class | Ring< T, 1 > |
Specialization if N == 1 - doesn't need a ring. More... | |
| class | Ring< T, 2 > |
Specialization if N == 2; doesn't need a ring, we just copy. More... | |
| class | RuntimeCast |
Inherit from this class using CRTP, for some nice dynamic_cast-style wrappers. More... | |
| class | Sym |
| A Symbol just wraps a pointer to Sym::String, so pass Sym itself around as value. More... | |
| class | SymPool |
| Hash set where all strings - wrapped in Symbol - live in. More... | |
| class | Tab |
| Keeps track of indentation level during output. More... | |
Concepts | |
| concept | Nodeable |
| concept | BitEnum |
Typedefs | |
| using | ostream_formatter = basic_ostream_formatter<char> |
SymMap/SymSet | |
Set/Map is keyed by pointer - which is hashed in SymPool. | |
| template<class V > | |
| using | SymMap = std::unordered_map<Sym, V, Sym::Hash, Sym::Eq> |
| using | SymSet = std::unordered_set<Sym, Sym::Hash, Sym::Eq> |
Functions | |
| void | unreachable () |
| void | breakpoint () |
| Raise breaokpoint in debugger. | |
| std::ostream & | operator<< (std::ostream &os, Pos pos) |
| std::ostream & | operator<< (std::ostream &os, Loc loc) |
Bit operations for enum classs | |
Provides all kind of bit and comparison operators for an Note that the bit operators return using fe::operator&;
using fe::operator|;
using fe::operator^;
using fe::operator<=>;
using fe::operator==;
using fe::operator!=;
enum class MyEnum : unsigned {
A = 1 << 0,
B = 1 << 1,
C = 1 << 2,
};
Definition enum.h:12 | |
| template<BitEnum E> | |
| constexpr auto | operator& (E x, E y) |
| template<BitEnum E> | |
| constexpr auto | operator& (std::underlying_type_t< E > x, E y) |
| template<BitEnum E> | |
| constexpr auto | operator& (E x, std::underlying_type_t< E > y) |
| template<BitEnum E> | |
| constexpr auto | operator| (E x, E y) |
| template<BitEnum E> | |
| constexpr auto | operator| (std::underlying_type_t< E > x, E y) |
| template<BitEnum E> | |
| constexpr auto | operator| (E x, std::underlying_type_t< E > y) |
| template<BitEnum E> | |
| constexpr auto | operator^ (E x, E y) |
| template<BitEnum E> | |
| constexpr auto | operator^ (std::underlying_type_t< E > x, E y) |
| template<BitEnum E> | |
| constexpr auto | operator^ (E x, std::underlying_type_t< E > y) |
| template<BitEnum E> | |
| constexpr std::strong_ordering | operator<=> (std::underlying_type_t< E > x, E y) |
| template<BitEnum E> | |
| constexpr std::strong_ordering | operator<=> (E x, std::underlying_type_t< E > y) |
| template<BitEnum E> | |
| constexpr bool | operator== (std::underlying_type_t< E > x, E y) |
| template<BitEnum E> | |
| constexpr bool | operator!= (std::underlying_type_t< E > x, E y) |
| template<BitEnum E> | |
| constexpr bool | operator== (E x, std::underlying_type_t< E > y) |
| template<BitEnum E> | |
| constexpr bool | operator!= (E x, std::underlying_type_t< E > y) |
out/outln/err/errln | |
Print to | |
| template<class... Args> | |
| void | err (format::format_string< Args... > fmt, Args &&... args) |
| template<class... Args> | |
| void | out (format::format_string< Args... > fmt, Args &&... args) |
| template<class... Args> | |
| void | errln (format::format_string< Args... > fmt, Args &&... args) |
| template<class... Args> | |
| void | outln (format::format_string< Args... > fmt, Args &&... args) |
Variables | |
is_enum | |
| template<class T > | |
| constexpr bool | is_bit_enum_v = is_bit_enum<T>::value |
| using fe::ostream_formatter = basic_ostream_formatter<char> |
| using fe::SymMap = std::unordered_map<Sym, V, Sym::Hash, Sym::Eq> |
| using fe::SymSet = std::unordered_set<Sym, Sym::Hash, Sym::Eq> |
|
inline |
| void fe::err | ( | format::format_string< Args... > | fmt, |
| Args &&... | args ) |
| void fe::errln | ( | format::format_string< Args... > | fmt, |
| Args &&... | args ) |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
| std::ostream & fe::operator<< | ( | std::ostream & | os, |
| Loc | loc ) |
| std::ostream & fe::operator<< | ( | std::ostream & | os, |
| Pos | pos ) |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
| void fe::out | ( | format::format_string< Args... > | fmt, |
| Args &&... | args ) |
| void fe::outln | ( | format::format_string< Args... > | fmt, |
| Args &&... | args ) |
|
inline |
|
inlineconstexpr |