> Is there any trick that one could think of to still be able to read > these files > while using recent versions of root/rootcint? Or perhaps my diagnosis is > totally wrong? A priori, just ignoring the warning should do the trick. Besides the warning do you have any other reason to believe that the file are not read properly? In the current implementation, the streaming and un-streaming of STL container does not go through the TClass or the dictionary for that STL containers and I thought that we removed that warning for those cases already (but it looks like we didn't :(). Could please send me (or more exactly tell me where to find) the file you produced with 3.03.09. Thanks, Philippe. ---------- Forwarded message ---------- Date: Sun, 11 May 2003 17:17:09 +0200 From: Aart Heijboer <aart.heijboer@nikhef.nl> To: roottalk@pcroot.cern.ch Subject: [ROOT] Problem reading files with __malloc_alloc_template<0> i.s.o. allocator<X> Dear ROOTers, I am trying to read some old files, containing classes with STL containers, on a new system with a new root version (details below). It seems that there are problems with the dictionary information which have to do with the allocators used in STL containers. When opening a file (written with v3.03.09), warnings are given like: Warning in <TClass::TClass>: no dictionary for class vector<SPE_Hit,__malloc_alloc_template<0> > is available (where SPE_Hit is some class of mine) I have understood that recently the dictionary generator (and/or gcc) has changed to use 'allocator<X>' as the allocator for STL containers of X, in stead of the previously used '__malloc_alloc_template<0>'. This , I think, explains why no information for vector<SPE_HIT,__malloc_alloc...etc> is availble in my newly compiled library with dictionary information. Is there any trick that one could think of to still be able to read these files while using recent versions of root/rootcint? Or perhaps my diagnosis is totally wrong? [one thing I tried is to use everywhere __malloc_alloc_template<0> in the class definitions... that works, but it breaks a lot of other codes, since these codes use the type vector<X> (which defaults to vector<X, allocator<X>> now) and this cannot be converted to/from vector<X, __malloc_alloc_template<0> >.] Any help would be greatly appreciated, Thanks, Aart. files written with redhat 6.2 gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release) ROOT version 3.03/09 trying to read with gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-113) ROOT Version 3.05/05 -- ::Aart Heijboer, ::NIKHEF, Nat. Inst. for Nuclear and High Energy Physics ::Phone: +31 20 592 2073 ::aart.heijboer@nikhef.nl
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:11 MET