A11 (C++ runtime)
Native C++ implementation of the A11 streaming action runtime
Loading...
Searching...
No Matches
graph.h File Reference
#include <cstddef>
#include <optional>
#include <string>
#include <string_view>
#include <vector>
#include <absl/base/nullability.h>
#include <absl/container/flat_hash_map.h>
#include <absl/container/flat_hash_set.h>
#include <absl/time/time.h>
#include "a11/flow/syntax.h"
#include "a11/flow/vocabulary.h"
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  a11::flow::graph::LogTail
 One resolved pipeline stage. More...
 
struct  a11::flow::graph::Stage
 
struct  a11::flow::graph::Ref
 One stream in the plan. More...
 
struct  a11::flow::graph::Step
 One resolved statement. More...
 
struct  a11::flow::graph::Body
 A block of steps: a flow's top level, or a loop or branch body. More...
 
struct  a11::flow::graph::Expr
 One resolved expression, and the streams it reads. More...
 
struct  a11::flow::graph::FlowGraph
 The executable graph of one flow. More...
 
struct  a11::flow::graph::Analysis
 Who reads and who writes each ref a body owns. More...
 
class  a11::flow::graph::GraphBuilder
 Appends to a [FlowGraph] while the resolver walks a flow. More...
 

Namespaces

namespace  a11
 
namespace  a11::flow
 
namespace  a11::flow::graph
 

Typedefs

using a11::flow::graph::RefId = size_t
 Everything in a graph is named by index into the graph that owns it.
 
using a11::flow::graph::StepId = size_t
 
using a11::flow::graph::BodyId = size_t
 
using a11::flow::graph::ExprId = size_t
 

Enumerations

enum class  a11::flow::graph::RefKind {
  a11::flow::graph::kFlowPort , a11::flow::graph::kCallPort , a11::flow::graph::kNode , a11::flow::graph::kNodeId ,
  a11::flow::graph::kStatus , a11::flow::graph::kHeader , a11::flow::graph::kExpr , a11::flow::graph::kDerived ,
  a11::flow::graph::kZip , a11::flow::graph::kMerge , a11::flow::graph::kWinner , a11::flow::graph::kBound
}
 What a stream in the plan is. More...
 
enum class  a11::flow::graph::StepKind {
  a11::flow::graph::kCall , a11::flow::graph::kPipe , a11::flow::graph::kSkip , a11::flow::graph::kWait ,
  a11::flow::graph::kDrain , a11::flow::graph::kCancel , a11::flow::graph::kAbort , a11::flow::graph::kFail ,
  a11::flow::graph::kLog , a11::flow::graph::kCapture , a11::flow::graph::kForEach , a11::flow::graph::kRepeat ,
  a11::flow::graph::kIf , a11::flow::graph::kBlock
}
 What a statement became. More...
 

Functions

std::string_view a11::flow::graph::StepKindName (StepKind kind)
 
bool a11::flow::graph::RecordsOutcome (StepKind kind)
 Whether a step records an outcome of its own for a name to read.
 
Analysis a11::flow::graph::Analyse (const FlowGraph &flow, BodyId body)
 Work out who reads and writes what in one body.
 

Variables

constexpr size_t a11::flow::graph::kNone = static_cast<size_t>(-1)
 No such thing – the absent id, for the many fields only some kinds use.