problem after recent upgrade to CINT 60010024

From: Constantin Loizides <loizides_at_MIT.EDU>
Date: Sun, 23 Sep 2007 20:01:09 +0200


Hi,

I just updated ROOT head and therefore got the CINT changes from middle of September 60010024. However, compilations breaks (without modification of my code that worked with earlier head version) at

loizides_at_mitlapi:/opt/phobos/PhatII$ make g++ -g -I. --ansi -Wall -Wno-long-long -DPHAT2 -Df2cFortran -D_GNU_SOURCE -Iinclude -I/opt/root/root_head/include -o

dat/G__dat.o -c dat/G__dat.cxx
dat/G__dat.cxx: In function ‘int G__G__dat_108_0_15(G__value*, const char*, G__param*, int)’:
dat/G__dat.cxx:11494: error: ‘TPhKeyPtr<TPhTopology>’ is not a template
dat/G__dat.cxx: In function ‘int G__G__dat_866_0_15(G__value*, const char*, G__param*, int)’:
dat/G__dat.cxx:33991: error: ‘TPhKeyPtr<TPhTopology>’ is not a template
dat/G__dat.cxx: In function ‘int G__G__dat_868_0_15(G__value*, const char*, G__param*, int)’:
dat/G__dat.cxx:34253: error: ‘TPhKeyPtr<TPhTopology>’ is not a template
dat/G__dat.cxx: In function ‘int G__G__dat_870_0_15(G__value*, const char*, G__param*, int)’:
dat/G__dat.cxx:34515: error: ‘TPhKeyPtr<TPhTopology>’ is not a template
dat/G__dat.cxx: In function ‘int G__G__dat_889_0_15(G__value*, const char*, G__param*, int)’:
dat/G__dat.cxx:37864: error: ‘TPhKeyPtr<TPhTopology>’ is not a template

Looking at the generated code it is easy to spot the "mistake" in the generated code (however I could not really pin down where in the source of cint it is coming from)

For example code around 11494 reads:

static int G__G__dat_108_0_15(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) {

       {
          const TPhKeyPtr<TPhTopology>* pobj;
          const TPhKeyPtr<TPhTopology> xobj = ((const TPhKeyPtr<TPhTopology>*) G__getstructoffset())->operator 
TPhKeyPtr<TPhTopology><TPhTopology>(); // this is line 11494
          pobj = new TPhKeyPtr<TPhTopology>(xobj);
          result7->obj.i = (long) ((void*) pobj);
          result7->ref = result7->obj.i;
          G__store_tempobject(*result7);
       }

    return(1 || funcname || hash || result7 || libp) ; }

You can see that "PhKeyPtr<TPhTopology><TPhTopology>()" should have been only "PhKeyPtr<TPhTopology>()". It seems to me this needs to be fixed in cint.

Thanks
Constantin

-- 
Phone: +41-22-76 74875 (CERN)
Skype: loizides / AOL: ConLoi
Received on Sun Sep 23 2007 - 20:03:47 CEST

This archive was generated by hypermail 2.2.0 : Thu Oct 25 2007 - 23:50:02 CEST