WindowApiFactory.cpp 977 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*
  2. * author: Patrick-Christopher Mattulat
  3. * e-mail: webmaster@lynarstudios.com
  4. */
  5. #include <factory/WindowApiFactory.hpp>
  6. #include <ls-std/core/exception/IllegalArgumentException.hpp>
  7. #include <window/SdlWindowApi.hpp>
  8. using ls::atlantis::factory::WindowApiFactory;
  9. using ls::atlantis::glossary::WindowApiTypes;
  10. using ls::atlantis::interfaces::IWindowApi;
  11. using ls::atlantis::window::SdlWindowApi;
  12. using ls::std::core::IllegalArgumentException;
  13. using ::std::make_shared;
  14. using ::std::shared_ptr;
  15. WindowApiFactory::WindowApiFactory() = default;
  16. WindowApiFactory::~WindowApiFactory() = default;
  17. shared_ptr<IWindowApi> WindowApiFactory::build(const WindowApiTypes &_windowApis)
  18. {
  19. shared_ptr<IWindowApi> windowApi{};
  20. switch (_windowApis)
  21. {
  22. case WindowApiTypes::NONE_SELECTED:
  23. {
  24. throw IllegalArgumentException{};
  25. }
  26. case WindowApiTypes::SDL_WINDOW_API:
  27. {
  28. windowApi = make_shared<SdlWindowApi>();
  29. } break;
  30. }
  31. return windowApi;
  32. }