[ROOT-5730] STLttypes are defined with inconsistent enums in TClassEdit and TStreamerElement,resulting in incorrect include statement generation when using MakeProject Created: 19/Nov/13 Updated: 20/Nov/13 Resolved: 20/Nov/13
|Component/s:||Core Libraries, I/O|
|Reporter:||Alex Finch||Assignee:||Philippe Canal|
In TClassEdit and TDictionary there are enums which define Multimap=5 and Set=6. In TStreamerElement these are reversed. The result of this is that when saving a set<> object to a tree the stltype is incorrectly set. This results in MakeProject generating a #inclde multimap line instead of #include set. ( Incidentally, for a multimap stl object the correct include would anyway be #include map). I have fixed it by making all the enums consistent. I did this by reversing the definitions of set and multimap in TStreamerElement.h, but I don't know if that might have other consequences. This appears to be new in patch 10 of v 5.34 where the code in TStreamerInfo::Build() has been modified to use a new constructor in TStreamerSTL which uses a TVirtualCollectionProxy.
|Comment by Philippe Canal [ 20/Nov/13 ]|
Thanks for reporting this issues. It seems to have affected only the way the output of MakeProject was written.
The problem itself has been fixed in the v5.34 patch branch and in the master both by making sure the same number was used in all cases and making sure the number used by existing file was correctly set to the 'new' number if needed.