ROOT  6.06/09
Reference Guide
Public Member Functions | Protected Attributes | Private Member Functions | List of all members
TFolder Class Reference

A TFolder object is a collection of objects and folders.

Folders have a name and a title and are identified in the folder hierarchy by a "Unix-like" naming mechanism. The root of all folders is //root. New folders can be dynamically added or removed to/from a folder. The folder hierarchy can be visualized via the TBrowser.

base_browser.png

The Root folders hierarchy can be seen as a whiteboard where objects are posted. Other classes/tasks can access these objects by specifying only a string pathname. This whiteboard facility greatly improves the modularity of an application, minimizing the class relationship problem that penalizes large applications.

Pointers are efficient to communicate between classes. However, one has interest to minimize direct coupling between classes in the form of direct pointers. One better uses the naming and search service provided by the Root folders hierarchy. This makes the classes loosely coupled and also greatly facilitates I/O operations. In a client/server environment, this mechanism facilitates the access to any kind of object in //root stores running on different processes.

A TFolder is created by invoking the TFolder constructor. It is placed inside an existing folder via the TFolder::AddFolder method. One can search for a folder or an object in a folder using the FindObject method. FindObject analyses the string passed as its argument and searches in the hierarchy until it finds an object or folder matching the name.

When a folder is deleted, its reference from the parent folder and possible other folders is deleted.

If a folder has been declared the owner of its objects/folders via TFolder::SetOwner, then the contained objects are deleted when the folder is deleted. By default, a folder does not own its contained objects.

NOTE that folder ownership can be set

Standard Root objects are automatically added to the folder hierarchy. For example, the following folders exist: root/Files with the list of currently connected Root files root/Classes with the list of active classes root/Geometries with active geometries root/Canvases with the list of active canvases root/Styles with the list of graphics styles root/Colors with the list of active colors

For example, if a file "myFile.root" is added to the list of files, one can retrieve a pointer to the corresponding TFile object with a statement like:

TFile *myFile = (TFile*)gROOT->FindObject("//root/Files/myFile.root");

The above statement can be abbreviated to:

TFile *myFile = (TFile*)gROOT->FindObject("/Files/myFile.root");

or even to:

TFile *myFile = (TFile*)gROOT->FindObjectAny("myFile.root");

In this last case, the TROOT::FindObjectAny function will scan the folder hierarchy starting at //root and will return the first object named "myFile.root".

Because a string-based search mechanism is expensive, it is recommended to save the pointer to the object as a class member or local variable if this pointer is used frequently or inside loops.

Definition at line 32 of file TFolder.h.

Public Member Functions

 TFolder ()
 
 TFolder (const char *name, const char *title)
 Create a normal folder. More...
 
virtual ~TFolder ()
 Folder destructor. More...
 
virtual void Add (TObject *obj)
 Add object to this folder. obj must be a TObject or a TFolder. More...
 
TFolderAddFolder (const char *name, const char *title, TCollection *collection=0)
 Create a new folder and add it to the list of folders of this folder, return a pointer to the created folder. More...
 
virtual void Browse (TBrowser *b)
 Browse this folder. More...
 
virtual void Clear (Option_t *option="")
 Delete all objects from a folder list. More...
 
virtual void Copy (TObject &) const
 Copy this to obj. More...
 
virtual const char * FindFullPathName (const char *name) const
 Return the full pathname corresponding to subpath name if the node is gROOT->GetRootFolder() and return a relative path otherwise. More...
 
virtual const char * FindFullPathName (const TObject *obj) const
 Return the full pathname corresponding to subpath name. More...
 
virtual TObjectFindObject (const char *name) const
 Search object identified by name in the tree of folders inside this folder. More...
 
virtual TObjectFindObject (const TObject *obj) const
 Find object in an folder. More...
 
virtual TObjectFindObjectAny (const char *name) const
 Return a pointer to the first object with name starting at this folder. More...
 
TCollectionGetListOfFolders () const
 
Bool_t IsFolder () const
 Returns kTRUE in case object contains browsable objects (like containers or lists of other objects). More...
 
Bool_t IsOwner () const
 Folder ownership has been set via. More...
 
virtual void ls (Option_t *option="") const
 List folder contents. More...
 
virtual Int_t Occurence (const TObject *obj) const
 Return occurence number of object in the list of objects of this folder. More...
 
virtual void RecursiveRemove (TObject *obj)
 Recursively remove object from a folder. More...
 
virtual void Remove (TObject *obj)
 Remove object from this folder. obj must be a TObject or a TFolder. More...
 
virtual void SaveAs (const char *filename="", Option_t *option="") const
 Save all objects in this folder in filename. More...
 
virtual void SetOwner (Bool_t owner=kTRUE)
 Set ownership. More...
 
- Public Member Functions inherited from TNamed
 TNamed ()
 
 TNamed (const char *name, const char *title)
 
 TNamed (const TString &name, const TString &title)
 
 TNamed (const TNamed &named)
 
TNamedoperator= (const TNamed &rhs)
 TNamed assignment operator. More...
 
virtual ~TNamed ()
 
virtual TObjectClone (const char *newname="") const
 Make a clone of an object using the Streamer facility. More...
 
virtual Int_t Compare (const TObject *obj) const
 Compare two TNamed objects. More...
 
virtual void FillBuffer (char *&buffer)
 Encode TNamed into output buffer. More...
 
virtual const char * GetName () const
 Returns name of object. More...
 
virtual const char * GetTitle () const
 Returns title of object. More...
 
virtual ULong_t Hash () const
 Return hash value for this object. More...
 
virtual Bool_t IsSortable () const
 
virtual void SetName (const char *name)
 Change (i.e. More...
 
virtual void SetNameTitle (const char *name, const char *title)
 Change (i.e. set) all the TNamed parameters (name and title). More...
 
virtual void SetTitle (const char *title="")
 Change (i.e. set) the title of the TNamed. More...
 
virtual void Print (Option_t *option="") const
 Print TNamed name and title. More...
 
virtual Int_t Sizeof () const
 Return size of the TNamed part of the TObject. More...
 
- Public Member Functions inherited from TObject
 TObject ()
 
 TObject (const TObject &object)
 TObject copy ctor. More...
 
TObjectoperator= (const TObject &rhs)
 TObject assignment operator. More...
 
virtual ~TObject ()
 TObject destructor. More...
 
virtual void AppendPad (Option_t *option="")
 Append graphics object to current pad. More...
 
virtual const char * ClassName () const
 Returns name of class to which the object belongs. More...
 
virtual void Delete (Option_t *option="")
 Delete this object. More...
 
virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
 Computes distance from point (px,py) to the object. More...
 
virtual void Draw (Option_t *option="")
 Default Draw method for all objects. More...
 
virtual void DrawClass () const
 Draw class inheritance tree of the class to which this object belongs. More...
 
virtual TObjectDrawClone (Option_t *option="") const
 Draw a clone of this object in the current pad. More...
 
virtual void Dump () const
 Dump contents of object on stdout. More...
 
virtual void Execute (const char *method, const char *params, Int_t *error=0)
 Execute method on this object with the given parameter string, e.g. More...
 
virtual void Execute (TMethod *method, TObjArray *params, Int_t *error=0)
 Execute method on this object with parameters stored in the TObjArray. More...
 
virtual void ExecuteEvent (Int_t event, Int_t px, Int_t py)
 Execute action corresponding to an event at (px,py). More...
 
virtual Option_tGetDrawOption () const
 Get option used by the graphics system to draw this object. More...
 
virtual UInt_t GetUniqueID () const
 Return the unique object id. More...
 
virtual const char * GetIconName () const
 Returns mime type name of object. More...
 
virtual Option_tGetOption () const
 
virtual char * GetObjectInfo (Int_t px, Int_t py) const
 Returns string containing info about the object at position (px,py). More...
 
virtual Bool_t HandleTimer (TTimer *timer)
 Execute action in response of a timer timing out. More...
 
virtual Bool_t InheritsFrom (const char *classname) const
 Returns kTRUE if object inherits from class "classname". More...
 
virtual Bool_t InheritsFrom (const TClass *cl) const
 Returns kTRUE if object inherits from TClass cl. More...
 
virtual void Inspect () const
 Dump contents of this object in a graphics canvas. More...
 
virtual Bool_t IsEqual (const TObject *obj) const
 Default equal comparison (objects are equal if they have the same address in memory). More...
 
Bool_t IsOnHeap () const
 
Bool_t IsZombie () const
 
virtual Bool_t Notify ()
 This method must be overridden to handle object notification. More...
 
virtual void Paint (Option_t *option="")
 This method must be overridden if a class wants to paint itself. More...
 
virtual void Pop ()
 Pop on object drawn in a pad to the top of the display list. More...
 
virtual Int_t Read (const char *name)
 Read contents of object with specified name from the current directory. More...
 
virtual void SavePrimitive (std::ostream &out, Option_t *option="")
 Save a primitive as a C++ statement(s) on output stream "out". More...
 
virtual void SetDrawOption (Option_t *option="")
 Set drawing option for object. More...
 
virtual void SetUniqueID (UInt_t uid)
 Set the unique object id. More...
 
virtual void UseCurrentStyle ()
 Set current style settings in this object This function is called when either TCanvas::UseCurrentStyle or TROOT::ForceStyle have been invoked. More...
 
virtual Int_t Write (const char *name=0, Int_t option=0, Int_t bufsize=0)
 Write this object to the current directory. More...
 
virtual Int_t Write (const char *name=0, Int_t option=0, Int_t bufsize=0) const
 Write this object to the current directory. More...
 
voidoperator new (size_t sz)
 
voidoperator new[] (size_t sz)
 
voidoperator new (size_t sz, void *vp)
 
voidoperator new[] (size_t sz, void *vp)
 
void operator delete (void *ptr)
 Operator delete. More...
 
void operator delete[] (void *ptr)
 Operator delete []. More...
 
void SetBit (UInt_t f, Bool_t set)
 Set or unset the user status bits as specified in f. More...
 
void SetBit (UInt_t f)
 
void ResetBit (UInt_t f)
 
Bool_t TestBit (UInt_t f) const
 
Int_t TestBits (UInt_t f) const
 
void InvertBit (UInt_t f)
 
virtual void Info (const char *method, const char *msgfmt,...) const
 Issue info message. More...
 
virtual void Warning (const char *method, const char *msgfmt,...) const
 Issue warning message. More...
 
virtual void Error (const char *method, const char *msgfmt,...) const
 Issue error message. More...
 
virtual void SysError (const char *method, const char *msgfmt,...) const
 Issue system error message. More...
 
virtual void Fatal (const char *method, const char *msgfmt,...) const
 Issue fatal error message. More...
 
void AbstractMethod (const char *method) const
 Use this method to implement an "abstract" method that you don't want to leave purely abstract. More...
 
void MayNotUse (const char *method) const
 Use this method to signal that a method (defined in a base class) may not be called in a derived class (in principle against good design since a child class should not provide less functionality than its parent, however, sometimes it is necessary). More...
 
void Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const
 Use this method to declare a method obsolete. More...
 

Protected Attributes

TCollectionfFolders
 
Bool_t fIsOwner
 
- Protected Attributes inherited from TNamed
TString fName
 
TString fTitle
 

Private Member Functions

 TFolder (const TFolder &folder)
 Copy constructor. More...
 
void operator= (const TFolder &)
 

Additional Inherited Members

- Public Types inherited from TObject
enum  EStatusBits {
  kCanDelete = BIT(0), kMustCleanup = BIT(3), kObjInCanvas = BIT(3), kIsReferenced = BIT(4),
  kHasUUID = BIT(5), kCannotPick = BIT(6), kNoContextMenu = BIT(8), kInvalidObject = BIT(13)
}
 
enum  { kIsOnHeap = 0x01000000, kNotDeleted = 0x02000000, kZombie = 0x04000000, kBitMask = 0x00ffffff }
 
enum  { kSingleKey = BIT(0), kOverwrite = BIT(1), kWriteDelete = BIT(2) }
 
- Static Public Member Functions inherited from TObject
static Long_t GetDtorOnly ()
 Return destructor only flag. More...
 
static void SetDtorOnly (void *obj)
 Set destructor only flag. More...
 
static Bool_t GetObjectStat ()
 Get status of object stat flag. More...
 
static void SetObjectStat (Bool_t stat)
 Turn on/off tracking of objects in the TObjectTable. More...
 
- Protected Member Functions inherited from TObject
void MakeZombie ()
 
virtual void DoError (int level, const char *location, const char *fmt, va_list va) const
 Interface to ErrorHandler (protected). More...
 

#include <TFolder.h>

+ Inheritance diagram for TFolder:
+ Collaboration diagram for TFolder:

Constructor & Destructor Documentation

TFolder::TFolder ( const TFolder folder)
private

Copy constructor.

Definition at line 126 of file TFolder.cxx.

TFolder::TFolder ( )

Referenced by AddFolder().

TFolder::TFolder ( const char *  name,
const char *  title 
)

Create a normal folder.

Use Add or AddFolder to add objects or folders to this folder.

Definition at line 116 of file TFolder.cxx.

TFolder::~TFolder ( )
virtual

Folder destructor.

Remove all objects from its lists and delete all its sub folders.

Definition at line 135 of file TFolder.cxx.

Member Function Documentation

void TFolder::Add ( TObject obj)
virtual

Add object to this folder. obj must be a TObject or a TFolder.

Definition at line 168 of file TFolder.cxx.

Referenced by TRootSniffer::AccessField(), and TRootSniffer::RegisterObject().

TFolder * TFolder::AddFolder ( const char *  name,
const char *  title,
TCollection collection = 0 
)

Create a new folder and add it to the list of folders of this folder, return a pointer to the created folder.

Note that a folder can be added to several folders.

If collection is non NULL, the pointer fFolders is set to the existing collection, otherwise a default collection (Tlist) is created. Note that the folder name cannot contain slashes.

Definition at line 184 of file TFolder.cxx.

Referenced by TRootSniffer::GetItem(), and TROOT::TROOT().

void TFolder::Browse ( TBrowser b)
virtual

Browse this folder.

Reimplemented from TObject.

Definition at line 215 of file TFolder.cxx.

void TFolder::Clear ( Option_t option = "")
virtual

Delete all objects from a folder list.

Reimplemented from TNamed.

Definition at line 223 of file TFolder.cxx.

virtual void TFolder::Copy ( TObject named) const
inlinevirtual

Copy this to obj.

Reimplemented from TNamed.

Definition at line 51 of file TFolder.h.

const char * TFolder::FindFullPathName ( const char *  name) const
virtual

Return the full pathname corresponding to subpath name if the node is gROOT->GetRootFolder() and return a relative path otherwise.

The returned path will be re-used by the next call to FindFullPathName().

Definition at line 233 of file TFolder.cxx.

Referenced by FindFullPathName().

const char * TFolder::FindFullPathName ( const TObject obj) const
virtual

Return the full pathname corresponding to subpath name.

The returned path will be re-used by the next call to FindFullPathName().

Definition at line 278 of file TFolder.cxx.

TObject * TFolder::FindObject ( const char *  name) const
virtual

Search object identified by name in the tree of folders inside this folder.

Name may be of the forms:

A. Specify a full pathname starting at the top ROOT folder //root/xxx/yyy/name

B. Specify a pathname starting with a single slash. //root is assumed /xxx/yyy/name

C. Specify a pathname relative to this folder xxx/yyy/name name

Reimplemented from TObject.

Definition at line 308 of file TFolder.cxx.

Referenced by FindFullPathName(), FindObjectAny(), TRootSniffer::GetItem(), and TEveManager::GetMacro().

TObject * TFolder::FindObject ( const TObject obj) const
virtual

Find object in an folder.

Reimplemented from TObject.

Definition at line 287 of file TFolder.cxx.

TObject * TFolder::FindObjectAny ( const char *  name) const
virtual

Return a pointer to the first object with name starting at this folder.

Definition at line 350 of file TFolder.cxx.

Referenced by FindObjectAny(), and TROOT::FindObjectAny().

TCollection* TFolder::GetListOfFolders ( ) const
inline
Bool_t TFolder::IsFolder ( ) const
inlinevirtual

Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).

Reimplemented from TObject.

Definition at line 58 of file TFolder.h.

Bool_t TFolder::IsOwner ( ) const

Folder ownership has been set via.

Definition at line 376 of file TFolder.cxx.

void TFolder::ls ( Option_t option = "") const
virtual

List folder contents.

If option contains "dump", the Dump function of contained objects is called.

If option contains "print", the Print function of contained objects is called.

By default the ls function of contained objects is called.

Indentation is used to identify the folder tree.

The if option contains a <regexp> it be used to match the name of the objects.

Reimplemented from TNamed.

Definition at line 395 of file TFolder.cxx.

Int_t TFolder::Occurence ( const TObject object) const
virtual

Return occurence number of object in the list of objects of this folder.

The function returns the number of objects with the same name as object found in the list of objects in this folder before object itself. If only one object is found, return 0.

Definition at line 434 of file TFolder.cxx.

Referenced by TTree::Branch().

void TFolder::operator= ( const TFolder )
private
void TFolder::RecursiveRemove ( TObject obj)
virtual

Recursively remove object from a folder.

Reimplemented from TObject.

Definition at line 456 of file TFolder.cxx.

Referenced by TRootSniffer::UnregisterObject().

void TFolder::Remove ( TObject obj)
virtual

Remove object from this folder. obj must be a TObject or a TFolder.

Definition at line 464 of file TFolder.cxx.

Referenced by TRootSniffer::AccessField().

void TFolder::SaveAs ( const char *  filename = "",
Option_t option = "" 
) const
virtual

Save all objects in this folder in filename.

Each object in this folder will have a key in the file where the name of the key will be the name of the object.

Reimplemented from TObject.

Definition at line 475 of file TFolder.cxx.

void TFolder::SetOwner ( Bool_t  owner = kTRUE)
virtual

Set ownership.

If the folder is declared owner, when the folder is deleted, all the objects added via TFolder::Add are deleted via TObject::Delete, otherwise TObject::Clear is called.

NOTE that folder ownership can be set:

Definition at line 490 of file TFolder.cxx.

Member Data Documentation

TCollection* TFolder::fFolders
protected
Bool_t TFolder::fIsOwner
protected

Definition at line 36 of file TFolder.h.

Referenced by TFolder().


The documentation for this class was generated from the following files: