Elements 6.1.2
A C++ base framework for the Euclid Software.
Loading...
Searching...
No Matches
Path.h
Go to the documentation of this file.
1
35#ifndef ELEMENTSKERNEL_ELEMENTSKERNEL_PATH_H_
36#define ELEMENTSKERNEL_ELEMENTSKERNEL_PATH_H_
37
38#include <boost/filesystem.hpp> // for boost::filesystem
39#include <map> // for map
40#include <string> // for string
41#include <utility> // for forward
42#include <vector> // for vector
43
44#include "ElementsKernel/Export.h" // ELEMENTS_API
45
46namespace Elements {
47inline namespace Kernel {
48namespace Path {
49
51
56using Item = boost::filesystem::path;
57
63
69
76
82
88
104ELEMENTS_API std::vector<Item> getLocationsFromEnv(const std::string& path_variable, bool exist_only = false);
105
121ELEMENTS_API std::vector<Item> getLocations(const Type& path_type, bool exist_only = false);
122
139template <typename T, typename U>
140ELEMENTS_API Item getPathFromLocations(const T& file_name, const std::vector<U>& locations);
141// Template instantiation for the most common types
142extern template ELEMENTS_API Item getPathFromLocations(const Item& file_name, const std::vector<Item>& locations);
143extern template ELEMENTS_API Item getPathFromLocations(const Item& file_name,
144 const std::vector<std::string>& locations);
145extern template ELEMENTS_API Item getPathFromLocations(const std::string& file_name,
146 const std::vector<Item>& locations);
147extern template ELEMENTS_API Item getPathFromLocations(const std::string& file_name,
148 const std::vector<std::string>& locations);
149
166template <typename T, typename U>
168// Template instantiation for the most common types
170 const std::vector<Item>& locations);
172 const std::vector<std::string>& locations);
174 const std::vector<Item>& locations);
176 const std::vector<std::string>& locations);
177
191template <typename T>
192ELEMENTS_API Item getPathFromEnvVariable(const T& file_name, const std::string& path_variable);
193// Template instantiation for the most common types
194extern template ELEMENTS_API Item getPathFromEnvVariable<Item>(const Item& file_name, const std::string& path_variable);
196 const std::string& path_variable);
197
205template <typename T>
207// Template instantiation for the most common types
208extern template ELEMENTS_API std::string joinPath(const std::vector<Item>& path_list);
209
211
219template <typename... Args>
220ELEMENTS_API auto join(Args&&... args) -> decltype(joinPath(std::forward<Args>(args)...));
221
230
238template <typename... Args>
239ELEMENTS_API auto split(Args&&... args) -> decltype(splitPath(std::forward<Args>(args)...));
240
250template <typename T, typename U>
252// Template instantiation for the most common types
253extern template ELEMENTS_API std::vector<Item> multiPathAppend(const std::vector<Item>& initial_locations,
254 const std::vector<Item>& suffixes);
255extern template ELEMENTS_API std::vector<Item> multiPathAppend(const std::vector<Item>& initial_locations,
256 const std::vector<std::string>& suffixes);
258 const std::vector<Item>& suffixes);
260 const std::vector<std::string>& suffixes);
268template <typename T>
270// Template instantiation for the most common types
272
274
275} // namespace Path
276} // namespace Kernel
277} // namespace Elements
278
279#define ELEMENTSKERNEL_ELEMENTSKERNEL_PATH_IMPL_
281#undef ELEMENTSKERNEL_ELEMENTSKERNEL_PATH_IMPL_
282
283#endif // ELEMENTSKERNEL_ELEMENTSKERNEL_PATH_H_
284
defines the macros to be used for explicit export of the symbols
ELEMENTS_API const std::map< Type, const std::vector< std::string > > SUFFIXES
map containing the default project installation suffixes for each variable
Definition: Path.cpp:52
ELEMENTS_API const std::map< Type, const std::vector< std::string > > DEFAULT_LOCATIONS
map containing the default external locations for each variable
Definition: Path.cpp:58
ELEMENTS_API std::vector< Item > 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
ELEMENTS_API std::vector< Item > getLocationsFromEnv(const std::string &path_variable, bool exist_only=false)
function to get the locations from an environment variable
Definition: Path.cpp:70
ELEMENTS_API auto join(Args &&... args) -> decltype(joinPath(std::forward< Args >(args)...))
alias for the joinPath function
ELEMENTS_API std::vector< Item > removeDuplicates(const std::vector< T > &path_list)
remove duplicated paths keeping the order
ELEMENTS_API std::string joinPath(const std::vector< T > &path_list)
collate a vector of path into a string using PATH_SEP
#define ELEMENTS_API
Dummy definitions for the backward compatibility mode.
Definition: Export.h:74
ELEMENTS_API auto split(Args &&... args) -> decltype(splitPath(std::forward< Args >(args)...))
alias for the splitPath function
ELEMENTS_API Item 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::map< Type, const std::string > VARIABLE
map containing the name of the path variable for each type
Definition: Path.cpp:46
ELEMENTS_API std::vector< Item > splitPath(const std::string &path_string)
split a string into a vector of path using PATH_SEP
Definition: Path.cpp:92
ELEMENTS_API const std::map< Type, const bool > HAS_SUBLEVELS
map containing the sub-level property of the path components
Definition: Path.cpp:64
ELEMENTS_API std::vector< Item > getLocations(const Type &path_type, bool exist_only=false)
function to get the locations for the specific type
Definition: Path.cpp:88
ELEMENTS_API const std::string PATH_SEP
Separator of path entries. Usually ":" on Unix.
Definition: Path.cpp:44
ELEMENTS_API Item 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< Item > multiPathAppend(const std::vector< T > &initial_locations, const std::vector< U > &suffixes)
path join each suffix to each initial locations
template ELEMENTS_API Item getPathFromEnvVariable< Item >(const Item &file_name, const std::string &path_variable)
template ELEMENTS_API Item getPathFromEnvVariable< std::string >(const std::string &file_name, const std::string &path_variable)
boost::filesystem::path Item
Definition: Path.h:56