DIOSBoardFactory.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include "stdafx.h"
  2. #include "DIOSBoardFactory.h"
  3. #include "DIOSBoardController.h"
  4. #include "DoNothingDiosBoard.h"
  5. using namespace DIOS::Dev::Detail::MachineryECOM;
  6. DIOSBoardFactory *DIOSBoardFactory::m_instance = nullptr;
  7. DIOSBoardFactory::DIOSBoardFactory()
  8. {
  9. }
  10. DIOSBoardFactory::~DIOSBoardFactory()
  11. {
  12. for each (auto pair in m_boards)
  13. {
  14. if (pair.second)
  15. {
  16. delete pair.second;
  17. }
  18. }
  19. }
  20. DIOSBoardFactory *DIOSBoardFactory::Instance()
  21. {
  22. if (m_instance == nullptr)
  23. {
  24. m_instance = new DIOSBoardFactory();
  25. }
  26. return m_instance;
  27. }
  28. IDIOSBoardController *DIOSBoardFactory::CreateSingleton(const std::string &typeName)
  29. {
  30. IDIOSBoardController *controller = nullptr;
  31. if (m_boards.find(typeName) != m_boards.end())
  32. {
  33. controller = m_boards[typeName];
  34. return controller;
  35. }
  36. if (typeName == ECOM_DIOSBOARD)
  37. {
  38. controller = new DIOSBoardController();
  39. m_boards.insert(make_pair(typeName, controller));
  40. }
  41. else if (typeName == DONOTHING_DIOSBOARD)
  42. {
  43. controller = new DoNothingDiosBoard();
  44. m_boards.insert(make_pair(typeName, controller));
  45. }
  46. return controller;
  47. }