#ifndef ROOT_TCollectionProxyFactory
#define ROOT_TCollectionProxyFactory
#include <typeinfo>
#include <vector>
#ifndef ROOT_TCollectionProxyInfo
#include "TCollectionProxyInfo.h"
#endif
#ifndef ROOT_TClassStreamer
#include "TClassStreamer.h"
#endif
#ifndef ROOT_TMemberStreamer
#include "TMemberStreamer.h"
#endif
class TBuffer;
class TGenCollectionProxy;
class TGenCollectionStreamer;
class TVirtualCollectionProxy;
class TEmulatedCollectionProxy;
#if defined(_WIN32)
   #if _MSC_VER<1300
      #define TYPENAME
      #define R__VCXX6
   #else
      #define TYPENAME typename
   #endif
#else
   #define TYPENAME typename
#endif
class TCollectionProxyFactory  {
public:
   typedef TVirtualCollectionProxy Proxy_t;
#ifdef R__HPUX
   typedef const type_info&      Info_t;
#else
   typedef const std::type_info& Info_t;
#endif
   
   static TVirtualCollectionProxy* GenEmulatedProxy(const char* class_name);
   
   static TClassStreamer* GenEmulatedClassStreamer(const char* class_name);
   
   static TMemberStreamer* GenEmulatedMemberStreamer(const char* class_name);
   
   static Proxy_t* GenExplicitProxy( const ::ROOT::TCollectionProxyInfo &info, TClass *cl );
   
   template <class T> static Proxy_t* GenProxy(const T &arg, TClass *cl)  {
      return GenExplicitProxy( ::ROOT::TCollectionProxyInfo::Get(arg), cl );
   }
   
   static TGenCollectionStreamer*
      GenExplicitStreamer( const ::ROOT::TCollectionProxyInfo &info, TClass *cl );
   
   static TClassStreamer*
      GenExplicitClassStreamer( const ::ROOT::TCollectionProxyInfo &info, TClass *cl );
   
   template <class T> static TClassStreamer* GenClassStreamer(const T &arg, TClass *cl)  {
      return GenExplicitClassStreamer(::ROOT::TCollectionProxyInfo::Get(arg), cl);
   }
   
   static TMemberStreamer*
      GenExplicitMemberStreamer(const ::ROOT::TCollectionProxyInfo &info, TClass *cl);
   
   template <class T> static TMemberStreamer* GenMemberStreamer(const T &arg, TClass *cl)  {
      return GenExplicitMemberStreamer(::ROOT::TCollectionProxyInfo::Get(arg), cl);
   }
};
class TCollectionStreamer   {
private:
   TCollectionStreamer& operator=(const TCollectionStreamer&);   
protected:
   TGenCollectionProxy* fStreamer;   
   
   void InvalidProxyError();
public:
   
   TCollectionStreamer();
   
   TCollectionStreamer(const TCollectionStreamer& c);
   
   virtual ~TCollectionStreamer();
   
   void AdoptStreamer(TGenCollectionProxy* streamer);
   
   void Streamer(TBuffer &refBuffer, void *pObject, int siz);
};
class TCollectionClassStreamer : public TClassStreamer, public TCollectionStreamer {
public:
   
   TCollectionClassStreamer() : TClassStreamer(0)     {                        }
   
   TCollectionClassStreamer(const TCollectionClassStreamer& c)
      : TClassStreamer(c), TCollectionStreamer(c)      {                        }
   
   virtual ~TCollectionClassStreamer()                {                        }
   
   virtual void operator()(TBuffer &buff, void *pObj) { Streamer(buff,pObj,0); }
   
   virtual TClassStreamer *Generate() {
      return new TCollectionClassStreamer(*this);
   }
   TGenCollectionProxy *GetXYZ() { return TCollectionStreamer::fStreamer; }
};
class TCollectionMemberStreamer : public TMemberStreamer, public TCollectionStreamer {
public:
   
   TCollectionMemberStreamer() : TMemberStreamer(0) { }
   
   TCollectionMemberStreamer(const TCollectionMemberStreamer& c)
      : TMemberStreamer(c), TCollectionStreamer(c)   { }
   
   virtual ~TCollectionMemberStreamer()             { }
   
   virtual void operator()(TBuffer &buff,void *pObj,Int_t siz=0)
   { Streamer(buff, pObj, siz);                       }
};
#endif
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.