|
A11 (C++ runtime)
Native C++ implementation of the A11 streaming action runtime
|
Classes | |
| struct | Analysis |
| Who reads and who writes each ref a body owns. More... | |
| struct | Body |
| A block of steps: a flow's top level, or a loop or branch body. More... | |
| struct | Expr |
| One resolved expression, and the streams it reads. More... | |
| struct | FlowGraph |
| The executable graph of one flow. More... | |
| class | GraphBuilder |
| Appends to a [FlowGraph] while the resolver walks a flow. More... | |
| struct | LogTail |
| One resolved pipeline stage. More... | |
| struct | Ref |
| One stream in the plan. More... | |
| struct | Stage |
| struct | Step |
| One resolved statement. More... | |
Typedefs | |
| using | RefId = size_t |
| Everything in a graph is named by index into the graph that owns it. | |
| using | StepId = size_t |
| using | BodyId = size_t |
| using | ExprId = size_t |
Enumerations | |
| enum class | RefKind { kFlowPort , kCallPort , kNode , kNodeId , kStatus , kHeader , kExpr , kDerived , kZip , kMerge , kWinner , kBound } |
| What a stream in the plan is. More... | |
| enum class | StepKind { kCall , kPipe , kSkip , kWait , kDrain , kCancel , kAbort , kFail , kLog , kCapture , kForEach , kRepeat , kIf , kBlock } |
| What a statement became. More... | |
Functions | |
| std::string_view | StepKindName (StepKind kind) |
| Analysis | Analyse (const FlowGraph &flow, BodyId body) |
| Work out who reads and writes what in one body. | |
| bool | RecordsOutcome (StepKind kind) |
| Whether a step records an outcome of its own for a name to read. | |
Variables | |
| constexpr size_t | kNone = static_cast<size_t>(-1) |
| No such thing – the absent id, for the many fields only some kinds use. | |
| using a11::flow::graph::BodyId = typedef size_t |
| using a11::flow::graph::ExprId = typedef size_t |
| using a11::flow::graph::RefId = typedef size_t |
Everything in a graph is named by index into the graph that owns it.
Not pointers: the vectors grow while the graph is built, and a plan is handed across a language boundary and held for as long as a flow is registered. An index survives both.
| using a11::flow::graph::StepId = typedef size_t |
|
strong |
What a stream in the plan is.
|
strong |
What a statement became.
Work out who reads and writes what in one body.
|
inline |
Whether a step records an outcome of its own for a name to read.
The steps that run a nested body: what makes them different from a kCall is that their status is not a call's status to be asked for, it is theirs to have recorded. A name bound to one reads what it recorded, which is why s = try { .. } and done = for x in s { .. } are the same shape.
| std::string_view a11::flow::graph::StepKindName | ( | StepKind | kind | ) |
|
inlineconstexpr |
No such thing – the absent id, for the many fields only some kinds use.