11 #ifndef ROOT_TGenCollectionStreamer
12 #define ROOT_TGenCollectionStreamer
17 class TGenCollectionStreamer :
public TGenCollectionProxy {
20 void ReadMapHelper(StreamHelper *i, Value *v, Bool_t vsn3, TBuffer &b);
21 void ReadMap(
int nElements, TBuffer &b,
const TClass *onfileClass);
22 void ReadPairFromMap(
int nElements, TBuffer &b);
23 void ReadObjects(
int nElements, TBuffer &b,
const TClass *onfileClass);
24 void ReadPrimitives(
int nElements, TBuffer &b,
const TClass *onfileClass);
25 void WriteMap(
int nElements, TBuffer &b);
26 void WriteObjects(
int nElements, TBuffer &b);
27 void WritePrimitives(
int nElements, TBuffer &b);
32 typedef void (TGenCollectionStreamer::*ReadBuffer_t)(TBuffer &b,
void *obj,
const TClass *onFileClass);
33 ReadBuffer_t fReadBufferFunc;
35 template <
typename From,
typename To>
void ConvertBufferVectorPrimitives(TBuffer &b,
void *obj, Int_t nElements);
36 template <
typename To>
void ConvertBufferVectorPrimitivesFloat16(TBuffer &b,
void *obj, Int_t nElements);
37 template <
typename To>
void ConvertBufferVectorPrimitivesDouble32(TBuffer &b,
void *obj, Int_t nElements);
38 template <
typename To>
void DispatchConvertBufferVectorPrimitives(TBuffer &b,
void *obj, Int_t nElements,
const TVirtualCollectionProxy *onfileProxy);
39 template <
typename basictype>
void ReadBufferVectorPrimitives(TBuffer &b,
void *obj,
const TClass *onFileClass);
40 void ReadBufferVectorPrimitivesFloat16(TBuffer &b,
void *obj,
const TClass *onFileClass);
41 void ReadBufferVectorPrimitivesDouble32(TBuffer &b,
void *obj,
const TClass *onFileClass);
42 void ReadBufferDefault(TBuffer &b,
void *obj,
const TClass *onFileClass);
43 void ReadBufferGeneric(TBuffer &b,
void *obj,
const TClass *onFileClass);
46 TGenCollectionStreamer &operator=(
const TGenCollectionStreamer&);
50 virtual TVirtualCollectionProxy* Generate()
const;
53 TGenCollectionStreamer(
const TGenCollectionStreamer& copy);
56 TGenCollectionStreamer(Info_t typ,
size_t iter_size);
57 TGenCollectionStreamer(
const ROOT::TCollectionProxyInfo &info, TClass *cl);
60 virtual ~TGenCollectionStreamer();
63 virtual void Streamer(TBuffer &refBuffer);
66 virtual void StreamerAsMap(TBuffer &refBuffer);
69 virtual void Streamer(TBuffer &buff,
void *pObj,
int siz) {
70 TGenCollectionProxy::Streamer(buff, pObj, siz);
74 virtual void ReadBuffer(TBuffer &b,
void *obj,
const TClass *onfileClass);
77 virtual void ReadBuffer(TBuffer &b,
void *obj);
81 struct AnyCollectionStreamer :
public TGenCollectionStreamer {
82 AnyCollectionStreamer()
83 : TGenCollectionStreamer(typeid(T::Cont_t),sizeof(T::Iter_t)) {
84 fValDiff =
sizeof(T::Value_t);
85 fValOffset = T::value_offset();
87 fFirst.call = T::first;
89 fClear.call = T::clear;
91 fCollect = T::collect;
92 fConstruct = T::construct;
93 fDestruct = T::destruct;
97 virtual ~AnyCollectionStreamer() { }
101 typedef TGenCollectionStreamer TGenMapStreamer;