Enzo
Loading...
Searching...
No Matches
ExpressionContext.h
1#pragma once
2#include "Engine/Core/Types.h"
3#include "Engine/NetworkGraph/Unit.h"
4#include <vector>
5
6namespace enzo::expr {
7
21{
22 public:
23 explicit ExpressionContext(nt::OpId currentOp) : currentOp_(currentOp) {}
24
26 nt::OpId currentOp() const { return currentOp_; }
27
29 void recordExpressionDependency(const nt::Unit& dependency) const
30 {
31 expressionDependencies_.push_back(dependency);
32 }
33
35 const std::vector<nt::Unit>& getExpressionDependencies() const
36 {
37 return expressionDependencies_;
38 }
39
40 private:
41 nt::OpId currentOp_;
42
43 // Filled as prm() and friends resolve, so const reads can still accumulate.
44 mutable std::vector<nt::Unit> expressionDependencies_;
45};
46
47} // namespace enzo::expr
Basic attribute, parameter, and node types for Enzo.
uint64_t OpId
The unique ID assigned to each node in the network.
Definition Types.h:137
The world a single expression evaluation reads and writes to.
Definition ExpressionContext.h:21
void recordExpressionDependency(const nt::Unit &dependency) const
Notes a parameter the expression read, so it becomes a dependency.
Definition ExpressionContext.h:29
nt::OpId currentOp() const
The node a relative parameter path resolves against.
Definition ExpressionContext.h:26
const std::vector< nt::Unit > & getExpressionDependencies() const
Every parameter the expression read during this evaluation.
Definition ExpressionContext.h:35
A point in the network graph, either an operator output or a parameter.
Definition Unit.h:20