File indexing completed on 2025-01-18 09:14:50
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #ifndef DETECTOR_PARAMETERMAP_H
0016 #define DETECTOR_PARAMETERMAP_H 1
0017
0018
0019
0020
0021 #include <string>
0022 #include <map>
0023
0024
0025 namespace gaudi {
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038 class ParameterMap final {
0039 public:
0040
0041
0042
0043
0044
0045
0046 class Parameter final {
0047 public:
0048 std::string value;
0049 std::string type;
0050 public:
0051 Parameter() = default;
0052 Parameter(Parameter&& copy) = default;
0053 Parameter(const Parameter& copy) = default;
0054 Parameter(const std::string& v, const std::string& t)
0055 : value(v), type(t) {}
0056 Parameter& operator=(const Parameter& copy) = default;
0057 bool operator==(const Parameter& copy) const
0058 { return value == copy.value && type == copy.type; }
0059
0060 template <typename T> T get() const;
0061 };
0062
0063 typedef std::map<std::string,Parameter> Parameters;
0064
0065 protected:
0066
0067 Parameters m_params;
0068
0069
0070 const Parameter& _param(const std::string& nam) const;
0071 public:
0072
0073 ParameterMap() = default;
0074
0075 ParameterMap(const ParameterMap& copy) = default;
0076
0077 ~ParameterMap() = default;
0078
0079 ParameterMap& operator=(const ParameterMap& copy) = default;
0080
0081 bool exists(const std::string& nam) const
0082 { return m_params.find(nam) != m_params.end(); }
0083
0084 bool set(const std::string& nam, const std::string& val, const std::string& type);
0085
0086 const Parameters& params() const { return m_params; }
0087
0088 const Parameter& parameter(const std::string& nam, bool throw_if_not_present=true) const;
0089
0090 template <typename T> T param(const std::string& nam, bool throw_if_not_present=true) const;
0091 };
0092 }
0093 #endif