Gaudi Framework, version v22r0

Home   Generated: 9 Feb 2011

DirSearchPath Class Reference

search for files in a list of directories More...

#include <DirSearchPath.h>

Collaboration diagram for DirSearchPath:
Collaboration graph
[legend]

List of all members.

Classes

class  eqPath
 name More...

Public Types

typedef boost::filesystem::path path

Public Member Functions

constructors

 DirSearchPath ()
 DirSearchPath (const std::string &stringifiedPath, const char *separator=",:")
modifiers

bool add (const path &dir)
bool addCWD ()
 add current work dir (*nix pwd) to path
accessors

bool find (const std::string &fileName, std::string &fullFileName) const
 returns a flag if fileName found in search path, and sets ref to fully qualified file name (in native form)
bool find (const path &file, path &fileFound) const
 returns a flag if file found in search path. Sets ref to completed path
std::list< pathfind_all (const path &file) const
 returns lists of files found in search path.

Static Public Member Functions

helpers

static bool existsDir (const std::string &dirName)
 check dirName is valid
static bool existsDir (const path &dir)
 check dir path is valid

Private Attributes

std::list< pathm_dirs
 the dir container

Detailed Description

search for files in a list of directories

Author:
Paolo Calafiura <pcalafiura@lbl.gov> - ATLAS Collaboration
Id
DirSearchPath.h,v 1.2 2007/10/16 15:37:25 marcocle Exp

Definition at line 19 of file DirSearchPath.h.


Member Typedef Documentation

typedef boost::filesystem::path DirSearchPath::path

Definition at line 21 of file DirSearchPath.h.


Constructor & Destructor Documentation

DirSearchPath::DirSearchPath (  )  [inline]

Definition at line 25 of file DirSearchPath.h.

00025 { addCWD(); }

DirSearchPath::DirSearchPath ( const std::string stringifiedPath,
const char *  separator = ",:" 
)
Exceptions:
boost::filesystem::filesystem_error 

Definition at line 25 of file DirSearchPath.cpp.

00025                                                                                     {
00026   addCWD(); //FIXME is this a good idea?
00027 
00028   typedef  tokenizer<char_separator<char> > Tokenizer;
00029 
00030   Tokenizer tok(stringifiedPath, char_separator<char>(separator));
00031 
00032 
00033   //add names to dir container, filtering dir names to remove invalid ones
00034   //notice how we iterate over all tokens even if there is an illegal one
00035   Tokenizer::iterator it = tok.begin();
00036   while(it != tok.end()) {
00037     try {
00038       //path p( *(it++), boost::filesystem::native);
00039       // For some reason native() does not work with boost 1.31. Changed to no_check and cross the fingers....
00040       path p( *(it++), boost::filesystem::no_check);
00041       add(p);
00042     }
00043     catch (boost::filesystem::filesystem_error /*err*/) {
00044     }
00045   }
00046 }


Member Function Documentation

bool DirSearchPath::add ( const path dir  ) 
Exceptions:
filesystem_error 

Definition at line 67 of file DirSearchPath.cpp.

00067                                        {
00068   bool dirExist(existsDir(dir));
00069   //add dir to path even if dir does not (yet) exist,
00070   // but don't add twice same dir
00071   if (m_dirs.end() == std::find_if(m_dirs.begin(), m_dirs.end(), eqPath(dir)))
00072     m_dirs.push_back(dir);
00073   return dirExist;
00074 }

bool DirSearchPath::addCWD (  ) 

add current work dir (*nix pwd) to path

Definition at line 63 of file DirSearchPath.cpp.

00063                            {
00064   return add(boost::filesystem::current_path());
00065 }

bool DirSearchPath::existsDir ( const path dir  )  [static]

check dir path is valid

Definition at line 122 of file DirSearchPath.cpp.

00122                                              {
00123   return (exists(dir) && is_directory(dir));
00124 }

bool DirSearchPath::existsDir ( const std::string dirName  )  [static]

check dirName is valid

Definition at line 115 of file DirSearchPath.cpp.

00115                                                       {
00116   bool rc(false);
00117   try {
00118     rc=is_directory(path(dirName));
00119   } catch(...) {}
00120   return rc;
00121 }

bool DirSearchPath::find ( const path file,
path fileFound 
) const

returns a flag if file found in search path. Sets ref to completed path

Definition at line 88 of file DirSearchPath.cpp.

00088                                                                 {
00089   bool rc(false);
00090   for (std::list<path>::const_iterator iDir=m_dirs.begin(); iDir!=m_dirs.end(); ++iDir) {
00091     path full(*iDir / file);
00092     if (exists(full)) {
00093       fileFound = full;
00094       rc = true;
00095       break;
00096     }
00097   }
00098   return rc;
00099 }

bool DirSearchPath::find ( const std::string fileName,
std::string fullFileName 
) const

returns a flag if fileName found in search path, and sets ref to fully qualified file name (in native form)

Definition at line 77 of file DirSearchPath.cpp.

00077                                                                            {
00078   bool rc(false);
00079   try {
00080     path fileFound;
00081     if ( (rc = find(path(fileName), fileFound)) )
00082       fullFileName = fileFound.native_directory_string();
00083   } catch (...) {}
00084   return rc;
00085 }

std::list< DirSearchPath::path > DirSearchPath::find_all ( const path file  )  const

returns lists of files found in search path.

Definition at line 103 of file DirSearchPath.cpp.

00103                                               {
00104   std::list<path> found;
00105   for (std::list<path>::const_iterator iDir=m_dirs.begin(); iDir!=m_dirs.end(); ++iDir) {
00106     path full(*iDir / file);
00107     if (exists(full)) {
00108       found.push_back(full);
00109     }
00110   }
00111   return found;
00112 }


Member Data Documentation

the dir container

Definition at line 81 of file DirSearchPath.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines

Generated at Wed Feb 9 16:30:31 2011 for Gaudi Framework, version v22r0 by Doxygen version 1.6.2 written by Dimitri van Heesch, © 1997-2004