RE:Extension to class G__ClassInfo?

From: Masaharu Goto (MXJ02154@nifty.ne.jp)
Date: Sat Sep 19 1998 - 01:36:00 MEST


Stefan,

>I saw in the code for rootcint that it uses the cint class G__ClassInfo to
>obtain information about the class it is writing code for. I think the
>cleanest way to add template support into rootcint would be to add three
>new member functions to G__ClassInfo:

>// Return true if it is a template class, false otherwise
>long G__ClassInfo::IsTemplate() 
>The test could perhaps be simply based on the classname, e.g. if it
>contains a matching pair of "<" and ">". 
>// Return the base of the class name (for bla<T> return "bla"):
>const char* G__ClassInfo::TmplName()

This should be easy. 

>// Return the template argument (for bla<T> return "T"):
>const char* G__ClassInfo::TmplArg()

How about you have multiple template arguments?  bla<T,E>. Should TmplArg
return "T,E" or do you want to iterate to get T and E separately?

>The existence of these would allow to handle the generation of code for
>template classes in rootcint in a clean way. 
>Do you think that this could be provided? 

Yes, I think so. And there are alternatives.

 1) Add above feature in G__ClassInfo
 2) Use adapter class to add above feature. In this case you can extend the
   capability by yourself. 

     class G__TmpltClassInfo : public G__ClassInfo {
      public:
       int IsTemplate();
       char* TmplName();
       char* TmplArg();
     };

In above senario, the only information you need is G__ClassInfo::Name(). All
of the other information can be created from it. 

Tell me your preference.

Masaharu Goto



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