The Gaudi Framework  master (594c33fa)
System::PathResolver Class Reference

#include </builds/gaudi/Gaudi/GaudiKernel/include/GaudiKernel/PathResolver.h>

Public Types

enum  SearchPathStatus { Ok, EnvironmentVariableUndefined, UnknownDirectory }
 
enum  SearchType { LocalSearch, RecursiveSearch }
 

Static Public Member Functions

static std::string find_file (const std::string &logical_file_name, const std::string &search_path, SearchType search_type=LocalSearch)
 
static std::string find_file_from_list (const std::string &logical_file_name, const std::string &search_list, SearchType search_type=LocalSearch)
 
static std::string find_directory (const std::string &logical_file_name, const std::string &search_path, SearchType search_type=LocalSearch)
 
static std::string find_directory_from_list (const std::string &logical_file_name, const std::string &search_list, SearchType search_type=LocalSearch)
 
static SearchPathStatus check_search_path (const std::string &search_path)
 

Detailed Description

Definition at line 19 of file PathResolver.h.

Member Enumeration Documentation

◆ SearchPathStatus

Enumerator
Ok 
EnvironmentVariableUndefined 
UnknownDirectory 

Definition at line 23 of file PathResolver.h.

◆ SearchType

Enumerator
LocalSearch 
RecursiveSearch 

Definition at line 25 of file PathResolver.h.

Member Function Documentation

◆ check_search_path()

PathResolver::SearchPathStatus System::PathResolver::check_search_path ( const std::string search_path)
static
  • search_path the name of a path-like environment variable
Returns
the result of the verification. Can be one of Ok, EnvironmentVariableUndefined, UnknownDirectory

Definition at line 174 of file PathResolver.cpp.

174  {
175  std::string path_list;
176  if ( !System::getEnv( search_path, path_list ) ) return ( EnvironmentVariableUndefined );
177 
178  vector<string> spv;
179  boost::split( spv, path_list, boost::is_any_of( path_separator ), boost::token_compress_on );
180 
181  try {
182  for ( const auto& itr : spv ) {
183  bf::path pp( itr );
184  if ( !is_directory( pp ) ) { return ( UnknownDirectory ); }
185  }
186  } catch ( const bf::filesystem_error& /*err*/ ) { return ( UnknownDirectory ); }
187 
188  return ( Ok );
189  }

◆ find_directory()

string System::PathResolver::find_directory ( const std::string logical_file_name,
const std::string search_path,
SearchType  search_type = LocalSearch 
)
static
  • logical_file_name the name of the directory to locate in the search path
  • search_path the name of a path-like environment variable
  • search_type characterizes the type of search. Can be either LocalSearch or RecursiveSearch
Returns
the physical name of the located directory or empty string if not found

Definition at line 153 of file PathResolver.cpp.

154  {
155  std::string path_list;
156  System::getEnv( search_path, path_list );
157 
158  return ( find_directory_from_list( logical_file_name, path_list, search_type ) );
159  }

◆ find_directory_from_list()

string System::PathResolver::find_directory_from_list ( const std::string logical_file_name,
const std::string search_list,
SearchType  search_type = LocalSearch 
)
static
  • logical_file_name the name of the directory to locate in the search path
  • search_list the prioritized list of possible locations separated by the usual path separator
  • search_type characterizes the type of search. Can be either LocalSearch or RecursiveSearch
Returns
the physical name of the located directory or empty string if not found

Definition at line 163 of file PathResolver.cpp.

164  {
165  std::string result;
166 
167  if ( !PR_find( logical_file_name, search_list, PR_directory, search_type, result ) ) { result = ""; }
168 
169  return ( result );
170  }

◆ find_file()

string System::PathResolver::find_file ( const std::string logical_file_name,
const std::string search_path,
SearchType  search_type = LocalSearch 
)
static
  • logical_file_name the name of the file to locate in the search path
  • search_path the name of a path-like environment variable
  • search_type characterizes the type of search. Can be either LocalSearch or RecursiveSearch
Returns
the physical name of the located file or empty string if not found

Definition at line 118 of file PathResolver.cpp.

119  {
120 
121  std::string path_list;
122  System::getEnv( search_path, path_list );
123 
124  return ( find_file_from_list( logical_file_name, path_list, search_type ) );
125  }

◆ find_file_from_list()

std::string System::PathResolver::find_file_from_list ( const std::string logical_file_name,
const std::string search_list,
SearchType  search_type = LocalSearch 
)
static
  • logical_file_name the name of the file to locate in the search path
  • search_list the prioritized list of possible locations separated by the usual path separator
  • search_type characterizes the type of search. Can be either LocalSearch or RecursiveSearch
Returns
the physical name of the located file or empty string if not found

Definition at line 129 of file PathResolver.cpp.

130  {
131  std::string result( "" );
132 
133  bf::path lfn( logical_file_name );
134 
135  /* bool found = */
136  PR_find( lfn, search_list, PR_regular_file, search_type, result );
137 
138  // The following functionality was in the original PathResolver, but I believe
139  // that it's WRONG. It extracts the filename of the requested item, and searches
140  // for that if the preceding search fails. i.e., if you're looking for "B/a.txt",
141  // and that fails, it will look for just "a.txt" in the search list.
142 
143  // if (! found && lfn.filename() != lfn ) {
144  // result = "";
145  // PR_find (lfn.filename(), search_list, PR_regular_file, search_type, result);
146  // }
147 
148  return ( result );
149  }

The documentation for this class was generated from the following files:
std::string
STL class.
GaudiAlg.HistoUtils.path
path
Definition: HistoUtils.py:960
System::getEnv
GAUDI_API std::string getEnv(const char *var)
get a particular environment variable (returning "UNKNOWN" if not set)
Definition: System.cpp:388
std::vector
STL class.
System::PathResolver::RecursiveSearch
@ RecursiveSearch
Definition: PathResolver.h:25
System::PathResolver::EnvironmentVariableUndefined
@ EnvironmentVariableUndefined
Definition: PathResolver.h:23
System::PathResolver::UnknownDirectory
@ UnknownDirectory
Definition: PathResolver.h:23
System::PathResolver::Ok
@ Ok
Definition: PathResolver.h:23
System::PR_regular_file
@ PR_regular_file
Definition: PathResolver.cpp:45
System::PR_directory
@ PR_directory
Definition: PathResolver.cpp:45
System::PathResolver::find_directory_from_list
static std::string find_directory_from_list(const std::string &logical_file_name, const std::string &search_list, SearchType search_type=LocalSearch)
Definition: PathResolver.cpp:163
System::PathResolver::LocalSearch
@ LocalSearch
Definition: PathResolver.h:25
compareOutputFiles.pp
pp
Definition: compareOutputFiles.py:507
System::PathResolver::SearchType
SearchType
Definition: PathResolver.h:25
System::PathResolver::SearchPathStatus
SearchPathStatus
Definition: PathResolver.h:23
System::PathResolver::find_file_from_list
static std::string find_file_from_list(const std::string &logical_file_name, const std::string &search_list, SearchType search_type=LocalSearch)
Definition: PathResolver.cpp:129