Covellite++  Version: 2.3.0 Revision: ??? Platform: x64 Build: 23:13 04.01.2025
Кроссплатформенный фреймворк для разработки приложений на С++
Загрузка...
Поиск...
Не найдено
Events.inl
1
2#pragma once
3#include <Covellite/Events/Signal.hpp>
4
5namespace covellite
6{
7
8namespace events
9{
10
11template<class T, bool>
12class Id
13{
14public:
15 inline size_t operator() (const T & _Value) const
16 {
17 // Вычисление значения идентификатора для события любого типа.
18 return ::std::hash<T>()(_Value);
19 }
20};
21
22template<class T>
23class Id<T, true>
24{
25public:
26 inline size_t operator() (const T & _Value)
27 {
28 // Отдельная реализация вычисления значения идентификатора для enum
29 // потребовалась из-за того, что в Android версии компиляция вычисления
30 // хеша для enum завершается с ошибкой.
31 return _Value;
32 }
33};
34
44template<class TType>
45inline auto Events::operator[] (const TType & _Id) -> Signal
46{
47 return Signal{ *this, typeid(TType).hash_code(),
48 Id<TType, ::std::is_enum<TType>::value>{}(_Id)};
49}
50
51} // namespace events
52
53} // namespace covellite
Класс входит в проект Covellite.Events Вспомогательный класс для доступа к сигналу конкретного собы...
Definition Signal.hpp:30