Hi Axel,
I see a problem with the code generation in rootcint in case of an STL map
where both arguments are objects. In my all my tests, I had always
a pointer to an object for the first argument.
eg map<TString*,TString*> or map<TString*,TString> are Ok
I will fix the problem in rootcint.
Thanks for reporting this problem.
Masa seems to be away for the time being.
Rene Brun
Axel Naumann wrote:
>
> 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