Re: pragma

Fons Rademakers (Fons.Rademakers@cern.ch)
Thu, 05 Jun 1997 12:52:13 +0200


Here are all rootcint pragma's:

#pragma link C++ class ClassName[-]; can use regexp
#pragma link C class ClassName; can use regexp
#pragma link off class ClassName; can use regexp

#pragma link C++ enum ClassName; can use regexp
#pragma link C enum ClassName; can use regexp
#pragma link off enum ClassName; can use regexp

#pragma link C++ function FuncName; can use regexp
#pragma link C function FuncName; can use regexp
#pragma link off function FuncName; can use regexp

#pragma link C++ global VariableName; can use regexp
#pragma link C global VariableName; can use regexp
#pragma link off global VariableName; can use regexp

#pragma link C++ typedef TypeName; can use regexp
#pragma link C typedef TypeName; can use regexp
#pragma link off typedef TypeName; can use regexp

#pragma link off all classes;
#pragma link off all functions;
#pragma link off all variables;
#pragma link off all typedefs;

And here is an axample of how they are used in ROOT itself:

//-------------------------------------------- LinkDef.h
#pragma link off all globals;
#pragma link off all classes;
#pragma link off all functions;

#pragma link C++ global kTRUE;
#pragma link C++ global kFALSE;

#pragma link C++ global gROOT;
#pragma link C++ global gSystem;
#pragma link C++ global gDebug;

#pragma link C++ enum EMessageTypes;

#pragma link C++ function Strip;
#pragma link C++ function StrDup;
#pragma link C++ function operator+(const TString&,const TString&);
#pragma link C++ function operator+(const TString&,const char*);
#pragma link C++ function operator+(const char*,const TString&);
#pragma link C++ function operator==(const TString&,const TString&);
#pragma link C++ function operator==(const TString&,const char*);

#pragma link C++ class TApplication;
#pragma link C++ class TApplicationImp;
#pragma link C++ class TAttAxis;
#pragma link C++ class TAttFill;
#pragma link C++ class TAttFunc;
...
...
//--------------------------------------------

First 3 pragma's turn off processing of all globals, classes
and functions (by default everything will be processed).

Next we decide what we want to export via the interpreter.
The next 5 lines show how we export constants and global pointers.

Next we export an enum and all its members.

Next a set of functions and operators.

Followed by the desired classes.

Also see "rootcint -?" to see how LinkDef.h is used.

Cheers, Fons.

Detlef Kuechler wrote:
>
> Is there a list of root specific pragmas and their meaning?
>
> Detlef Kuechler
>
> Technische Universitaet Dresden
> Institut fuer Kern- und Teilchenphysik
> Aussenstelle Pirna
> Pratzschwitzer Strasse 15
> D-01796 Pirna
> Germany
>
> phone +49 (3501) 530061
> fax +49 (3501) 530011
>
> ****************************************************
> All science is either physics or stamp collecting.
> --- E. Rutherford ---
> ****************************************************

-- 
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