From 3f92f86de18162799fc69ac5302b99a8cd8d8cf9 Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Tue, 25 Feb 2025 04:34:27 -0600 Subject: [PATCH] WiimoteEmu: Add a static_assert in DesiredExtensionState to keep variant alternative order consistent. --- .../Extension/DesiredExtensionState.h | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/Source/Core/Core/HW/WiimoteEmu/Extension/DesiredExtensionState.h b/Source/Core/Core/HW/WiimoteEmu/Extension/DesiredExtensionState.h index a61da143bc..f2d100bc48 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Extension/DesiredExtensionState.h +++ b/Source/Core/Core/HW/WiimoteEmu/Extension/DesiredExtensionState.h @@ -17,21 +17,42 @@ #include "Core/HW/WiimoteEmu/Extension/TaTaCon.h" #include "Core/HW/WiimoteEmu/Extension/Turntable.h" #include "Core/HW/WiimoteEmu/Extension/UDrawTablet.h" +#include "Core/HW/WiimoteEmu/ExtensionPort.h" namespace WiimoteEmu { struct DesiredExtensionState { private: + template + struct ExtNumTypePair + { + static constexpr ExtensionNumber ext_num = N; + using ext_type = T; + }; + template struct ExtDataImpl { - using type = std::variant; + using type = std::variant; + + static_assert((std::is_same_v, + typename Ts::ext_type::DesiredState> && + ...), + "Please use ExtensionNumber enum order for DTM file index consistency."); }; public: - using ExtensionData = ExtDataImpl::type; + using ExtensionData = + ExtDataImpl, + ExtNumTypePair, + ExtNumTypePair, + ExtNumTypePair, + ExtNumTypePair, + ExtNumTypePair, + ExtNumTypePair, + ExtNumTypePair, + ExtNumTypePair>::type; ExtensionData data = std::monostate{}; };