opynsim
Unofficial C++ Documentation
Loading...
Searching...
No Matches
key_combination.h
Go to the documentation of this file.
1#pragma once
2
6
7#include <cstddef>
8#include <functional>
9
10namespace osc
11{
12 // Represents a combination of a single `Key` with zero or more `KeyModifier`s.
14 public:
15 constexpr KeyCombination(Key key = Key::Unknown) : key_{key} {}
16 constexpr KeyCombination(KeyModifiers modifiers, Key key) : modifiers_{modifiers}, key_{key} {}
17
18 friend bool operator==(const KeyCombination&, const KeyCombination&) = default;
19
20 constexpr Key key() const { return key_; }
21 constexpr KeyModifiers modifiers() const { return modifiers_; }
22 private:
23 KeyModifiers modifiers_{};
24 Key key_ = Key::Unknown;
25 };
26
27 constexpr KeyCombination operator|(KeyModifiers modifiers, Key key)
28 {
29 return KeyCombination{modifiers, key};
30 }
31}
32
33template<>
34struct std::hash<osc::KeyCombination> final {
35 size_t operator()(const osc::KeyCombination& kc) const noexcept
36 {
37 return osc::hash_of(kc.key(), kc.modifiers());
38 }
39};
Definition key_combination.h:13
friend bool operator==(const KeyCombination &, const KeyCombination &)=default
constexpr KeyModifiers modifiers() const
Definition key_combination.h:21
constexpr KeyCombination(Key key=Key::Unknown)
Definition key_combination.h:15
constexpr KeyCombination(KeyModifiers modifiers, Key key)
Definition key_combination.h:16
constexpr Key key() const
Definition key_combination.h:20
Definition custom_decoration_generator.h:5
constexpr KeyCombination operator|(KeyModifiers modifiers, Key key)
Definition key_combination.h:27
size_t hash_of(const T &v) noexcept(noexcept(std::hash< T >{}(v)))
Definition hash_helpers.h:24
Key
Definition key.h:6
constexpr U to(T &&value)
Definition conversion.h:56
size_t operator()(const osc::KeyCombination &kc) const noexcept
Definition key_combination.h:35