InputMap.hpp 591 B

1234567891011121314151617181920212223242526272829303132
  1. #pragma once
  2. #include <unordered_map>
  3. #include "Input.hpp"
  4. template<typename T = int>
  5. class InputMap
  6. {
  7. public:
  8. InputMap(const InputMap& copy) = delete;
  9. InputMap<T>& operator=(const InputMap<T>& copy) = delete;
  10. InputMap() = default;
  11. void map(const T& key, const Input& input)
  12. {
  13. _map.emplace(key, input);
  14. }
  15. void duoMap(const T& key, const Input& input1, const Input& input2)
  16. {
  17. _map.emplace(key, input1);
  18. _map.emplace(-key, input2);
  19. }
  20. const Input& get(const T& key) const
  21. {
  22. return _map.at(key);
  23. }
  24. private:
  25. std::unordered_map<T, Input> _map;
  26. };