LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
ConfigurationTable.h
Go to the documentation of this file.
1 #ifndef fhiclcpp_types_ConfigurationTable_h
2 #define fhiclcpp_types_ConfigurationTable_h
3 
4 #include "cetlib/exempt_ptr.h"
5 #include "fhiclcpp/types/Table.h"
6 
7 namespace fhicl {
8 
9  class ParameterSet;
10  namespace detail {
11  class ParameterBase;
12  }
13 
15  public:
16  virtual ~ConfigurationTable() = default;
17 
18  cet::exempt_ptr<fhicl::detail::ParameterBase const>
20  {
21  return get_parameter_base();
22  }
23 
24  private:
25  virtual cet::exempt_ptr<fhicl::detail::ParameterBase const>
26  get_parameter_base() const = 0;
27  };
28 
29  template <typename T, typename KeysToIgnore = void>
31  public:
32  WrappedTable(fhicl::Name&& name) : table_{std::move(name)} {}
33  WrappedTable(fhicl::ParameterSet const& pset) : table_{pset} {}
34  auto const&
35  operator()() const
36  {
37  return table_();
38  }
39  auto const&
40  get_PSet() const
41  {
42  return table_.get_PSet();
43  }
44 
45  private:
47  cet::exempt_ptr<fhicl::detail::ParameterBase const>
48  get_parameter_base() const override
49  {
50  return &table_;
51  }
52  };
53 }
54 
55 // Local variables:
56 // mode: c++
57 // End:
58 #endif /* fhiclcpp_types_ConfigurationTable_h */
cet::exempt_ptr< fhicl::detail::ParameterBase const > parameter_base() const
WrappedTable(fhicl::ParameterSet const &pset)
auto const & get_PSet() const
parameter set interface
cet::exempt_ptr< fhicl::detail::ParameterBase const > get_parameter_base() const override
auto const & operator()() const
WrappedTable(fhicl::Name &&name)
fhicl::Table< T, KeysToIgnore > table_