33 std::vector<std::string> labels;
34 for (
auto opair : other->
tens_)
38 labels.push_back(opair.first);
43 logs::warnf(
"duplicate base labels %s",
44 fmts::to_string(labels.begin(), labels.end()).c_str());
50 std::string label = cpair.first;
58 it->second->join(cpair.second);
78 StringsT::iterator path_begin,
79 StringsT::iterator path_end)
const 81 if (path_begin == path_end)
85 auto path_it = path_begin++;
86 if (path_begin == path_end)
88 auto it =
tens_.find(*path_it);
89 if (
tens_.end() != it)
97 if (
nullptr != it->second)
99 return it->second->get_labelled(path_begin, path_end);
107 StringsT::iterator path_end, ade::TensptrT tens)
109 if (path_begin == path_end)
113 std::string label = *(path_begin++);
114 if (path_begin == path_end)
116 tens_.emplace(label, tens);
128 assert(
nullptr != it->second);
138 std::unordered_map<std::string,ade::TensptrT>
tens_;
145 std::unordered_set<ade::TensptrT>
roots_;
157 #endif // PBM_GRAPH_HPP Tree node for labeling Tensptrs.
Definition: load.hpp:18
std::list< std::string > StringsT
String list type used for paths.
Definition: data.hpp:32
ade::TensptrT get_labelled(StringsT::iterator path_begin, StringsT::iterator path_end) const
Definition: load.hpp:77
ade::TensptrT get_labelled(StringsT path) const
Return tensor associated with input path if found otherwise nullptr.
Definition: load.hpp:64
~PathedTens(void)
Definition: load.hpp:20
Contains all information necessary to recreate labelled ADE graph.
Definition: load.hpp:142
void set_labelled(StringsT path, ade::TensptrT tens)
Set input path to reference tensor.
Definition: load.hpp:70
PathedTens tens_
Labelled tensors.
Definition: load.hpp:148
std::unordered_map< std::string, PathedTens * > children_
Map of labels to branching nodes.
Definition: load.hpp:135
void join(PathedTens *other)
Definition: load.hpp:30
std::function< ade::TensptrT(const char *, ade::Shape, size_t, std::string)> DataLoaderT
Data deserialization functor.
Definition: data.hpp:29
std::unordered_set< ade::TensptrT > roots_
Set of all roots (Tensptrs without any parent)
Definition: load.hpp:145
void load_graph(GraphInfo &out, const cortenn::Graph &in, DataLoaderT dataloader)
Return graph info through out available from in graph.
Definition: load.cpp:33
std::unordered_map< std::string, ade::TensptrT > tens_
Map of labels to tensor leaves.
Definition: load.hpp:138
void set_labelled(StringsT::iterator path_begin, StringsT::iterator path_end, ade::TensptrT tens)
Set path between iterators begin and end to reference tensor.
Definition: load.hpp:106