Elements  6.2
A C++ base framework for the Euclid Software.
Configuration.cpp
Go to the documentation of this file.
1 
24 
25 #include <algorithm> // for remove_if
26 #include <iterator>
27 #include <map>
28 #include <string> // for string
29 #include <vector> // for vector
30 
31 #include <boost/filesystem/operations.hpp> // for exists
32 
33 #include "ElementsKernel/Path.h" // for Path::VARIABLE, Path::Type
34 #include "ElementsKernel/System.h" // for DEFAULT_INSTALL_PREFIX
35 
36 using std::string;
37 
38 namespace Elements {
39 inline namespace Kernel {
40 
43 }
44 
45 // Instantiation of the most expected types
46 template Path::Item getConfigurationPath(const Path::Item& file_name, bool raise_exception);
47 template Path::Item getConfigurationPath(const string& file_name, bool raise_exception);
48 
50 
51  auto location_list = Path::getLocations(Path::Type::configuration, exist_only);
52 
53  // the search is extended to the default system /usr/share/conf
54  location_list.emplace_back(Path::Item(System::DEFAULT_INSTALL_PREFIX) / "share" / "conf");
55 
56  if (exist_only) {
57  auto new_end = std::remove_if(location_list.begin(), location_list.end(), [](const Path::Item& p) {
58  return (not boost::filesystem::exists(p));
59  });
60  location_list.erase(new_end, location_list.end());
61  }
62 
63  return location_list;
64 }
65 
66 namespace Configuration {
67 
68 string getVariableName() {
70 }
71 
72 // instantiation of the most expected types
73 template Path::Item getPath(const Path::Item& file_name, bool raise_exception);
74 template Path::Item getPath(const std::string& file_name, bool raise_exception);
75 
77  return getConfigurationLocations(exist_only);
78 }
79 
80 } // namespace Configuration
81 
82 } // namespace Kernel
83 } // namespace Elements
Elements::Kernel::Path::Item
boost::filesystem::path Item
Definition: Path.h:56
System.h
This file is intended to iron out all the differences between systems (currently Linux and MacOSX)
Elements::Kernel::Auxiliary::getVariableName
ELEMENTS_API std::string getVariableName()
alias for the getAuxiliaryVariableName function
Definition: Auxiliary.cpp:72
std::string
STL class.
Elements::Kernel::getConfigurationPath
ELEMENTS_API Path::Item getConfigurationPath(const T &file_name, bool raise_exception=true)
Path.h
provide functions to retrieve resources pointed by environment variables
std::vector
STL class.
Elements::Kernel::Path::getLocations
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::Kernel::Path::VARIABLE
const ELEMENTS_API std::map< Type, const std::string > VARIABLE
map containing the name of the path variable for each type
Definition: Path.cpp:46
Elements::Kernel::getConfigurationVariableName
ELEMENTS_API std::string getConfigurationVariableName()
retrieve the variable name used for the configuration file lookup
Definition: Configuration.cpp:41
Elements::Kernel::getConfigurationLocations
ELEMENTS_API std::vector< Path::Item > getConfigurationLocations(bool exist_only=false)
Definition: Configuration.cpp:49
std::remove_if
T remove_if(T... args)
Elements::Kernel::Auxiliary::getLocations
ELEMENTS_API std::vector< Path::Item > getLocations(bool exist_only=false)
alias for the getAuxiliaryLocations function
Definition: Auxiliary.cpp:80
Elements::Kernel::Auxiliary::getPath
ELEMENTS_API Path::Item getPath(const T &file_name, bool raise_exception=true)
alias for the getAuxiliaryPath function
Elements::System::DEFAULT_INSTALL_PREFIX
const std::string DEFAULT_INSTALL_PREFIX
constant for the canonical installation prefix (on Linux and MacOSX at least)
Definition: System.h:90
Configuration.h
provide functions to retrieve configuration files
Elements::Kernel::Path::Type::configuration
@ configuration
Elements
Definition: callBackExample.h:35