(no subject)

From: George Heintzelman (gah@bnl.gov)
Date: Thu May 11 2000 - 19:38:28 MEST


Masaharu wrote:

>Thank you for sending me the request. I implemented following pragma in
>cint5.14.38.

>  #pragma link [C|C++|off] function [scopename]::[funcname]([argtypes]);

>You can specify scope with '#pragma link -- function'. Other things are
>same as before. 

Is there any chance of using the same syntax for supporting (to some 
level) template member functions? I would want template members to be 
off by default (unless CINT found one that it knows has been 
instantiated anyway, perhaps), but where you could specify an explicit 
link to a template member. Smart pointers in particular this would be 
handy.

#pragma link C++ function SmartPointer<X>::SmartPointer<X>
(SmartPointer<Y>);

for example is a very common idiom for smart pointer classes, so that 
you can implicitly convert smart pointers to Derived into smart 
pointers to Base. Of course, you can't specify all the possible 
conversions, but it may well be possible to specify enough of a subset 
to do the task you need to do in interpreted code.

Being able to turn off particular instantiations of certain functions 
is also excellent and well appreciated -- we've already run into 
trouble with this with certain template classes, and will make use of 
this as soon as we get the version of CINT that implements it in the 
version of ROOT we use.

BTW -- perhaps this should be a different message, but -- is there a 
package/script that would allow someone with a version of ROOT to 
upgrade just the version of CINT it is running (obviously, one would 
have to recompile)? It seems that the released versions of ROOT are 
often somewhat behind Masa's current version, and it would be nice to 
use, say, version 2.23 of ROOT with cint5.14.38; I know I would use 
this functionality if it were available.

George Heintzelman
gah@bnl.gov



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:25 MET