Recent changes in rootcint.cxx

From: Constantin Loizides <loizides_at_mit.edu>
Date: Wed, 31 Jan 2007 13:36:11 -0500


HI,

recently none of my projects compiles anymore with ROOT head, nothing was changed than updating ROOT to the latest cvs (as of now).

The compilation fails in the rootcint generated code segments, like in

>g++ -g -I. --ansi -Wall -Wno-long-long -Wno-strict-aliasing -Df2cFortran -D_GNU_SOURCE -Iinclude
>-I/opt/root/root_head/include -DHAVE_CERNLIBS -o genherwig/bld/G__genherwig.o -c genherwig/G__genherwig.cxx
>./genherwig/THIHerwigBase.h:27: error: ‘template<class T> struct THIHerwigBase::IE_t’ is protected
>genherwig/G__genherwig.h:55: error: within this context

where

class THIHerwigBase : public THIGenerator { protected:

    template<typename T = Int_t>
    struct IE_t { /*IndexElement*/

       public:
       UInt_t fIndex; //index in common block
       T      fVal;   //corresponding value
       IE_t(UInt_t i=0, T v=0) : fIndex(i),fVal(v) {}
       virtual ~IE_t() {}
       ClassDefT(IE_t,1) // Generic parameter given by an index (in common block)
   };
// and so on
}

After a bit of research I figured out that in http://root.cern.ch/viewcvs/utils/src/rootcint.cxx.diff?r1=1.251&r2=1.252&sortby=date a change was performed to not brutally overwrite protect and private with public, but rather to keep the access pattern assigned by the programmer. This of course is great, but seems not work:

The login message says:
"Remove the #define private public since it is no longer used (we

   really on the Shadow classes to replace this technique)."

What are those Shadow classes? Am I supposed to write some code to support the new feature?

Please let me know asap, since lots of code fails to compile and I need to understand the change in HEAD before I can adapt our projects.

Thanks,
Constantin

-- 
Tel: +1-617-8301823 (SkypeIn)
Skype: loizides
AOL: ConLoi / ICQ: 114824520
Received on Wed Jan 31 2007 - 19:38:56 CET

This archive was generated by hypermail 2.2.0 : Wed Jan 31 2007 - 23:50:01 CET