15 #include "TMemberStreamer.h"
34 template <
class T,
class ALLOC>
35 void vectorMove (std::vector<T, ALLOC>&
src, std::vector<T, ALLOC>& dst)
39 template <
class T,
class U,
class ALLOC>
40 void vectorMove (std::vector<T, ALLOC>&
src, std::vector<U, ALLOC>& dst)
42 dst.assign (
src.begin(),
src.end());
49 template <
class T,
class U=T,
class ALLOC=std::allocator<T> >
51 :
public TMemberStreamer
61 const char* allocName =
nullptr);
85 template <
class T,
class U,
class ALLOC>
87 const char* allocName )
89 std::string vname =
"vector<";
91 if (allocName !=
nullptr) {
95 if (vname[vname.size()-1] ==
'>')
98 m_cl = gROOT->GetClass (vname.c_str());
108 template <
class T,
class U,
class ALLOC>
114 assert (
b.IsReading());
121 std::vector<T, ALLOC>
tmp;
126 m_cl->Streamer (&
tmp,
b);
138 #define CONVERTER(SRC, DST) \
140 TConverterRegistry::Instance()->AddStreamerConverter \
141 ("vector<" #SRC ">", \
142 "SG::PackedContainer<" #DST ",allocator<" #DST "> >", \
143 new PackedContainerConverter<SRC, DST> ( #SRC)); \
146 #define CONVERTER1(T) CONVERTER(T,T)
148 #define CONVERTER2(T, ALLOC) \
150 TConverterRegistry::Instance()->AddStreamerConverter \
151 ("vector<" #T "," #ALLOC "<" #T "> >", \
152 "SG::PackedContainer<" #T "," #ALLOC "<" #T "> >", \
153 new PackedContainerConverter<T, T, ALLOC<T> > ( #T, #ALLOC "<" #T ">" )); \
176 CONVERTER1(std::vector<std::vector<unsigned char> >);
178 CONVERTER1(std::vector<std::vector<unsigned short> >);
180 CONVERTER1(std::vector<std::vector<unsigned int> >);
182 CONVERTER1(std::vector<std::vector<double> >);