STL dummy header, cint5.13.95

From: Masaharu Goto (MXJ02154@nifty.ne.jp)
Date: Sun Apr 11 1999 - 02:22:50 MEST


Dear Rooters,

As discussed in the ROOT workshop, I've been working on STL dummy header files
for precompiling STL container classes. As a trial, I implemented a very simpl
e
interface to the STL containers and somehow it works on Linux2.0-egcs and 
Windows95-VC++5.0.  I'll copy cint5.13.95 with this feature to CERN. This
version of CINT will be exposed in a few days.  It can take a little while to
have this integrated into ROOT, though.

The example is in $CINTSYSDIR/demo/makecint/stl directory. You can do
following.

// sample.h
#include <vector>
#include <list>
#include <string>
#include <map>
#include <deque>
using namespace std;
class A {
 public:
  vector<float> x;
  list<float> y;
  string z;
  deque<float> b;
  map<string,float> a;
};
#ifdef __MAKECINT__
#pragma link C++ nestedtypedefs;
#pragma link C++ nestedclasses;
#endif

----------------
$ makecint -mk makefile -dl sample.dll -H sample.h -cint -M0x10
$ make -f makefile
$ cint sample.dll
cint> { vector<float> a;  map<string,float> b;}
cint> { a.push_back(1.23);  b["PI"]=3.14; }


This time, STL dummy header has following limitations,

1) No default template arguments, Allocator and Compare
  STL containers have Allocator and Compare classes as default arguments.
   template<class T,class Allocator=allocator<T> >  class vector {  ... };
  For simplicity, dummy header does not have those , for the time being.
   template<class T> class vector { ... };
  I guess, in most of the case this is not a problem for normal users.
  You can use the vector as 
   vector<int>  a;
  but not as 
   vector<int,allocator<int> > a;

2) No iterator_tag resolution for generic algorithm
  You can not use some of the STL algorithms which uses iterater_category(firs
t)  distinction. There are some problems and I could not make an interface for
  iterator_category() function template.

3) The implementation is not stable. Current implementation only allow some
  of the only STL usage for vector, list, deque, map and string containers.
  You may see warning messages or errors in many platforms. 

Thank you
Masaharu Goto



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:31 MET