Re: Several rootcint questions

Fons Rademakers (Fons.Rademakers@cern.ch)
Wed, 11 Jun 1997 13:01:23 +0200


Message-ID: <339E855D.1E20@cern.ch>
Date: Wed, 11 Jun 1997 13:00:45 +0200
From: Fons Rademakers <Fons.Rademakers@cern.ch>
Organization: CERN, European Research Center for High Energy Physics
X-Mailer: Mozilla 3.0Gold (X11; I; HP-UX B.10.20 9000/819)
MIME-Version: 1.0
To: Terrence Brannon <brannon@quake.usc.edu>
Subject: Re: Several rootcint questions
References: <lbhgf72yzb.fsf@quake.i-have-a-misconfigured-system-so-shoot-me>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hi Terrence,

sorry for the delay in answering, but too many things to do here.

Terrence Brannon wrote:
>
> I have a completely working tree of source code that compiles under
> g++2.7. I want to document my source using the root/cint automatic
> documentation.
>
> -2: Is this part of the source code for ROOT? If not, where does one
> obtain it?

The documentation system is part of ROOT. It uses the THtml class (see
http://hpna49-7.cern.ch/Documentation.html)

> -1: Where does the ROOT FAQ exist?

Is in preparation. For time being check the RootTalk digest
(http://root.cern.ch/root/roottalk/index.html).

> 0: Must I go about using the rootcint program on my source tree in a
> particular order?

No. The current version of the documentation system requires that you
build a dictionary for your classes and link that with your classes
in a shared library. Then start the root interactive program, load you
shared library to it (gSystem.Load("myclasses.so")). And then execute
the THml class as described in the THml class documentation.

> 1: how does one specify a +P or -p option to rootcint?

All extra rootcint options can be given like:

rootcint MyDict.C -c +P -I$MYINCLUDES -I/usr/otherincludes MyClass.h
LinkDef.h

> 2: I am having lots of errors when I naively try to follow the example
> program. That class is self-contained with no references to other
> include files. My class hierarchy is multi-leveled. Can CINT handle
> such complexity?

What do you mean with multileveld? Embedded classes or just a simple
(multiple) inheritance tree? The latter case is no problem for CINT.

> 3: What is the meaning of
> "Warning: Link requested for undefined class param.Vec FILE: LINE:0"

This means that CINT wants to generate a dictionary for a class
param.Vec which it does not find in the sourece file.

If you want to generate a dictionary for a class that has a different
name than the header file name minus the extension (.h) then one
needs to define the desired class in the LinkDef.h file (see rootcint
-?)

In the above case you do not specify the LinkDef.h file so rootcint
assumes that the class name is param.Vec.

> 4: should I really be typing "rootcint mydict.C -c param.Vec.h" or
> should I be typing rootcint mydict.h -c param.Vec.h

rootcint mydict.C -c param.Vec.h LinkDef.h

is what you want. Where LinkDef.h is:

#ifdef __CINT__

#pragma link off all globals;
#pragma link off all classes;
#pragma link off all functions;

#pragma link C++ class paramVec;

#endif

> 5: builtin.h is in /usr/lib/g++-include++. How can I tell rootcint to look
> there? The same goes for "String.h"

Use the -I option to rootcint as described above.

> 6: Could someone please tell me what causes the following Errors,
> Notes, and Warnings and how to remedy them?
>
> brannon@palm ~/rs/VisionMagick/terry : rootcint mydict.C -c param.Vec.h
> Error: source file "builtin.h" cannot open FILE:param.Vec.h LINE:27
> Error: source file "String.h" cannot open FILE:param.defs.h LINE:26
> Error: No symbol Stringname in current scope FILE:param.defs.h LINE:29
> Error: No symbol Stringval_strings[2] in current scope FILE:param.defs.h LINE:30
> Error: No symbol one_arg_error_handler_tparamVec_error_handler in current scope FILE:param.Vec.h LINE:84
> Note: operator new() masked c
> Note: operator delete() masked c
> Warning: Link requested for undefined class param.Vec FILE: LINE:0
> brannon@palm ~/rs/VisionMagick/terry :

The errors are due to the fact rootcint does not know where to find
builtin.h and String.h. Use -I. The Note: messages you can ignore.

The one extra compilcation for HTML generation is that your class needs
to have the ClassDef and ClassImp macros. See also
http://hpna49-7.cern.ch/Documentation.html.

We are currently working on a rewrite of the THtml class. Using the new
system will be as simple as calling:

rootdoc -t html -c MyClass.h ..... [LinkDef.h]

The system can be easily customized using a formatting template
file and there will be no need to add ClassDef and ClassImp
macros to your code. Also we plan to have formatting types
like:

rootdoc -t man -- Unix man page style
rootdoc -t latex -- Latex
rootdoc -t frame -- FrameMaker MIF
etc.

We expect to have rootdoc for HTML in about a month from now.

Cheers, Fons.

-- 
Org:    CERN, European Laboratory for Particle Physics.
Mail:   1211 Geneve 23, Switzerland          Phone: +41 22 7679248
E-Mail: Fons.Rademakers@cern.ch              Fax:   +41 22 7677910