BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
BDSTemporaryFiles Class Reference

Holder for all temporary files created by BDSIM. More...

#include <BDSTemporaryFiles.hh>

Collaboration diagram for BDSTemporaryFiles:
Collaboration graph

Public Member Functions

G4String CreateTemporaryFileUnnamed (const G4String &extension)
 
G4String CreateTemporaryFile (const G4String &originalFilePath, G4String fileNamePrefix="", G4String fileNameSuffix="")
 

Static Public Member Functions

static BDSTemporaryFilesInstance ()
 Singleton accessor. More...
 

Private Member Functions

 BDSTemporaryFiles ()
 Private default constructor as singleton. More...
 
void InitialiseTempDir ()
 
void WarnOfNewFile (const G4String &newFileName)
 User feedback that new file has been created. More...
 

Private Attributes

G4String userSpecifiedTemporaryDirectory
 Optional user-specified path to try. More...
 
G4String temporaryDirectory
 Directory all files will be placed in. More...
 
G4bool temporaryDirectorySet
 Whether directory has been set and made. More...
 
std::vector< G4String > allocatedFiles
 Record of of all files allocated. More...
 
G4int unNamedFileCount
 Count of unnamed files created. More...
 
G4bool removeTemporaryFiles
 Whether to clean up. More...
 

Static Private Attributes

static BDSTemporaryFilesinstance = nullptr
 Singleton instance. More...
 

Detailed Description

Holder for all temporary files created by BDSIM.

A single place where all temporary file names are held. The class determines a directory to put them when required and cleans up all temporary files upon deletion.

Has a separate method to initialise the temporary directory so that it's possible to delete the singleton at the end of the program without having to construct the temporary directory and possibly encountering an error.

Author
Laurie Nevay

Definition at line 41 of file BDSTemporaryFiles.hh.

Constructor & Destructor Documentation

◆ ~BDSTemporaryFiles()

BDSTemporaryFiles::~BDSTemporaryFiles ( )

Definition at line 97 of file BDSTemporaryFiles.cc.

◆ BDSTemporaryFiles()

BDSTemporaryFiles::BDSTemporaryFiles ( )
private

Private default constructor as singleton.

Definition at line 35 of file BDSTemporaryFiles.cc.

References BDSGlobalConstants::Instance(), removeTemporaryFiles, and userSpecifiedTemporaryDirectory.

Referenced by Instance().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Function Documentation

◆ CreateTemporaryFile()

G4String BDSTemporaryFiles::CreateTemporaryFile ( const G4String &  originalFilePath,
G4String  fileNamePrefix = "",
G4String  fileNameSuffix = "" 
)

Create a temporary file for use in BDSIM based on a currently existing one. A file with the same name but with the file name prefix and suffix in the temporary directory will be returned. It's the caller's responsibility to open this file.

Definition at line 150 of file BDSTemporaryFiles.cc.

References allocatedFiles, InitialiseTempDir(), BDS::SplitFileAndExtension(), BDS::SplitPathAndFileName(), temporaryDirectory, temporaryDirectorySet, and WarnOfNewFile().

Referenced by BDSGDMLPreprocessor::PreprocessFile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateTemporaryFileUnnamed()

G4String BDSTemporaryFiles::CreateTemporaryFileUnnamed ( const G4String &  extension)

Create a temporary file for use in BDSIM. A unique file name will be returned. It's the caller's responsibility to open this file.

Definition at line 137 of file BDSTemporaryFiles.cc.

References allocatedFiles, InitialiseTempDir(), temporaryDirectory, temporaryDirectorySet, unNamedFileCount, and WarnOfNewFile().

Here is the call graph for this function:

◆ InitialiseTempDir()

void BDSTemporaryFiles::InitialiseTempDir ( )
private

Separate function to initialise temporary directory. This way it can be optionally called in case the temp dir isn't used at all and the singleton is deleted at the end of the program. No point getting error about temp dir upon cleaning up something that wasn't used.

Definition at line 45 of file BDSTemporaryFiles.cc.

References BDS::DirectoryExists(), BDS::GetBDSIMExecPath(), temporaryDirectory, temporaryDirectorySet, and userSpecifiedTemporaryDirectory.

Referenced by CreateTemporaryFile(), and CreateTemporaryFileUnnamed().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Instance()

BDSTemporaryFiles * BDSTemporaryFiles::Instance ( )
static

Singleton accessor.

Definition at line 130 of file BDSTemporaryFiles.cc.

References BDSTemporaryFiles(), and instance.

Referenced by BDSGDMLPreprocessor::PreprocessFile(), BDSIM::~BDSIM(), and BDSIMLink::~BDSIMLink().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ WarnOfNewFile()

void BDSTemporaryFiles::WarnOfNewFile ( const G4String &  newFileName)
private

User feedback that new file has been created.

Definition at line 176 of file BDSTemporaryFiles.cc.

Referenced by CreateTemporaryFile(), and CreateTemporaryFileUnnamed().

Here is the caller graph for this function:

Field Documentation

◆ allocatedFiles

std::vector<G4String> BDSTemporaryFiles::allocatedFiles
private

Record of of all files allocated.

Definition at line 79 of file BDSTemporaryFiles.hh.

Referenced by CreateTemporaryFile(), and CreateTemporaryFileUnnamed().

◆ instance

BDSTemporaryFiles * BDSTemporaryFiles::instance = nullptr
staticprivate

Singleton instance.

Definition at line 74 of file BDSTemporaryFiles.hh.

Referenced by Instance().

◆ removeTemporaryFiles

G4bool BDSTemporaryFiles::removeTemporaryFiles
private

Whether to clean up.

Definition at line 81 of file BDSTemporaryFiles.hh.

Referenced by BDSTemporaryFiles().

◆ temporaryDirectory

G4String BDSTemporaryFiles::temporaryDirectory
private

Directory all files will be placed in.

Definition at line 77 of file BDSTemporaryFiles.hh.

Referenced by CreateTemporaryFile(), CreateTemporaryFileUnnamed(), and InitialiseTempDir().

◆ temporaryDirectorySet

G4bool BDSTemporaryFiles::temporaryDirectorySet
private

Whether directory has been set and made.

Definition at line 78 of file BDSTemporaryFiles.hh.

Referenced by CreateTemporaryFile(), CreateTemporaryFileUnnamed(), and InitialiseTempDir().

◆ unNamedFileCount

G4int BDSTemporaryFiles::unNamedFileCount
private

Count of unnamed files created.

Definition at line 80 of file BDSTemporaryFiles.hh.

Referenced by CreateTemporaryFileUnnamed().

◆ userSpecifiedTemporaryDirectory

G4String BDSTemporaryFiles::userSpecifiedTemporaryDirectory
private

Optional user-specified path to try.

Definition at line 76 of file BDSTemporaryFiles.hh.

Referenced by BDSTemporaryFiles(), and InitialiseTempDir().


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