mirror of https://github.com/AxioDL/boo.git
HIDParser: Use std::array where applicable
Same thing, but strongly enforces the type of the array. This also allows removing the <type_traits> include, since we can just query the size of the array.
This commit is contained in:
parent
b0c246abc7
commit
14369a9853
|
@ -1,8 +1,8 @@
|
||||||
#include "boo/inputdev/HIDParser.hpp"
|
#include "boo/inputdev/HIDParser.hpp"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <array>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <type_traits>
|
|
||||||
|
|
||||||
#undef min
|
#undef min
|
||||||
#undef max
|
#undef max
|
||||||
|
@ -13,11 +13,14 @@ namespace boo {
|
||||||
* http://www.usb.org/developers/hidpage/HID1_11.pdf
|
* http://www.usb.org/developers/hidpage/HID1_11.pdf
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static const char* UsagePageNames[] = {"Undefined", "Generic Desktop", "Simulation", "VR", "Sport",
|
constexpr std::array<const char*, 14> UsagePageNames{
|
||||||
|
"Undefined", "Generic Desktop", "Simulation", "VR", "Sport",
|
||||||
"Game Controls", "Generic Device", "Keyboard", "LEDs", "Button",
|
"Game Controls", "Generic Device", "Keyboard", "LEDs", "Button",
|
||||||
"Ordinal", "Telephony", "Consumer", "Digitizer"};
|
"Ordinal", "Telephony", "Consumer", "Digitizer",
|
||||||
|
};
|
||||||
|
|
||||||
static const char* GenericDesktopUsages[] = {"Undefined",
|
constexpr std::array<const char*, 182> GenericDesktopUsages{
|
||||||
|
"Undefined",
|
||||||
"Pointer",
|
"Pointer",
|
||||||
"Mouse",
|
"Mouse",
|
||||||
"Reserved",
|
"Reserved",
|
||||||
|
@ -198,9 +201,11 @@ static const char* GenericDesktopUsages[] = {"Undefined",
|
||||||
"System Display External",
|
"System Display External",
|
||||||
"System Display Both",
|
"System Display Both",
|
||||||
"System Display Dual",
|
"System Display Dual",
|
||||||
"System Display Toggle Int/Ext"};
|
"System Display Toggle Int/Ext",
|
||||||
|
};
|
||||||
|
|
||||||
static const char* GameUsages[] = {"Undefined",
|
constexpr std::array<const char*, 58> GameUsages{
|
||||||
|
"Undefined",
|
||||||
"3D Game Controller",
|
"3D Game Controller",
|
||||||
"Pinball Device",
|
"Pinball Device",
|
||||||
"Gun Device",
|
"Gun Device",
|
||||||
|
@ -257,7 +262,8 @@ static const char* GameUsages[] = {"Undefined",
|
||||||
"Gun Safety",
|
"Gun Safety",
|
||||||
"Gemepad Fire/Jump",
|
"Gemepad Fire/Jump",
|
||||||
nullptr,
|
nullptr,
|
||||||
"Gamepad Trigger"};
|
"Gamepad Trigger",
|
||||||
|
};
|
||||||
|
|
||||||
enum class HIDCollectionType : uint8_t {
|
enum class HIDCollectionType : uint8_t {
|
||||||
Physical,
|
Physical,
|
||||||
|
@ -382,21 +388,31 @@ HIDMainItem::HIDMainItem(uint32_t flags, HIDUsagePage usagePage, HIDUsage usage,
|
||||||
, m_reportSize(reportSize) {}
|
, m_reportSize(reportSize) {}
|
||||||
|
|
||||||
const char* HIDMainItem::GetUsagePageName() const {
|
const char* HIDMainItem::GetUsagePageName() const {
|
||||||
if (int(m_usagePage) >= std::extent<decltype(UsagePageNames)>::value)
|
const auto index = size_t(m_usagePage);
|
||||||
|
|
||||||
|
if (index >= UsagePageNames.size()) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
return UsagePageNames[int(m_usagePage)];
|
}
|
||||||
|
|
||||||
|
return UsagePageNames[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* HIDMainItem::GetUsageName() const {
|
const char* HIDMainItem::GetUsageName() const {
|
||||||
|
const auto index = size_t(m_usage);
|
||||||
|
|
||||||
switch (m_usagePage) {
|
switch (m_usagePage) {
|
||||||
case HIDUsagePage::GenericDesktop:
|
case HIDUsagePage::GenericDesktop:
|
||||||
if (int(m_usage) >= std::extent<decltype(GenericDesktopUsages)>::value)
|
if (index >= GenericDesktopUsages.size()) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
return GenericDesktopUsages[int(m_usage)];
|
}
|
||||||
|
return GenericDesktopUsages[index];
|
||||||
|
|
||||||
case HIDUsagePage::Game:
|
case HIDUsagePage::Game:
|
||||||
if (int(m_usage) >= std::extent<decltype(GameUsages)>::value)
|
if (index >= GameUsages.size()) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
return GameUsages[int(m_usage)];
|
}
|
||||||
|
return GameUsages[index];
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue