ExaTN
contraction_seq_optimizer_factory.hpp
1 
11 #ifndef EXATN_NUMERICS_CONTRACTION_SEQ_OPTIMIZER_FACTORY_HPP_
12 #define EXATN_NUMERICS_CONTRACTION_SEQ_OPTIMIZER_FACTORY_HPP_
13 
14 #include "tensor_basic.hpp"
15 #include "contraction_seq_optimizer.hpp"
16 #include "contraction_seq_optimizer_dummy.hpp"
17 #include "contraction_seq_optimizer_heuro.hpp"
18 
19 #include <string>
20 #include <memory>
21 #include <map>
22 
23 namespace exatn{
24 
25 namespace numerics{
26 
28 public:
29 
33  ContractionSeqOptimizerFactory & operator=(ContractionSeqOptimizerFactory &&) noexcept = default;
34  ~ContractionSeqOptimizerFactory() = default;
35 
37  void registerContractionSeqOptimizer(const std::string & name, createContractionSeqOptimizerFn creator);
38 
40  std::unique_ptr<ContractionSeqOptimizer> createContractionSeqOptimizer(const std::string & name);
42  std::shared_ptr<ContractionSeqOptimizer> createContractionSeqOptimizerShared(const std::string & name);
43 
46 
47 private:
48 
49  ContractionSeqOptimizerFactory(); //private ctor
50 
51  std::map<std::string,createContractionSeqOptimizerFn> factory_map_;
52 
53 };
54 
55 } //namespace numerics
56 
57 } //namespace exatn
58 
59 #endif //EXATN_NUMERICS_CONTRACTION_SEQ_OPTIMIZER_FACTORY_HPP_
exatn::numerics::ContractionSeqOptimizerFactory::get
static ContractionSeqOptimizerFactory * get()
Definition: contraction_seq_optimizer_factory.cpp:38
exatn
Definition: DriverClient.hpp:10
exatn::numerics::ContractionSeqOptimizerFactory::registerContractionSeqOptimizer
void registerContractionSeqOptimizer(const std::string &name, createContractionSeqOptimizerFn creator)
Definition: contraction_seq_optimizer_factory.cpp:19
exatn::numerics::ContractionSeqOptimizerFactory::createContractionSeqOptimizer
std::unique_ptr< ContractionSeqOptimizer > createContractionSeqOptimizer(const std::string &name)
Definition: contraction_seq_optimizer_factory.cpp:26
exatn::numerics::ContractionSeqOptimizerFactory::createContractionSeqOptimizerShared
std::shared_ptr< ContractionSeqOptimizer > createContractionSeqOptimizerShared(const std::string &name)
Definition: contraction_seq_optimizer_factory.cpp:33
exatn::numerics::ContractionSeqOptimizerFactory
Definition: contraction_seq_optimizer_factory.hpp:27