ExaTN
network_build_factory.hpp
1 
11 #ifndef EXATN_NUMERICS_NETWORK_BUILD_FACTORY_HPP_
12 #define EXATN_NUMERICS_NETWORK_BUILD_FACTORY_HPP_
13 
14 #include "tensor_basic.hpp"
15 #include "network_builder.hpp"
16 #include "network_builder_mps.hpp"
17 #include "network_builder_tree.hpp"
18 
19 #include <string>
20 #include <memory>
21 #include <map>
22 
23 namespace exatn{
24 
25 namespace numerics{
26 
28 public:
29 
30  NetworkBuildFactory(const NetworkBuildFactory &) = delete;
31  NetworkBuildFactory & operator=(const NetworkBuildFactory &) = delete;
32  NetworkBuildFactory(NetworkBuildFactory &&) noexcept = default;
33  NetworkBuildFactory & operator=(NetworkBuildFactory &&) noexcept = default;
34  ~NetworkBuildFactory() = default;
35 
37  void registerNetworkBuilder(const std::string & name, createNetworkBuilderFn creator);
38 
40  std::unique_ptr<NetworkBuilder> createNetworkBuilder(const std::string & name);
42  std::shared_ptr<NetworkBuilder> createNetworkBuilderShared(const std::string & name);
43 
45  static NetworkBuildFactory * get();
46 
47 private:
48 
49  NetworkBuildFactory(); //private ctor
50 
51  std::map<std::string,createNetworkBuilderFn> factory_map_;
52 
53 };
54 
55 } //namespace numerics
56 
57 } //namespace exatn
58 
59 #endif //EXATN_NUMERICS_NETWORK_BUILD_FACTORY_HPP_
exatn
Definition: DriverClient.hpp:10
exatn::numerics::NetworkBuildFactory::get
static NetworkBuildFactory * get()
Definition: network_build_factory.cpp:37
exatn::numerics::NetworkBuildFactory::registerNetworkBuilder
void registerNetworkBuilder(const std::string &name, createNetworkBuilderFn creator)
Definition: network_build_factory.cpp:19
exatn::numerics::NetworkBuildFactory::createNetworkBuilder
std::unique_ptr< NetworkBuilder > createNetworkBuilder(const std::string &name)
Definition: network_build_factory.cpp:25
exatn::numerics::NetworkBuildFactory
Definition: network_build_factory.hpp:27
exatn::numerics::NetworkBuildFactory::createNetworkBuilderShared
std::shared_ptr< NetworkBuilder > createNetworkBuilderShared(const std::string &name)
Definition: network_build_factory.cpp:32