inputmodule.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. ///////////////////////////////////////////////////////////////////////////////////////
  2. /// \file inputmodule.cpp
  3. /// \brief Implemenation file for inputmodule.h
  4. ///
  5. /// \author Joe Siltberg
  6. /// $Date: 2013-07-17 09:22:52 +0200 (Wed, 17 Jul 2013) $
  7. ///
  8. ///////////////////////////////////////////////////////////////////////////////////////
  9. #include "config.h"
  10. #include "inputmodule.h"
  11. #include "guess.h"
  12. ///////////////////////////////////////////////////////////////////////////////////////
  13. /// InputModuleRegistry
  14. ///
  15. InputModuleRegistry& InputModuleRegistry::get_instance() {
  16. static InputModuleRegistry instance;
  17. return instance;
  18. }
  19. void InputModuleRegistry::register_input_module(const char* name,
  20. InputModuleCreator imc) {
  21. modules.insert(make_pair(std::string(name), imc));
  22. }
  23. InputModule* InputModuleRegistry::create_input_module(const char* name) const {
  24. std::map<std::string, InputModuleCreator>::const_iterator itr = modules.find(name);
  25. if (itr != modules.end()) {
  26. return (itr->second)();
  27. }
  28. else {
  29. fail("Couldn't find input module %s\n", name);
  30. return 0;
  31. }
  32. }
  33. void InputModuleRegistry::get_input_module_list(std::string& list) {
  34. list = "";
  35. std::map<std::string, InputModuleCreator>::iterator it = modules.begin();
  36. while (it!=modules.end()) {
  37. list += it->first + ";";
  38. it++;
  39. }
  40. }