23    static ROOT::ESTLType stl_type(
const std::string& class_name)  {
 
   26       std::vector<std::string> inside;
 
   27       int num = TClassEdit::GetSplit(class_name.c_str(),inside,nested);
 
   29          return (ROOT::ESTLType)TClassEdit::STLKind(inside[0]);
 
   34    static TEmulatedCollectionProxy* GenEmulation(
const char* class_name, Bool_t silent)  {
 
   38          std::string cl = class_name;
 
   39          if ( cl.find(
"stdext::hash_") != std::string::npos )
 
   40             cl.replace(3,10,
"::");
 
   41          if ( cl.find(
"__gnu_cxx::hash_") != std::string::npos )
 
   42             cl.replace(0,16,
"std::");
 
   43          TEmulatedCollectionProxy * result = 0;
 
   44          switch ( stl_type(cl) )  {
 
   48             case ROOT::kSTLmultimap:
 
   49                result = 
new TEmulatedMapProxy(class_name,silent);
 
   52                result = 
new TEmulatedCollectionProxy(class_name,silent);
 
   54          if ( result->IsValid() ) {
 
   62 TVirtualCollectionProxy*
 
   63 TCollectionProxyFactory::GenEmulatedProxy(
const char* class_name, Bool_t silent)
 
   67    return GenEmulation(class_name, silent);
 
   71 TCollectionProxyFactory::GenEmulatedClassStreamer(
const char* class_name, Bool_t silent)
 
   75    TCollectionClassStreamer* s = 
new TCollectionClassStreamer();
 
   76    s->AdoptStreamer(GenEmulation(class_name, silent));
 
   81 TCollectionProxyFactory::GenEmulatedMemberStreamer(
const char* class_name, Bool_t silent)
 
   84    TCollectionMemberStreamer* s = 
new TCollectionMemberStreamer();
 
   85    s->AdoptStreamer(GenEmulation(class_name, silent));
 
   89 TCollectionProxyFactory::Proxy_t*
 
   90 TCollectionProxyFactory::GenExplicitProxy( const ::ROOT::TCollectionProxyInfo &info, TClass *cl)
 
   93    return new TGenCollectionProxy(info,cl);
 
   96 TGenCollectionStreamer*
 
   97 TCollectionProxyFactory::GenExplicitStreamer( const ::ROOT::TCollectionProxyInfo &info, TClass *cl )
 
  100    TGenCollectionStreamer* ptr = 
new TGenCollectionStreamer(info,cl);
 
  105 TCollectionProxyFactory::GenExplicitClassStreamer( const ::ROOT::TCollectionProxyInfo &info, TClass *cl )
 
  108    TCollectionClassStreamer* s = 
new TCollectionClassStreamer();
 
  109    s->AdoptStreamer(GenExplicitStreamer(info,cl));
 
  114 TCollectionProxyFactory::GenExplicitMemberStreamer( const ::ROOT::TCollectionProxyInfo &info, TClass *cl)
 
  117    TCollectionMemberStreamer* s = 
new TCollectionMemberStreamer();
 
  118    s->AdoptStreamer(GenExplicitStreamer(info,cl));
 
  122 void TCollectionStreamer::InvalidProxyError()   {
 
  124    Fatal(
"TCollectionStreamer>",
"No proxy available. Data streaming impossible.");
 
  127 TCollectionStreamer::TCollectionStreamer() : fStreamer(0)
 
  132 TCollectionStreamer::TCollectionStreamer(
const TCollectionStreamer& c) : fStreamer(0)
 
  136       fStreamer = 
dynamic_cast<TGenCollectionProxy*
>(c.fStreamer->Generate());
 
  137       R__ASSERT(fStreamer != 0);
 
  143 TCollectionStreamer::~TCollectionStreamer()
 
  151 void TCollectionStreamer::AdoptStreamer(TGenCollectionProxy* streamer)
 
  157    fStreamer = streamer;
 
  160 void TCollectionStreamer::Streamer(TBuffer &buff, 
void *pObj, 
int , TClass* onFileClass )
 
  164       TVirtualCollectionProxy::TPushPop env(fStreamer, pObj);
 
  165       fStreamer->SetOnFileClass( onFileClass );
 
  166       fStreamer->Streamer(buff);