Logo ROOT  
Reference Guide
TDirectory::TContext Class Reference

TDirectory::TContext keeps track and restore the current directory.

With this tool C++ exceptions will be guaranteed to properly restore the current directory pointer.

For example code like:

mydirectory->cd();
if (...) {
....
sav->cd();
return;
} else if (...) {
....
sav->cd();
return;
}
sav->cd;
return;

can be replaced with the simpler and exception safe:

TDirectory::TContext context(gDirectory, mydirectory);
if (...) {
....
return;
} else if (...) {
....
return;
}
return;

Definition at line 89 of file TDirectory.h.

Public Member Functions

 TContext ()
 
 TContext (TDirectory *newCurrent)
 
 TContext (TDirectory *previous, TDirectory *newCurrent)
 
 ~TContext ()
 Destructor. More...
 

Private Member Functions

 TContext (TContext &)=delete
 Pointer to the next TContext in the implied list of context pointing to fPrevious. More...
 
void CdNull ()
 Set the current directory to null. More...
 
TContextoperator= (TContext &)=delete
 

Private Attributes

std::atomic< boolfActiveDestructor {false}
 Pointer to the previous current directory. More...
 
std::atomic< TDirectory * > fDirectory {nullptr}
 
std::atomic< boolfDirectoryWait {false}
 Set to true during the destructor execution. More...
 
TContextfNext {nullptr}
 Pointer to the next TContext in the implied list of context pointing to fPrevious. More...
 
TContextfPrevious {nullptr}
 Set to true if a TDirectory might still access this object. More...
 

Friends

class TDirectory
 

#include <TDirectory.h>

Constructor & Destructor Documentation

◆ TContext() [1/4]

TDirectory::TContext::TContext ( TContext )
privatedelete

Pointer to the next TContext in the implied list of context pointing to fPrevious.

◆ TContext() [2/4]

TDirectory::TContext::TContext ( TDirectory previous,
TDirectory newCurrent 
)
inline

Definition at line 103 of file TDirectory.h.

◆ TContext() [3/4]

TDirectory::TContext::TContext ( )
inline

Definition at line 114 of file TDirectory.h.

◆ TContext() [4/4]

TDirectory::TContext::TContext ( TDirectory newCurrent)
inline

Definition at line 121 of file TDirectory.h.

◆ ~TContext()

TDirectory::TContext::~TContext ( )

Destructor.

Reset the current directory to its previous state.

Definition at line 135 of file TDirectory.cxx.

Member Function Documentation

◆ CdNull()

void TDirectory::TContext::CdNull ( )
private

Set the current directory to null.

This is called from the TContext destructor. Since the destructor is inline, we do not want to have it directly use a global variable.

Definition at line 125 of file TDirectory.cxx.

◆ operator=()

TContext& TDirectory::TContext::operator= ( TContext )
privatedelete

Friends And Related Function Documentation

◆ TDirectory

friend class TDirectory
friend

Definition at line 101 of file TDirectory.h.

Member Data Documentation

◆ fActiveDestructor

std::atomic<bool> TDirectory::TContext::fActiveDestructor {false}
private

Pointer to the previous current directory.

Definition at line 92 of file TDirectory.h.

◆ fDirectory

std::atomic<TDirectory*> TDirectory::TContext::fDirectory {nullptr}
private

Definition at line 91 of file TDirectory.h.

◆ fDirectoryWait

std::atomic<bool> TDirectory::TContext::fDirectoryWait {false}
private

Set to true during the destructor execution.

Definition at line 93 of file TDirectory.h.

◆ fNext

TContext* TDirectory::TContext::fNext {nullptr}
private

Pointer to the next TContext in the implied list of context pointing to fPrevious.

Definition at line 95 of file TDirectory.h.

◆ fPrevious

TContext* TDirectory::TContext::fPrevious {nullptr}
private

Set to true if a TDirectory might still access this object.

Definition at line 94 of file TDirectory.h.


The documentation for this class was generated from the following files:
TDirectory::TContext
TDirectory::TContext keeps track and restore the current directory.
Definition: TDirectory.h:89
TDirectory::cd
virtual Bool_t cd(const char *path=nullptr)
Change current directory to "this" directory.
Definition: TDirectory.cxx:504
gDirectory
#define gDirectory
Definition: TDirectory.h:327
TDirectory
Describe directory structure in memory.
Definition: TDirectory.h:45