10 #include <unordered_set> 21 using PathedMapT = std::unordered_map<ade::TensptrT,StringsT>;
29 void visit (ade::iLeaf* leaf)
override 40 void visit (ade::iFunctor* func)
override 48 ade::ArgsT children = func->get_children();
49 for (
auto& child : children)
51 child.get_tensor()->accept(*
this);
73 google::protobuf::RepeatedField<double>* coord,
74 const ade::CoordptrT& mapper);
76 void save_data (cortenn::Source& out, ade::iLeaf* in)
78 const ade::Shape& shape = in->shape();
79 char* data = (
char*) in->data();
80 size_t nelems = shape.n_elems();
81 size_t tcode = in->type_code();
82 out.set_shape(std::string(shape.begin(), shape.end()));
83 out.set_data(
saver_(data, nelems, tcode));
84 out.set_typecode(tcode);
93 #endif // PBM_SAVE_HPP void visit(ade::iLeaf *leaf) override
Implementation of iTraveler.
Definition: save.hpp:29
void save_coord(google::protobuf::RepeatedField< double > *coord, const ade::CoordptrT &mapper)
Definition: save.cpp:84
std::unordered_set< ade::iTensor * > visited_
Visited nodes.
Definition: save.hpp:66
void save(cortenn::Graph &out, PathedMapT labels=PathedMapT())
Marshal all equation graphs in roots vector to protobuf object.
Definition: save.cpp:13
ade::GraphStat stat
Internal traveler.
Definition: save.hpp:69
void save_data(cortenn::Source &out, ade::iLeaf *in)
Definition: save.hpp:76
std::list< ade::iLeaf * > leaves_
List of leaves visited (left to right)
Definition: save.hpp:60
std::unordered_map< ade::TensptrT, StringsT > PathedMapT
Map Tensptrs to a string path type.
Definition: save.hpp:21
std::function< std::string(const char *, size_t, size_t)> DataSaverT
Data serialization functor.
Definition: data.hpp:25
GraphSaver(DataSaverT saver)
Definition: save.hpp:26
std::list< ade::iFunctor * > funcs_
List of functions visited (by depth-first)
Definition: save.hpp:63
Graph serialization traveler.
Definition: save.hpp:24
DataSaverT saver_
Data serialization functor.
Definition: save.hpp:88
void visit(ade::iFunctor *func) override
Implementation of iTraveler.
Definition: save.hpp:40