RE:cint and RogueWave

From: Masaharu Goto (MXJ02154@nifty.ne.jp)
Date: Wed Aug 26 1998 - 14:37:00 MEST


Carsten,

>you can phrase it like this 
>RogueWave consists of many templated classes but is not completely
>template based:
>I think at least 1/3 is templated. If you would like to have a look at
>the sources please tell me.

Template based library is more difficult to precompile because cint DLL can 
only include instantiated template class, not template itself.

Looking at number of header files, it is clearly a major work.

>changing to options +P and -p in the rootcint call did not work either.
>
>In a telephone call Rene Brun already explained that this indeed is a problem
>of cint with preprocessor statements and nested include files (for Rogue Wave
 
>it is defs.h ( included from timer.h ) containing the STARTWRAP ENDWRAP macro
 
>which simply defines an extern "C" statement.

Let me first clarify that +P -p option and template are completely different
matters. 

And now I want to discuss how to preprocess only for the RogueWave headers.
There are a couple of ways to do this.

 1) use +P -P suboption. 
   Suppose you have a.h  b.h  c.h  d.h,   doing
     $  cint a.h +P b.h c.h -P d.h 
   causes only b.h and c.h to go through formal preprocessor.
   I'm not sure if rootcint supports the same.

 2) Use #pragma preprocess
   Using #pragma preprocess statement in header file , you can selectively
   use preprocessor.  
     
     #ifdef __CINT__
     #pragma preprocess RW/
     #endif

     #include "RW/defs.h"
     #include "RW/aaa.h"

   With '#pragma preprocess [prefix]' command, header file name start with
   [prefix] are selectively go through preprocessor.

You already reported +P did not work.  I'm afraid the problems do not 
disappear only with the preprocessor.

Masaharu Goto



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