32 pack(targ,desc,valid);
36 pack(targ,desc,valid);
53 arg=
static_cast<T*
>(targ.alloced.back().data());
73 template <
class T>
struct Alloc;
77 void operator()(
pack_t& buf, T*& x) {
79 x=
static_cast<T*
>(buf.alloced.back().data());
84 inline void pack_graph(
pack_t& buf, T& arg)
86 static std::map<T,int> graph_map;
87 static std::vector<T*> restart;
88 static unsigned recur_level=0;
96 restart.push_back(&arg);
98 pack(buf,
string(),nought);
99 else if (graph_map.count(arg)==0)
101 int ID=graph_map.size()+1;
103 pack(buf,
string(),ID);
104 pack(buf,
string(),*arg);
107 pack(buf,
string(),graph_map[arg]);
112 while (restart.size())
114 T& arg=*restart.back();
123 void unpack_graph(
pack_t& buf, T& arg)
125 static std::map<int,T> graph_map;
126 static std::vector<T*> restart;
127 static unsigned recur_level=0;
136 restart.push_back(&arg);
139 unpack(buf,
string(),myid);
142 else if (graph_map.count(myid))
148 unpack(buf,
string(),*arg);
155 while (restart.size())
157 T& arg=*restart.back();
159 unpack_graph(buf,arg);
171 {pack_graph(targ,arg);}
177 {unpack_graph(targ,arg);}
unsigned myid
main window of application
Definition: pack_base.h:100
Definition: classdesc.h:631
void pack(pack_t &targ, const string &desc, is_treenode dum, const T *const &arg)
serialise a tree (or DAG)
Definition: pack_graph.h:28
Definition: classdesc.h:630
Contains definitions related to classdesc functionality.
Definition: arrays.h:2514
Definition: pack_base.h:124
unsigned recur_max
recursion limit for pack_graph
Definition: pack_base.h:150
Definition: pack_graph.h:73
void unpack(unpack_t &targ, const string &desc, is_treenode dum, T *&arg)
unserialise a tree.
Definition: pack_graph.h:44