Chaste Release::3.1
FileFinder Class Reference

#include <FileFinder.hpp>

Inheritance diagram for FileFinder:
Collaboration diagram for FileFinder:

List of all members.

Public Member Functions

 FileFinder ()
 FileFinder (const std::string &rPath, RelativeTo::Value relativeTo)
 FileFinder (const std::string &rLeafName, const FileFinder &rParentOrSibling)
 FileFinder (const fs::path &rPath)
void SetPath (const std::string &rPath, RelativeTo::Value relativeTo)
bool IsPathSet () const
void SetPath (const std::string &rLeafName, const FileFinder &rParentOrSibling)
bool Exists () const
bool IsFile () const
bool IsDir () const
bool IsEmpty () const
std::string GetAbsolutePath () const
bool IsNewerThan (const FileFinder &rOtherEntity) const
std::string GetLeafName () const
std::string GetLeafNameNoExtension () const
std::string GetExtension () const
FileFinder GetParent () const
std::string GetRelativePath (const FileFinder &rBasePath) const
FileFinder CopyTo (const FileFinder &rDest) const
void Remove (bool force=false) const
std::vector< FileFinderFindMatches (const std::string &rPattern) const

Static Public Member Functions

static bool IsAbsolutePath (const std::string &rPath)
static void ReplaceSpacesWithUnderscores (std::string &rPath)
static void ReplaceUnderscoresWithSpaces (std::string &rPath)
static void FakePath (RelativeTo::Value fakeWhat, const std::string &rFakePath)
static void StopFaking ()

Private Attributes

std::string mAbsPath

Static Private Attributes

static bool msFaking = false
static RelativeTo::Value msFakeWhat = RelativeTo::Absolute
static std::string msFakePath = ""

Detailed Description

A helper class for finding files or directories, given paths which can be relative to various locations (e.g. the Chaste source tree root, the current directory, the Chaste test output directory, or an absolute path).

Definition at line 68 of file FileFinder.hpp.


Constructor & Destructor Documentation

FileFinder::FileFinder ( )

Default constructor for subclasses to use. They must call SetPath() in their constructor.

This also allows classes to store a FileFinder instance that hasn't been properly set up yet, and assign to it later using operator=.

Definition at line 56 of file FileFinder.cpp.

Referenced by CopyTo(), FindMatches(), and GetParent().

FileFinder::FileFinder ( const std::string &  rPath,
RelativeTo::Value  relativeTo 
)

Main constructor.

Parameters:
rPaththe path to the file/dir to find
relativeTohow to interpret this path

Definition at line 61 of file FileFinder.cpp.

References SetPath().

FileFinder::FileFinder ( const std::string &  rLeafName,
const FileFinder rParentOrSibling 
)

Find a file (or folder) relative to some file or directory. If the second argument is a directory, we look for the given leaf name within it. If the second argument is a file, then we look for a sibling. An exception is raised if rParentOrSibling does not exist.

Parameters:
rLeafNamethe leaf name of the file/dir to find
rParentOrSiblingwhere to look for it

Definition at line 66 of file FileFinder.cpp.

References SetPath().

FileFinder::FileFinder ( const fs::path &  rPath)

Conversion constructor from a Boost Filesystem path object. Note that since fs::path has a conversion constructor from std::string, this allows us to be initialised with a string or character constant, too. The path will be interpreted as relative to the current working directory, unless it is an absolute path.

Parameters:
rPaththe path to the file/dir to find

Definition at line 71 of file FileFinder.cpp.

References RelativeTo::Absolute, and SetPath().


Member Function Documentation

FileFinder FileFinder::CopyTo ( const FileFinder rDest) const

Copy this file to the given destination. The destination may be a folder, or destination file name. Only single files may be copied, not whole folders.

Parameters:
rDestwhere to copy to
Returns:
a finder for the copied file

Definition at line 245 of file FileFinder.cpp.

References EXCEPTION, Exists(), FileFinder(), IsDir(), IsFile(), and mAbsPath.

Referenced by AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM >::save().

void FileFinder::FakePath ( RelativeTo::Value  fakeWhat,
const std::string &  rFakePath 
) [static]

For testing purposes, fake the value of one of the normally fixed paths, e.g. ChasteSourceRoot.

Parameters:
fakeWhatwhich path to fake
rFakePathits fake value

Definition at line 448 of file FileFinder.cpp.

References msFakePath, msFakeWhat, and msFaking.

std::vector< FileFinder > FileFinder::FindMatches ( const std::string &  rPattern) const

Find files in this folder matching a simple glob pattern. This method must be called on a FileFinder that points at a folder, and the pattern will be matched against file (or folder) names in that folder. The pattern can use a subset of shell-style glob syntax. A '?' anywhere in the string matches any single character at that position. A '*' may be used at the start or end of the string to match any number of leading or trailing characters, respectively. Hidden files (names starting with a '.') will never be matched.

Parameters:
rPatternthe pattern to match names against

Definition at line 327 of file FileFinder.cpp.

References EXCEPTION, FileFinder(), IsDir(), and mAbsPath.

Referenced by CylindricalHoneycombMeshGenerator::CylindricalHoneycombMeshGenerator(), HoneycombMeshGenerator::HoneycombMeshGenerator(), and AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM >::save().

std::string FileFinder::GetExtension ( ) const

Get the extension of the leaf name of this file or directory, if any. The '.' will be included in the extension if an extension exists.

Definition at line 219 of file FileFinder.cpp.

References mAbsPath.

Referenced by AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM >::save().

std::string FileFinder::GetLeafName ( ) const

Get the leaf name of this file or directory.

i.e. the individual file or directory name and none of the preceeding folders on its path.

Definition at line 209 of file FileFinder.cpp.

References mAbsPath.

Referenced by CellMLLoader::LoadCellMLFile().

std::string FileFinder::GetLeafNameNoExtension ( ) const

Get the leaf name of this file or directory, with any file extension removed.

i.e. the individual file or directory name and none of the preceeding folders on its path.

Definition at line 214 of file FileFinder.cpp.

References mAbsPath.

Referenced by CellMLLoader::LoadCellMLFile(), and AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM >::save().

FileFinder FileFinder::GetParent ( ) const

Get a finder for the folder containing this file or directory.

Definition at line 224 of file FileFinder.cpp.

References RelativeTo::Absolute, EXCEPT_IF_NOT, FileFinder(), and mAbsPath.

Referenced by AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM >::save(), and SetPath().

std::string FileFinder::GetRelativePath ( const FileFinder rBasePath) const

Get the relative path to this finder from another. Throws if this is not found under rBasePath.

Parameters:
rBasePathwhere the returned path should be relative to

Definition at line 233 of file FileFinder.cpp.

References EXCEPTION, and GetAbsolutePath().

Referenced by OutputFileHandler::OutputFileHandler().

bool FileFinder::IsAbsolutePath ( const std::string &  rPath) [static]
bool FileFinder::IsEmpty ( ) const

If this is a file, whether it has size zero. If this is a folder, whether it contains no non-hidden items. If this doesn't exist, throws.

Definition at line 167 of file FileFinder.cpp.

References EXCEPTION, IsDir(), IsFile(), and mAbsPath.

bool FileFinder::IsFile ( ) const

Are we pointing at a file?

Definition at line 157 of file FileFinder.cpp.

References mAbsPath.

Referenced by OutputFileHandler::CopyFileTo(), CopyTo(), IsEmpty(), and Remove().

bool FileFinder::IsNewerThan ( const FileFinder rOtherEntity) const

Test whether this file/dir is newer than another file/dir. Compares modification times.

Parameters:
rOtherEntitythe entity to test against.

Definition at line 202 of file FileFinder.cpp.

References Exists(), and mAbsPath.

Referenced by CellMLToSharedLibraryConverter::Convert().

bool FileFinder::IsPathSet ( ) const
void FileFinder::Remove ( bool  force = false) const

Recursively remove this file or folder. Since this is a potentially very dangerous operation, only locations under the Chaste test output folder may be removed. In addition, unless the optional parameter is true, only folders created by an OutputFileHandler, or the contents of such a folder, may be deleted.

Parameters:
forcewhether to allow deletion of content not created by an OutputFileHandler

Definition at line 289 of file FileFinder.cpp.

References EXCEPTION, Exists(), GetAbsolutePath(), OutputFileHandler::GetChasteTestOutputDirectory(), IsFile(), mAbsPath, and OutputFileHandler::SIG_FILE_NAME.

Referenced by CylindricalHoneycombMeshGenerator::CylindricalHoneycombMeshGenerator(), and HoneycombMeshGenerator::HoneycombMeshGenerator().

void FileFinder::ReplaceSpacesWithUnderscores ( std::string &  rPath) [static]

Replace any spaces in a path or filename with underscores.

Parameters:
rPatha path or file name

Definition at line 426 of file FileFinder.cpp.

void FileFinder::ReplaceUnderscoresWithSpaces ( std::string &  rPath) [static]

Replace any underscores in a path or filename with spaces (for making titles etc.).

Parameters:
rPatha path or file name

Definition at line 437 of file FileFinder.cpp.

void FileFinder::SetPath ( const std::string &  rLeafName,
const FileFinder rParentOrSibling 
)

Change this FileFinder to point at a new location, relative to some file or directory.

Parameters:
rLeafNamethe leaf name of the file/dir to find
rParentOrSiblingwhere to look for it

Definition at line 136 of file FileFinder.cpp.

References RelativeTo::Absolute, EXCEPTION, Exists(), GetAbsolutePath(), GetParent(), IsDir(), and SetPath().

void FileFinder::StopFaking ( ) [static]

Stop faking one of the fixed paths.

Definition at line 455 of file FileFinder.cpp.

References msFaking.


Member Data Documentation

std::string FileFinder::msFakePath = "" [static, private]

The fake value of the faked path.

Definition at line 280 of file FileFinder.hpp.

Referenced by FakePath(), and SetPath().

RelativeTo::Value FileFinder::msFakeWhat = RelativeTo::Absolute [static, private]

Which path to fake.

Definition at line 277 of file FileFinder.hpp.

Referenced by FakePath(), and SetPath().

bool FileFinder::msFaking = false [static, private]

Whether to fake one of the fixed paths, e.g. ChasteSourceRoot.

Definition at line 274 of file FileFinder.hpp.

Referenced by FakePath(), SetPath(), and StopFaking().


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