#include "stdafx.h" #include "DIOSBoardFactory.h" #include "DIOSBoardController.h" #include "DoNothingDiosBoard.h" using namespace DIOS::Dev::Detail::MachineryECOM; DIOSBoardFactory *DIOSBoardFactory::m_instance = nullptr; DIOSBoardFactory::DIOSBoardFactory() { } DIOSBoardFactory::~DIOSBoardFactory() { for each (auto pair in m_boards) { if (pair.second) { delete pair.second; } } } DIOSBoardFactory *DIOSBoardFactory::Instance() { if (m_instance == nullptr) { m_instance = new DIOSBoardFactory(); } return m_instance; } IDIOSBoardController *DIOSBoardFactory::CreateSingleton(const std::string &typeName) { IDIOSBoardController *controller = nullptr; if (m_boards.find(typeName) != m_boards.end()) { controller = m_boards[typeName]; return controller; } if (typeName == ECOM_DIOSBOARD) { controller = new DIOSBoardController(); m_boards.insert(make_pair(typeName, controller)); } else if (typeName == DONOTHING_DIOSBOARD) { controller = new DoNothingDiosBoard(); m_boards.insert(make_pair(typeName, controller)); } return controller; }