Hi Fons,
Perfect idea, but because of my ROOT/CINT ignorance and lack
of time I can't volunteer :(.
Cheers,
Nick.
Fons Rademakers wrote:
>
> Hi George,
>
> much better would be to make a stand alone program "rootdoc" that
> works like "rootcint", in which case you would not need any special
> macros at all. The ClassDef macros are only needed to have access
> to the cint rtti from compiled code, but in rootdoc all the info
> can be directly obtained from cint's memory.
>
> Any volunteers.
>
> Cheers, Fons.
>
> On Wed, Feb 16, 2000 at 01:50:03PM -0500, George Heintzelman wrote:
> >
> > Hi, Rooters,
> >
> > As Root currently stands, in order to use the automatic documentation
> > system one has to use the ClassDef() and ClassImp() macros. There are
> > classes for which this is an imposition, but also where you would
> > nevertheless like to have documentation available. The two cases in
> > particular are:
> >
> > 1) Classes which should never be read and written, for which a Streamer
> > is declared (and if you are careless, auto-generated) anyway.
> >
> > 2) Classes which wrap very small amounts of data, eg. smart pointers,
> > which do not have their own virtual functions and for which the
> > addition of the virtual functions IsA, ShowMembers and Streamer adds a
> > significant (up to a factor of 2) amount to the size of the object.
> >
> > Looking carefully at the definitions of the macros, it appears that it
> > should be feasible to extract the parts needed for documentation
> > generation and use only those in a documentation generation. There are
> > two questions I want to ask:
> >
> > 1) Will doing this create any unintended side effects? I am not
> > entirely familiar with all the ways Root uses its dictionary, so I am
> > unsure of this.
> > 2) If not, could this be added to the Root distribution?
> >
> > The only real change needed (as far as I can tell) is to write a
> > ClassDefDoc macro as a stripped-down ClassDef, which I've reproduced
> > here:
> >
> > #define ClassDefDoc(name,id) \
> > private: \
> > static TClass *fgIsA; \
> > public: \
> > static const char *DeclFileName() { return __FILE__; } \
> > static int DeclFileLine() { return __LINE__; } \
> > static const char *ImplFileName(); \
> > static int ImplFileLine(); \
> > static Version_t Class_Version() { return id; } \
> > static TClass *Class(); \
> > static void Dictionary();
> >
> > I've tried using this macro in a non-streamed class of mine, and as far
> > as I could tell everything worked correctly; the class was correctly
> > documented in the output.
> >
> > George Heintzelman
> > gah@bnl.gov
> >
> >
>
> --
> Org: CERN, European Laboratory for Particle Physics.
> Mail: 1211 Geneve 23, Switzerland
> E-Mail: Fons.Rademakers@cern.ch Phone: +41 22 7679248
> WWW: http://root.cern.ch/~rdm/ Fax: +41 22 7677910
--
Dr. Nick van Eijndhoven
Organisation: Utrecht University/Nikhef, Department of Subatomic Physics
Address: P.O. Box 80.000, NL-3508 TA Utrecht, The Netherlands
Phone: +31-30-2532331 (direct) +31-30-2531492 (secr.) Fax: +31-30-2518689
Electronic: nick@phys.uu.nl http://www.phys.uu.nl/~nick Office: Ornstein lab. 172
At NIKHEF: H350 Tel: +31-20-5922028 (direct) +31-20-5922000 (secr.) Fax: +31-20-5925155
At CERN: B160 1-012 Tel: +41-22-7679751 (direct) +41-22-7675857 (secr.) Fax: +41-22-7679480
-------------------------------------------------------------------------------------------------
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:19 MET