8 #ifndef PACKER_UTIL_HPP_
9 #define PACKER_UTIL_HPP_
11 #include "prp_all_zero.hpp"
12 #include "Packer_Unpacker/Pack_selector.hpp"
13 #include "memory/HeapMemory.hpp"
14 #include "Vector/map_vector_grow_p.hpp"
15 #include "Vector/vect_isel.hpp"
16 #include "memory_ly/memory_conf.hpp"
17 #include "util/Pack_stat.hpp"
19 template<typename T, typename Mem, int pack_type=Pack_selector<T>::value >
class Packer;
20 template<typename T, typename Mem, int pack_type=Pack_selector<T>::value >
class Unpacker;
22 #include "Vector/vector_def.hpp"
30 template<
typename encap,
typename Mem>
53 typedef typename boost::mpl::at<typename encap::T_type,T>::type obj_type;
61 template<
typename encap,
typename Mem,
int ... prp>
73 typedef typename prp_all_zero<encap,
sizeof...(prp) == 0,prp...>::type b_prp;
78 boost::mpl::for_each_ref<b_prp>(functor);
83 template<
typename encap,
typename Mem>
96 :mem(mem), obj(obj), sts(sts)
104 typedef typename boost::mpl::at<typename encap::type,T>::type obj_type;
111 template<
typename encap,
typename Mem,
int ... prp>
117 typedef typename prp_all_zero<
typename encap::T_type,
sizeof...(prp) == 0,prp...>::type b_prp;
122 boost::mpl::for_each_ref<b_prp>(functor);
128 template<
typename encap,
typename Mem,
int ... prp>
136 :mem(mem), obj(obj), ps(ps)
144 typedef typename boost::mpl::at<typename encap::type,T>::type obj_type;
151 template<
typename encap,
typename Mem,
int ... prp>
157 typedef typename prp_all_zero<encap,
sizeof...(prp) == 0,prp...>::type b_prp;
162 boost::mpl::for_each_ref<b_prp>(functor);
173 template<
typename obj_type,
typename Mem>
190 typedef typename boost::mpl::at<typename obj_type::type,T>::type obj_t;
199 template<
typename obj_type,
typename Mem,
int ... prp>
211 typedef typename prp_all_zero<obj_type,
sizeof...(prp) == 0,prp...>::type b_prp;
216 boost::mpl::for_each_ref<b_prp>(functor);
221 template<
typename obj_type,
typename Mem>
225 const obj_type & obj;
229 :mem(mem), obj(obj), sts(sts)
237 typedef typename boost::mpl::at<typename obj_type::type,T>::type obj_t;
245 template<
typename obj_type,
typename Mem,
int ... prp>
258 typedef typename prp_all_zero<obj_type,
sizeof...(prp) == 0,prp...>::type b_prp;
263 boost::mpl::for_each_ref<b_prp>(functor);
269 template<
typename obj_type,
typename Mem>
289 :mem(mem), obj(obj), ps(ps)
297 typedef typename boost::mpl::at<typename obj_type::type,T>::type obj_t;
305 template<
typename obj_type,
typename Mem,
int ... prp>
318 typedef typename prp_all_zero<obj_type,
sizeof...(prp) == 0,prp...>::type b_prp;
323 boost::mpl::for_each_ref<b_prp>(functor);
void operator()(T &t)
It calls the packer for each property.
Unpack_stat & ps
statistic about packing
void operator()(T &t)
It calls the unpacker for each property.
call_unpack_agg_functor(ExtPreAlloc< Mem > &mem, obj_type &obj, Unpack_stat &ps)
constructor
const encap & obj
Object to serialize.
size_t & req
offset of the packed memory
ExtPreAlloc< Mem > & mem
Memory that pack/serialize the object.
void operator()(T &t)
It calls the pack request for each property.
encap & obj
encap object to pack (serialize)
void operator()(T &t)
It calls the pack request for each property.
static void call_pack(const obj_type &obj, ExtPreAlloc< Mem > &mem, Pack_stat &sts)
Call the packer.
static size_t packRequest(const T &obj, size_t &req)
Error, no implementation.
Pack_stat & sts
serialization status
void operator()(T &t)
It calls the unpacker for each property.
obj_type & obj
object to pack
static void unpack(ExtPreAlloc< Mem >, T &obj)
Error, no implementation.
void operator()(T &t)
It calls the packer for each property.
const obj_type & obj
object to pack
static void call_unpack(obj_type &&obj, ExtPreAlloc< Mem > &mem, Unpack_stat &ps)
constructor
Calls a packer in nested way.
Structure to convert a variadic template into boost::mpl::vector.
static void call_packRequest(const obj_type &obj, size_t &req)
Pack the object.
Calls an unpacker in nested way.
static void pack(ExtPreAlloc< Mem >, const T &obj)
Error, no implementation.
ExtPreAlloc< Mem > & mem
Memory where to pack.
static void call_packRequest(encap &obj, size_t &req)
pack/serialize