21 #ifndef ELEMENTSKERNEL__IMPL_PATH_ICPP_
22 #define ELEMENTSKERNEL__IMPL_PATH_ICPP_
29 #include <boost/filesystem.hpp>
30 #include <boost/algorithm/string/join.hpp>
36 template <
typename T,
typename U>
42 path file_path {file_name};
46 return boost::filesystem::exists(
path {l} / file_path);
49 if (found_pos != locations.
cend()) {
50 found_path =
path {*found_pos} / file_path;
57 template <
typename T,
typename U>
63 path file_path {file_name};
68 return path {l} / file_path;
71 auto found_pos =
std::remove_if(file_list.begin(), file_list.end(),
73 return not boost::filesystem::exists(p);
76 file_list.erase(found_pos, file_list.end());
102 vector<string> elems(path_list.
size());
115 template <
typename T,
typename U>
121 vector<path> result(initial_locations.
size()*suffixes.
size());
123 auto pos = result.begin();
126 [&pos, &suffixes](T l) {
132 pos += suffixes.
size();
143 #endif // ELEMENTSKERNEL__IMPL_PATH_ICPP_
boost::filesystem::path getPathFromEnvVariable(const T &file_name, const std::string &path_variable)
retrieve path from a file name and an environment variable to look into
ELEMENTS_API std::vector< boost::filesystem::path > getLocationsFromEnv(const std::string &path_variable, bool exist_only=false)
function to get the locations from an environment variable
std::vector< boost::filesystem::path > getAllPathFromLocations(const T &file_name, const std::vector< U > &locations)
retrieve all the paths from a file name and a set of location to look into
boost::filesystem::path path
std::vector< boost::filesystem::path > multiPathAppend(const std::vector< T > &initial_locations, const std::vector< U > &suffixes)
std::string joinPath(const std::vector< T > path_list)
collate a vector of path into a string using PATH_SEP
boost::filesystem::path getPathFromLocations(const T &file_name, const std::vector< U > &locations)
retrieve path from a file name and a set of location to look into
ELEMENTS_API const std::string PATH_SEP
Separator of path entries. Usually ":" on Unix.