9#include <lib/support/CHIPMem.h>
28template <
typename T,
typename DeviceType,
typename... Args>
class DeviceFactory {
31 using CreationMap = std::map<DeviceType, ConcreteDeviceCreator>;
33 DeviceFactory(std::initializer_list<std::pair<DeviceType, ConcreteDeviceCreator>> init)
35 for (
auto &pair : init) {
36 mCreationMap.insert(pair);
47 T *
Create(DeviceType deviceType, Args... params)
49 if (mCreationMap.find(deviceType) == mCreationMap.end()) {
52 return mCreationMap[deviceType](params...);
DeviceFactory(DeviceFactory &&)=delete
DeviceFactory & operator=(const DeviceFactory &)=delete
DeviceFactory(std::initializer_list< std::pair< DeviceType, ConcreteDeviceCreator > > init)
Definition bridge_util.h:33
std::function< T *(Args...)> ConcreteDeviceCreator
Definition bridge_util.h:30
std::map< DeviceType, ConcreteDeviceCreator > CreationMap
Definition bridge_util.h:31
DeviceFactory & operator=(DeviceFactory &&)=delete
DeviceFactory(const DeviceFactory &)=delete
T * Create(DeviceType deviceType, Args... params)
Definition bridge_util.h:47
Definition bridge_util.h:28
Definition ble_connectivity_manager.h:21