26#define NODE_EDGES(X_RO, X_RW) \
28 X_RO(shamrock::solvergraph::IPatchDataLayerRefs, source) \
31 X_RW(shamrock::solvergraph::FieldRefs<T>, out_ref)
33namespace shamrock::solvergraph {
36 class GetFieldRefFromLayer :
public INode {
41 GetFieldRefFromLayer(
u32 field_idx) : field_idx(field_idx) {}
45 : GetFieldRefFromLayer(layout.
get_field_idx<T>(field_name)) {}
48 const std::shared_ptr<shamrock::patch::PatchDataLayerLayout> &layout,
49 const std::string &field_name)
52 EXPAND_NODE_EDGES(NODE_EDGES)
55 auto edges = get_edges();
57 edges.out_ref.set_refs(
58 edges.source.get_const_refs()
61 return std::ref(pdat.get_field<T>(field_idx));
Defines the PatchDataLayerRefs class for managing distributed references to patch data layers.
std::uint32_t u32
32 bit unsigned integer
std::uint64_t u64
64 bit unsigned integer
u32 get_field_idx(const std::string &field_name) const
Get the field id if matching name & type.
PatchDataLayer container class, the layout is described in patchdata_layout.
std::string _impl_get_label() const
get the label of the node
void _impl_evaluate_internal()
evaluate the node
std::string _impl_get_tex() const
get the tex of the node
T & get_check_ref(const std::unique_ptr< T > &ptr, SourceLocation loc=SourceLocation())
Takes a std::unique_ptr and returns a reference to the object it holds. It throws a std::runtime_erro...