TrafficRulesFactory.h
Go to the documentation of this file.
1 #pragma once
3 
4 namespace lanelet {
5 struct Locations {
6  static constexpr char Germany[] = "de";
7 };
8 
9 // participants are defined in lanelet2_core/Attributes.h
10 
11 namespace traffic_rules {
12 
14  public:
16  void registerStrategy(const std::string& location, const std::string& participant,
17  const FactoryFcn& factoryFunction) {
18  registry_[std::make_pair(location, participant)] = factoryFunction;
19  }
20 
25  static TrafficRulesUPtr create(const std::string& location, const std::string& participant,
27 
32  static std::vector<std::pair<std::string, std::string>> availableTrafficRules();
33 
34  static TrafficRulesFactory& instance();
35 
36  private:
37  TrafficRulesFactory() = default;
38  std::map<std::pair<std::string, std::string>, FactoryFcn> registry_;
39 };
40 
52 template <class T>
54  public:
55  RegisterTrafficRules(const std::string& location, const std::string& participant) {
56  // initialize
58  location, participant,
59  +[](const TrafficRules::Configuration& config) -> TrafficRulesUPtr { return std::make_unique<T>(config); });
60  }
61 };
62 } // namespace traffic_rules
63 } // namespace lanelet
lanelet::traffic_rules::TrafficRulesUPtr
std::unique_ptr< TrafficRules > TrafficRulesUPtr
Definition: GenericTrafficRules.h:23
lanelet
lanelet::traffic_rules::TrafficRulesFactory::registry_
std::map< std::pair< std::string, std::string >, FactoryFcn > registry_
Definition: TrafficRulesFactory.h:38
lanelet::traffic_rules::TrafficRulesFactory::FactoryFcn
std::function< TrafficRulesUPtr(const TrafficRules::Configuration &)> FactoryFcn
Definition: TrafficRulesFactory.h:15
lanelet::Locations
Definition: TrafficRulesFactory.h:5
lanelet::traffic_rules::TrafficRulesFactory::TrafficRulesFactory
TrafficRulesFactory()=default
lanelet::traffic_rules::TrafficRulesFactory
Definition: TrafficRulesFactory.h:13
lanelet::traffic_rules::RegisterTrafficRules::RegisterTrafficRules
RegisterTrafficRules(const std::string &location, const std::string &participant)
Definition: TrafficRulesFactory.h:55
lanelet::traffic_rules::TrafficRulesFactory::instance
static TrafficRulesFactory & instance()
Definition: TrafficRulesFactory.cpp:33
lanelet::Locations::Germany
static constexpr char Germany[]
Definition: TrafficRulesFactory.h:6
lanelet::traffic_rules::RegisterTrafficRules
template class for registering new TrafficRules for a certain location and type.
Definition: TrafficRulesFactory.h:53
lanelet::traffic_rules::TrafficRulesFactory::create
static TrafficRulesUPtr create(const std::string &location, const std::string &participant, TrafficRules::Configuration configuration=TrafficRules::Configuration())
Definition: TrafficRulesFactory.cpp:10
lanelet::traffic_rules::TrafficRulesFactory::availableTrafficRules
static std::vector< std::pair< std::string, std::string > > availableTrafficRules()
returns registered traffic rules by location and participant
Definition: TrafficRulesFactory.cpp:27
lanelet::traffic_rules::TrafficRules::Configuration
std::map< std::string, Attribute > Configuration
Definition: TrafficRules.h:20
lanelet::traffic_rules::TrafficRulesFactory::registerStrategy
void registerStrategy(const std::string &location, const std::string &participant, const FactoryFcn &factoryFunction)
Definition: TrafficRulesFactory.h:16
TrafficRules.h


lanelet2_traffic_rules
Author(s): Fabian Poggenhans
autogenerated on Thu Mar 6 2025 03:26:07