Struct ScopeBlock

Struct Documentation

struct ScopeBlock

One loop block: a batch loop over axis (sentinel/default on the root block, which sits outside every loop), containing an ordered sequence of build steps and nested child blocks, plus the set of values that leave this block (and how) when it closes.

Public Functions

inline ScopeBlock()
inline ScopeBlock(ScopeBlock const&)
inline ScopeBlock(ScopeBlock&&)
inline ScopeBlock &operator=(ScopeBlock const&)
inline ScopeBlock &operator=(ScopeBlock&&)
inline ~ScopeBlock()

Public Members

Index axis = {}

the loop axis; default (sentinel) on the root block.

int latitude_ordinal = 0

layout: the pass index — disambiguates recurring sibling blocks realizing the same axis (a forced-split nest emits one sibling block per pass it holds; see forced_split_levels).

DagScopeLevel level = {}

this block’s DAG-scope nest position (mirrors axis and latitude_ordinal; see DagScopeLevel's doc comment). Default-valued (depth 0, empty space, altitude/latitude ordinals 0) on the root block.

BatchModeType kind = BatchModeType::Contracted

Contracted (accumulate on block exit) or External (scatter on block exit); meaningless on the root.

container::vector<Step> steps

ordered: build-or-child-block, interleaved (see Step's doc comment for why container::vector, not svector).

container::svector<std::pair<std::size_t, OutputKind>> outputs = {}

value_id -> how it leaves this block on close.