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