cint5.13.96 & STL precompilation

Masaharu Goto (MXJ02154@nifty.ne.jp)
Sat, 17 Apr 1999 12:09:25 +0900


Dear ROOTers,

I'll send cint5.13.96 to CERN with improved STL support in this weekend.
Fons, please expose this version sometime in next week.
Because I've been so busy doing this work, I could not respond to some of
the bug-reports. Please give me time to catch-up.

# Improved STL dummy headers for precompilation
The implementation is still experimental. I appreciate your feedback.

STL dummy header files for precompilation is provided for following platforms
.
Linux2.0 egcs SGI STL implementation
HP-UX10.2 aCC RogueWave STL implementation for HP
WinNT/9x VC++5.0 P.J. Plauger STL implementation
WinNT/9x BC++5.0 RogueWave STL implementation for Borland

Supported containers:
vector<class T,class Allocator=allocator<T> >
list<class T,class Allocator=allocator<T> >
deque<class T,class Allocator=allocator<T> >
map<class Key,class T,class Compare=less<T>,class Allocator=allocator<T> >
string

Can do:
* Precompile source files including above STL containers
* Use above STL containers from the interpreter
* Some simple generic algorithms can be precompiled and/or interpreted

Improvements:
* Default template argument is treated properly.
* iterator_category(iterator) resolution is implemented
* Generic algorithm function without function object can be precompiled wi
th some modification to the dummy headers.

Limitations:
* Many of the generic algorithms does not work still
* Mismatch between interpreted and precompiled STL exists

How to set it up:
* Get cint5.13.96 source package when it is exposed, unpack and install
it as described in README.txt. In the installation process,
lib/dll_stl/setup script will be executed. Important files are
stl/* : STL header files for interpretation
lib/prec_stl/* : STL dummy header files for precompilation
lib/dll_stl/* : Setting up DLLs including some instantiated STL
container classes
demo/makecint/stl/* : Example for precompiling user instantiated STL
containers.

* This is not tested on ROOT yet. In order to do so, you need to
rebuild ROOT with new cint source and copy all files from following
directories.
$CINTSYSDIR/include -> $ROOTSYS/cint/include
$CINTSYSDIR/stl -> $ROOTSYS/cint/stl
$CINTSYSDIR/lib/prec_stl -> $ROOTSYS/cint/lib/prec_stl

# Other improvements
* namespace can be precompiled with bare makecint/cint. Still need some
work for doing so in ROOT. G__ClassInfo::Fullname() added.
* Many bug fixes

# Back-logs
* Several unresolved bug-reports
* Scott Snyder's cint update needs to be merged.
* Dictionary rewinding feature has to be improved for SEGV/BUSERR
* Testing precompiled STL containers on ROOT
* CINT "Can do & Can't do" documentation
Above work will cover most of the issues discussed in the Workshop.

Thank you
Masaharu Goto