[ROOT] Rootcint: std::map Streamer generation problem

From: Axel Naumann (a.naumann@worldnet.att.net)
Date: Fri Apr 20 2001 - 16:58:24 MEST


Hi,

I've looked around in the bug list, but couldn't find any hint on this. As
far as I know cint now supports std::map<,> streamer generation. But it
doesn't work for me:

---
class TMapTest: public TObject{

	std::map<TString, TString> _mapStrStr;

	ClassDef(TMapTest,1)
};
---

added to linkdef.h with "TMapTest+", generates the following streamer:

---
void R__TMapTest__mapStrStr(TBuffer &R__b, void *p, int)
{
   map<TString,TString> &_mapStrStr = *(map<TString,TString> *)p;
   if (R__b.IsReading()) {
      {
         _mapStrStr.clear();
         int R__i, R__n;
         R__b >> R__n;
         for (R__i = 0; R__i < R__n; R__i++) {
            TString R__t;
            R__t.Streamer(R__b);
            _mapStrStr.insert(make_pair(R__t,R__t2));
         }
      }
   } else {
      {
         R__b << _mapStrStr.size();
         map<TString,TString>::iterator R__k;
         for (R__k = _mapStrStr.begin(); R__k != _mapStrStr.end(); ++R__k) {
            (*R__k).Streamer(R__b);
         }
      }
   }
}
---

Obviously there's two errors, one in the IsReading block (R__t2 is never
declared or streamed), one in the !IsReading block (can't stream a
std::pair). Does anybody have any hints?
Regards, Axel.

PS: When will Masa be back?



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:43 MET