|
REAL
Regular Expression Algorithmic Library — constexpr C++20 regex
|
Storage policies: where a program lives and how scratch is allocated. More...
#include "real/version.hpp"#include <array>#include <cassert>#include <cstddef>#include <cstdint>#include <limits>#include <memory>#include <stdexcept>#include <string>#include <string_view>#include <type_traits>#include <vector>#include "real/frontend/ast.hpp"#include "real/frontend/compiler.hpp"#include "real/engine/pike.hpp"#include "real/core/program.hpp"Classes | |
| struct | real::fixed_string< N > |
| A fixed-size string usable as a non-type template parameter. More... | |
| class | real::detail::static_vec< T, Cap > |
| Fixed-capacity vector backed by an inline array (no heap). More... | |
| class | real::detail::small_vec< T, InlineCapacity > |
| Small-buffer-optimized vector for the dynamic hot paths. More... | |
| struct | real::detail::small_vec< T, InlineCapacity >::inline_block |
Inline element block. A struct (not a bare C array) so the union ctor can activate it as a whole with construct_at in a constant expression, while inline_data still indexes a plain C array — which the static analyzer can bound (a std::array's operator[] hides the extent and trips a false out-of-bounds on transfer_range). More... | |
| union | real::detail::small_vec< T, InlineCapacity >::Storage |
| The either-or storage: the inline buffer, or a pointer to the heap block once the vector has spilled. is_heap_ says which member is active. More... | |
| struct | real::detail::owned_name_context |
| The name-resolution context a result owns when it must outlive the regex it came from. More... | |
| class | real::detail::name_context_box |
| A uniquely-owning, deep-copying box for owned_name_context that survives constant evaluation. More... | |
| struct | real::detail::borrowed_names |
| The compile-time policy's name owner: there is nothing to own. More... | |
| struct | real::detail::dynamic_storage |
Storage policy backing real::regex: heap, sized once at run time. More... | |
| struct | real::detail::dynamic_storage::state_type |
| VM scratch state: SBO thread lists, working slots and eps stack. More... | |
| struct | real::detail::static_il_guard_fields |
| IL: the per-haystack guard fields the inner-literal route needs, for a compile-time storage. More... | |
| struct | real::detail::static_no_il_guard_fields |
| No IL fields: the route is not compiled for this pattern. More... | |
| struct | real::detail::static_pike_scratch< CodeSize, SlotCount, WantsIL > |
| Compile-time-storage VM scratch, all fixed-capacity (zero heap), keyed on DIMENSIONS ONLY. More... | |
| struct | real::detail::static_storage< Pat, F > |
Storage policy backing real::static_regex: compile-time, stateless. More... | |
| struct | real::detail::static_storage< Pat, F >::measured |
| Everything build yields that is NOT a range, measured in ONE evaluation. More... | |
Namespaces | |
| namespace | real |
| REAL's public API: real::regex, real::static_regex, real::flags and the match/iterator types built on them. | |
| namespace | real::detail |
| DFA construction internals: subset construction over a flattened NFA. Not a stable API. | |
Functions | |
| constexpr std::size_t | real::detail::scratch_code_tier (std::size_t code_size) |
| Rounds a program length up to the scratch capacity tier it shares with its neighbours. | |
Storage policies: where a program lives and how scratch is allocated.
real::regex).real::static_regex).Exact sizing uses C++20 transient constexpr allocation: the program is built once to measure each array, then rebuilt to fill it.