35void ModifierComputeContext::print_current_in_line(std::ostream &stream)
const
57 return tree_->node_by_id(node_id_);
62void NodeComputeContext::print_current_in_line(std::ostream &stream)
const
65 if (
const bNode *
node = tree_->node_by_id(node_id_)) {
70 stream <<
"Node ID: " << node_id_;
90void SimulationZoneComputeContext::print_current_in_line(std::ostream &stream)
const
92 stream <<
"Simulation Zone ID: " << output_node_id_;
114void RepeatZoneComputeContext::print_current_in_line(std::ostream &stream)
const
116 stream <<
"Repeat Zone ID: " << output_node_id_;
136void ForeachGeometryElementZoneComputeContext::print_current_in_line(std::ostream &stream)
const
138 stream <<
"Foreach Geometry Element Zone ID: " << output_node_id_;
168void OperatorComputeContext::print_current_in_line(std::ostream &stream)
const
170 stream <<
"Operator";
176 return *modifier_contexts_cache_.lookup_or_add_cb(
182 const int modifier_uid)
184 return *modifier_contexts_cache_.lookup_or_add_cb(std::pair{parent, modifier_uid}, [&]() {
191 return *operator_contexts_cache_.lookup_or_add_cb(
198 return *operator_contexts_cache_.lookup_or_add_cb(
206 return *group_node_contexts_cache_.lookup_or_add_cb(std::pair{parent, node_id}, [&]() {
214 return *simulation_zone_contexts_cache_.lookup_or_add_cb(
215 std::pair{parent, output_node_id}, [&]() {
223 return *simulation_zone_contexts_cache_.lookup_or_add_cb(
224 std::pair{parent, output_node.
identifier}, [&]() {
233 return *repeat_zone_contexts_cache_.lookup_or_add_cb(
234 std::pair{parent, std::pair{output_node_id, iteration}}, [&]() {
236 parent, output_node_id, iteration);
241 const bNode &output_node,
244 return *repeat_zone_contexts_cache_.lookup_or_add_cb(
245 std::pair{parent, std::pair{output_node.
identifier, iteration}}, [&]() {
255 return *foreach_geometry_element_zone_contexts_cache_.lookup_or_add_cb(
256 std::pair{parent, std::pair{output_node_id, index}}, [&]() {
258 parent, output_node_id, index);
264 const bNode &output_node,
267 return *foreach_geometry_element_zone_contexts_cache_.lookup_or_add_cb(
268 std::pair{parent, std::pair{output_node.
identifier, index}}, [&]() {
270 parent, output_node, index);
278 const std::optional<nodes::ClosureSourceLocation> &closure_source_location)
280 return *evaluate_closure_contexts_cache_.lookup_or_add_cb(std::pair{parent, node_id}, [&]() {
282 parent, node_id,
tree, closure_source_location);
ComputeContext(const ComputeContext *parent)
const ComputeContext * parent() const
const ComputeContext * parent_
const EvaluateClosureComputeContext & for_evaluate_closure(const ComputeContext *parent, int32_t node_id, const bNodeTree *tree=nullptr, const std::optional< nodes::ClosureSourceLocation > &closure_source_location=std::nullopt)
const ModifierComputeContext & for_modifier(const ComputeContext *parent, const NodesModifierData &nmd)
const GroupNodeComputeContext & for_group_node(const ComputeContext *parent, int32_t node_id, const bNodeTree *tree=nullptr)
const ForeachGeometryElementZoneComputeContext & for_foreach_geometry_element_zone(const ComputeContext *parent, int32_t output_node_id, int index)
const RepeatZoneComputeContext & for_repeat_zone(const ComputeContext *parent, int32_t output_node_id, int iteration)
const OperatorComputeContext & for_operator(const ComputeContext *parent)
const SimulationZoneComputeContext & for_simulation_zone(const ComputeContext *parent, int output_node_id)
const T & for_any_uncached(Args &&...args)
EvaluateClosureComputeContext(const ComputeContext *parent, int32_t node_id, const bNodeTree *tree=nullptr, const std::optional< nodes::ClosureSourceLocation > &closure_source_location=std::nullopt)
std::optional< nodes::ClosureSourceLocation > closure_source_location() const
ForeachGeometryElementZoneComputeContext(const ComputeContext *parent, int32_t output_node_id, int index)
int32_t output_node_id() const
const NodesModifierData * nmd() const
ModifierComputeContext(const ComputeContext *parent, const NodesModifierData &nmd)
const bNodeTree * tree() const
const bNode * node() const
NodeComputeContext(const ComputeContext *parent, int32_t node_id, const bNodeTree *tree=nullptr)
const bNodeTree * tree() const
RepeatZoneComputeContext(const ComputeContext *parent, int32_t output_node_id, int iteration)
int32_t output_node_id() const
int32_t output_node_id() const
SimulationZoneComputeContext(const ComputeContext *parent, int output_node_id)
std::string node_label(const bNodeTree &ntree, const bNode &node)
static ComputeContextHash from(const ComputeContext *parent, const char(&type_str)[N], Args &&...args)