library: libGpad
#include "TClassTree.h"

TClassTree


class description - source file - inheritance tree (.pdf)

class TClassTree : public TNamed

Inheritance Chart:
TObject
<-
TNamed
<-
TClassTree

    protected:
virtual void FindClassesUsedBy(Int_t iclass) virtual void FindClassesUsing(Int_t iclass) virtual void FindClassPosition(const char* classname, Float_t& x, Float_t& y) virtual void Init() TObjString* Mark(const char* classname, TList* los, Int_t abit) virtual void PaintClass(Int_t iclass, Float_t xleft, Float_t y) virtual void ScanClasses(Int_t iclass) virtual void ShowCod() virtual void ShowHas() virtual void ShowMul() virtual void ShowRef() public:
TClassTree() TClassTree(const char* name, const char* classes) TClassTree(const TClassTree&) virtual ~TClassTree() static TClass* Class() virtual void Draw(const char* classes) virtual Int_t FindClass(const char* classname) const char* GetClasses() const virtual const char* GetSourceDir() const virtual TClass* IsA() const virtual void ls(Option_t* option) const TClassTree& operator=(const TClassTree&) virtual void Paint(Option_t* option) virtual void SaveAs(const char* filename) virtual void SetClasses(const char* classes, Option_t* option = "ID") virtual void SetLabelDx(Float_t labeldx = 0.15) virtual void SetSourceDir(const char* dir = "src") virtual void SetYoffset(Float_t offset = 0) virtual void ShowClassesUsedBy(const char* classes) virtual void ShowClassesUsing(const char* classes) virtual void ShowLinks(Option_t* option = "HMR") virtual void ShowMembers(TMemberInspector& insp, char* parent) virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b)

Data Members


    protected:
TString fClasses List of classes to be drawn Float_t fYoffset offset at top of picture in per cent of pad Float_t fLabelDx width along x of TPaveLabels in per cent of pad Int_t fNclasses current number of classes Int_t fShowCod if 1 show classes referenced by implementation Int_t fShowMul if 1 show multiple inheritance Int_t fShowHas if 1 show "has a" relationship Int_t fShowRef if 1 show classes relationship other than inheritance Int_t* fCstatus [fNclasses] classes status Int_t* fNdata [fNclasses] Number of data members per class Int_t* fParents [fNclasses] parent number of classes (permanent) Int_t* fCparent !parent number of classes (temporary) char** fDerived ![fNclasses] table to indicate if i derives from j TClass** fCpointer ![fNclasses] pointers to the TClass objects TString** fCnames ![fNclasses] class names TString** fCtitles ![fNclasses] class titles TString** fOptions ![fNclasses] List of options per class TString fSourceDir Concatenated source directories TList** fLinks ![fNclasses] for each class, the list of referenced(ing) classes

Class Description

 Draw inheritance tree and their relations for a list of classes
 The following options are supported
   - Direct inheritance (default)
   - Multiple inheritance
   - Composition
   - References by data members and member functions
   - References from Code

 The list of classes is specified:
   - either in the TClassTree constructor as a second argument
   - or the parameter to TClassTRee::Draw

 Note that the ClassTree viewer can also be started from the canvas
 pull down menu "Classes".

 In the list of classes, class names are separated by a ":"
 wildcarding is supported.
 The following formats are supported, eg in TClassTree::Draw
   1- Draw("ClassA")
         Draw inheritance tree for ClassA
         Show all classes referenced by ClassA
   2- Draw("*ClassB")
         Draw inheritance tree for ClassB
         and all the classes deriving from ClassB
   3- Draw(">ClassC")
         Draw inheritance tree for ClassC
         Show classes referencing ClassC
   4- Draw("ClassD<")
         Draw inheritance tree for ClassD
         Show classes referenced by ClassD
         Show all classes referencing ClassD
   5- Draw("Cla*")
         Draw inheritance tree for all classes with name starting with "Cla"
         Show classes referenced by these classes
   6- Draw("ClassA:ClassB<")
         Draw inheritance tree for ClassA
         Show all classes referenced by ClassA
         Draw inheritance tree for ClassB
         Show classes referenced by ClassB
         Show all classes referencing ClassB

  example;  Draw("TTree<")
         Draw inheritance tree for the Root class TTree
         Show all classes referenced by TTree
         Show all classes using TTree

 By default, only direct inheritance is drawn.
 Use TClassTree::ShowLinks(option) to show additional references
   option = "H" to show links to embedded classes
   option = "M" to show multiple inheritance
   option = "R" to show pointers to other classes from data members
   option = "C" to show classes used by the code(implementation) of a class

 The following picture is produced directly by:
       TClassTree ct("ct","*TH1")
 It shows all the classes derived from the base class TH1.
/* */

 The ClassTree class uses the services of the class TPaveClass to
 show the class names. By clicking with the right mouse button in
 one TPaveClass object, one can invoke the following functions of TClassTree:
   - ShowLinks(option) with by default option = "HMR"
   - Draw(classes). By default the class drawn is the one being pointed
   - ShowClassesUsedBy(classes) (by default the pointed class)
   - ShowClassesUsing(classes) (by default the pointed class)

  The following picture has been generated with the following statements
       TClassTree tc1("tc1","TObject");
       tc1.SetShowLinks("HMR");

/* */

 Note that in case of embedded classes or pointers to classes,
 the corresponding dashed lines or arrows respectively start
 in the TPaveClass object at an X position reflecting the position
 in the list of data members.

  - References by data members to other classes are show with a full red line
  - Multiple inheritance is shown with a dashed blue line
  - "Has a" relation is shown with a dotted cyan line
  - References from code is shown by a full green line

  Use TClassTree::SetSourceDir to specify the search path for source files.
  By default the search path includes the ROOTSYS/src directory, the current
  directory and the subdirectory src.

  The first time TClassTree::Draw is invoked, all the classes in the
  current application are processed, including the parsing of the code
  to find all classes referenced by the include statements.
  This process may take a few seconds. The following commands will be
  much faster.

  A TClassTree object may be saved in a Root file.
  This object can be processed later by a Root program that ignores
  the original classes. This interesting possibility allows to send
  the class structure of an application to a colleague who does not have
  your classes.
  Example:
    TFile f("myClasses.root","recreate")
    TClassTree *ct = new TClassTree("ct","ATLF*")
    ct->Write();
  You can send at this point the file myClass.root to a colleague who can
  run the following Root basic session
     TFile f("myClass.root"); //connect the file
     tt.ls();                 //to list all classes and titles
     tt.Draw("ATLFDisplay")   //show class ATLFDisplay with all its dependencies
  At this point, one has still access to all the classes present
  in the original session and select any combination of these classes
  to be displayed.

TClassTree()
*-*-*-*-*-*-*-*-*-*-*-*TClassTree default constructor*-*-*-*-*-*-*-*-*-*-*
*-*                    ==============================

TClassTree(const char *name, const char *classes) :TNamed(name,classes)
*-*-*-*-*-*-*-*-*-*-*TClassTree constructor*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-*                  ======================

~TClassTree()
*-*-*-*-*-*-*-*-*-*TClassTree default destructor*-*-*-*-*-*-*-*-*-*-*-*
*-*                =============================

void Draw(const char *classes)
 Draw the inheritance tree and relations for the list of classes
 see this class header for the syntax and examples

Int_t FindClass(const char *classname)
  Find class number corresponding to classname in list of local classes

void FindClassesUsedBy(Int_t iclass)
  Select all classes used/referenced by the class number iclass

void FindClassesUsing(Int_t iclass)
  Select all classes using/referencing the class number iclass

void FindClassPosition(const char *classname, Float_t &x, Float_t &y)
 Search the TPaveClass object in the pad with label=classname
 returns the x and y position of the center of the pave.

void Init()
 Initialize the data structures

void ls(Option_t *) const
 list classes names and titles

TObjString* Mark(const char *classname, TList *los, Int_t abit)
 set bit abit in class classname in list los

void Paint(Option_t *)
 Draw the current class setting in fClasses and fStatus

void PaintClass(Int_t iclass, Float_t xleft, Float_t y)
 Paint one class level

void SaveAs(const char *filename)
 save current configuration in a Root file
 if filename is blank, the name of the file will be the current objectname.root
 all the current settings are preserved
 the Root file produced can be looked at by a another Root session
 with no access to the original classes.

void ScanClasses(Int_t iclass)
  Select all classes used by/referenced/referencing the class number iclass
  and build the list of these classes

void SetClasses(const char *classes, Option_t *)
 Set the list of classes for which the hierarchy is to be drawn
 See Paint for the syntax

void SetLabelDx(Float_t labeldx)
 Set the size along x of the TPavellabel showing the class name

void SetYoffset(Float_t offset)
 Set the offset at the top of the picture
 The default offset is computed automatically taking into account
 classes not inheriting from TObject.

void ShowClassesUsedBy(const char *classes)
 mark classes used by the list of classes in classes

void ShowClassesUsing(const char *classes)
 mark classes using any class in the list of classes in classes

void ShowCod()
 Draw the Code References relationships

void ShowHas()
 Draw the "Has a" relationships

void ShowLinks(Option_t *option)
 Set link options in the ClassTree object
   "C"  show References from code
   "H"  show Has a relations
   "M"  show Multiple Inheritance
   "R"  show References from data members

void ShowMul()
 Draw the Multiple inheritance relationships

void ShowRef()
 Draw the References relationships (other than inheritance or composition)

void Streamer(TBuffer &R__b)
 Stream an object of class TClassTree.
 the status of the object is saved and can be replayed in a subsequent session



Inline Functions


        const char* GetClasses() const
        const char* GetSourceDir() const
               void SetSourceDir(const char* dir = "src")
            TClass* Class()
            TClass* IsA() const
               void ShowMembers(TMemberInspector& insp, char* parent)
               void StreamerNVirtual(TBuffer& b)
         TClassTree TClassTree(const TClassTree&)
        TClassTree& operator=(const TClassTree&)


Author: Rene Brun 01/12/98
Last update: root/gpad:$Name: $:$Id: TClassTree.cxx,v 1.5 2002/01/24 11:39:28 rdm Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *


ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.