From 4b2f40a634ae76ca0e98898f847354da21b7bb9a Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 22 Jan 2017 23:53:13 -0500 Subject: [PATCH 1/4] Attachment: Make class members non-public --- .../Core/Core/HW/WiimoteEmu/Attachment/Attachment.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h index 65fe781f9d..1a452ed292 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h @@ -20,15 +20,16 @@ public: void Reset(); std::string GetName() const override; - const char* const name; - WiimoteEmu::ExtensionReg& reg; +protected: + // Default radius for attachment analog sticks. + static constexpr ControlState DEFAULT_ATTACHMENT_STICK_RADIUS = 1.0; u8 id[6]; u8 calibration[0x10]; -protected: - // Default radius for attachment analog sticks. - static constexpr ControlState DEFAULT_ATTACHMENT_STICK_RADIUS = 1.0; +private: + const char* const name; + WiimoteEmu::ExtensionReg& reg; }; class None : public Attachment From c87ee2a00e77c62007fe35b9a6859484b18c2886 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Mon, 23 Jan 2017 00:10:25 -0500 Subject: [PATCH 2/4] Attachment: Use std::array over C arrays --- .../HW/WiimoteEmu/Attachment/Attachment.cpp | 26 ++++---- .../HW/WiimoteEmu/Attachment/Attachment.h | 15 +++-- .../Core/HW/WiimoteEmu/Attachment/Classic.cpp | 64 ++++++++++--------- .../Core/HW/WiimoteEmu/Attachment/Classic.h | 2 +- .../Core/HW/WiimoteEmu/Attachment/Drums.cpp | 38 +++++------ .../Core/HW/WiimoteEmu/Attachment/Drums.h | 2 +- .../Core/HW/WiimoteEmu/Attachment/Guitar.cpp | 44 ++++++------- .../Core/HW/WiimoteEmu/Attachment/Guitar.h | 2 +- .../Core/HW/WiimoteEmu/Attachment/Nunchuk.cpp | 25 ++++---- .../Core/HW/WiimoteEmu/Attachment/Nunchuk.h | 5 +- .../HW/WiimoteEmu/Attachment/Turntable.cpp | 37 +++++------ .../Core/HW/WiimoteEmu/Attachment/Turntable.h | 2 +- 12 files changed, 131 insertions(+), 131 deletions(-) diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.cpp b/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.cpp index 8047189be8..2047050de3 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.cpp @@ -2,45 +2,45 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. +#include "Core/HW/WiimoteEmu/Attachment/Attachment.h" + +#include +#include #include #include "Common/Common.h" #include "Common/CommonTypes.h" -#include "Core/HW/WiimoteEmu/Attachment/Attachment.h" #include "Core/HW/WiimoteEmu/WiimoteEmu.h" namespace WiimoteEmu { // Extension device IDs to be written to the last bytes of the extension reg // The id for nothing inserted -static const u8 nothing_id[] = {0x00, 0x00, 0x00, 0x00, 0x2e, 0x2e}; +constexpr std::array nothing_id{{0x00, 0x00, 0x00, 0x00, 0x2e, 0x2e}}; // The id for a partially inserted extension (currently unused) -UNUSED static const u8 partially_id[] = {0x00, 0x00, 0x00, 0x00, 0xff, 0xff}; +UNUSED constexpr std::array partially_id{{0x00, 0x00, 0x00, 0x00, 0xff, 0xff}}; -Attachment::Attachment(const char* const _name, WiimoteEmu::ExtensionReg& _reg) - : name(_name), reg(_reg) +Attachment::Attachment(const char* const name, ExtensionReg& reg) : m_name(name), m_reg(reg) { - memset(id, 0, sizeof(id)); - memset(calibration, 0, sizeof(calibration)); } -None::None(WiimoteEmu::ExtensionReg& _reg) : Attachment("None", _reg) +None::None(ExtensionReg& reg) : Attachment("None", reg) { // set up register - memcpy(&id, nothing_id, sizeof(nothing_id)); + m_id = nothing_id; } std::string Attachment::GetName() const { - return name; + return m_name; } void Attachment::Reset() { // set up register - memset(®, 0, WIIMOTE_REG_EXT_SIZE); - memcpy(®.constant_id, id, sizeof(id)); - memcpy(®.calibration, calibration, sizeof(calibration)); + m_reg = {}; + std::copy(m_id.cbegin(), m_id.cend(), m_reg.constant_id); + std::copy(m_calibration.cbegin(), m_calibration.cend(), m_reg.calibration); } } diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h index 1a452ed292..385c79efe0 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h @@ -4,6 +4,9 @@ #pragma once +#include +#include +#include "Common/CommonTypes.h" #include "InputCommon/ControllerEmu.h" namespace WiimoteEmu @@ -13,7 +16,7 @@ struct ExtensionReg; class Attachment : public ControllerEmu { public: - Attachment(const char* const _name, WiimoteEmu::ExtensionReg& _reg); + Attachment(const char* const name, ExtensionReg& reg); virtual void GetState(u8* const data) {} virtual bool IsButtonPressed() const { return false; } @@ -24,17 +27,17 @@ protected: // Default radius for attachment analog sticks. static constexpr ControlState DEFAULT_ATTACHMENT_STICK_RADIUS = 1.0; - u8 id[6]; - u8 calibration[0x10]; + std::array m_id{}; + std::array m_calibration{}; private: - const char* const name; - WiimoteEmu::ExtensionReg& reg; + const char* const m_name; + ExtensionReg& m_reg; }; class None : public Attachment { public: - None(WiimoteEmu::ExtensionReg& _reg); + None(ExtensionReg& reg); }; } diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.cpp b/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.cpp index 4197322d24..76d35e63b1 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.cpp @@ -2,45 +2,51 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. +#include "Core/HW/WiimoteEmu/Attachment/Classic.h" + +#include #include -#include #include "Common/Common.h" #include "Common/CommonTypes.h" -#include "Core/HW/WiimoteEmu/Attachment/Classic.h" #include "Core/HW/WiimoteEmu/WiimoteEmu.h" namespace WiimoteEmu { -static const u8 classic_id[] = {0x00, 0x00, 0xa4, 0x20, 0x01, 0x01}; -/* Classic Controller calibration */ -static const u8 classic_calibration[] = {0xff, 0x00, 0x80, 0xff, 0x00, 0x80, 0xff, 0x00, - 0x80, 0xff, 0x00, 0x80, 0x00, 0x00, 0x51, 0xa6}; +constexpr std::array classic_id{{0x00, 0x00, 0xa4, 0x20, 0x01, 0x01}}; -static const u16 classic_button_bitmasks[] = { - Classic::BUTTON_A, Classic::BUTTON_B, Classic::BUTTON_X, Classic::BUTTON_Y, +// Classic Controller calibration +constexpr std::array classic_calibration{{ + 0xff, 0x00, 0x80, 0xff, 0x00, 0x80, 0xff, 0x00, 0x80, 0xff, 0x00, 0x80, 0x00, 0x00, 0x51, 0xa6, +}}; - Classic::BUTTON_ZL, Classic::BUTTON_ZR, +constexpr std::array classic_button_bitmasks{{ + Classic::BUTTON_A, Classic::BUTTON_B, Classic::BUTTON_X, Classic::BUTTON_Y, + + Classic::BUTTON_ZL, Classic::BUTTON_ZR, Classic::BUTTON_MINUS, Classic::BUTTON_PLUS, Classic::BUTTON_HOME, -}; +}}; -static const char* const classic_button_names[] = { +constexpr std::array classic_button_names{{ "A", "B", "X", "Y", "ZL", "ZR", "-", "+", "Home", -}; +}}; -static const u16 classic_trigger_bitmasks[] = { +constexpr std::array classic_trigger_bitmasks{{ Classic::TRIGGER_L, Classic::TRIGGER_R, -}; +}}; -static const char* const classic_trigger_names[] = {"L", "R", "L-Analog", "R-Analog"}; +constexpr std::array classic_trigger_names{{ + "L", "R", "L-Analog", "R-Analog", +}}; -static const u16 classic_dpad_bitmasks[] = {Classic::PAD_UP, Classic::PAD_DOWN, Classic::PAD_LEFT, - Classic::PAD_RIGHT}; +constexpr std::array classic_dpad_bitmasks{{ + Classic::PAD_UP, Classic::PAD_DOWN, Classic::PAD_LEFT, Classic::PAD_RIGHT, +}}; -Classic::Classic(WiimoteEmu::ExtensionReg& _reg) : Attachment(_trans("Classic"), _reg) +Classic::Classic(ExtensionReg& reg) : Attachment(_trans("Classic"), reg) { // buttons groups.emplace_back(m_buttons = new Buttons("Buttons")); @@ -63,11 +69,9 @@ Classic::Classic(WiimoteEmu::ExtensionReg& _reg) : Attachment(_trans("Classic"), for (auto& named_direction : named_directions) m_dpad->controls.emplace_back(new ControlGroup::Input(named_direction)); - // set up register - // calibration - memcpy(&calibration, classic_calibration, sizeof(classic_calibration)); - // id - memcpy(&id, classic_id, sizeof(classic_id)); + // Set up register + m_calibration = classic_calibration; + m_id = classic_id; } void Classic::GetState(u8* const data) @@ -107,7 +111,7 @@ void Classic::GetState(u8* const data) { ControlState trigs[2] = {0, 0}; u8 lt, rt; - m_triggers->GetState(&ccdata->bt.hex, classic_trigger_bitmasks, trigs); + m_triggers->GetState(&ccdata->bt.hex, classic_trigger_bitmasks.data(), trigs); lt = static_cast(trigs[0] * Classic::LEFT_TRIGGER_RANGE); rt = static_cast(trigs[1] * Classic::RIGHT_TRIGGER_RANGE); @@ -118,9 +122,9 @@ void Classic::GetState(u8* const data) } // buttons - m_buttons->GetState(&ccdata->bt.hex, classic_button_bitmasks); + m_buttons->GetState(&ccdata->bt.hex, classic_button_bitmasks.data()); // dpad - m_dpad->GetState(&ccdata->bt.hex, classic_dpad_bitmasks); + m_dpad->GetState(&ccdata->bt.hex, classic_dpad_bitmasks.data()); // flip button bits ccdata->bt.hex ^= 0xFFFF; @@ -129,10 +133,10 @@ void Classic::GetState(u8* const data) bool Classic::IsButtonPressed() const { u16 buttons = 0; - ControlState trigs[2] = {0, 0}; - m_buttons->GetState(&buttons, classic_button_bitmasks); - m_dpad->GetState(&buttons, classic_dpad_bitmasks); - m_triggers->GetState(&buttons, classic_trigger_bitmasks, trigs); + std::array trigs{}; + m_buttons->GetState(&buttons, classic_button_bitmasks.data()); + m_dpad->GetState(&buttons, classic_dpad_bitmasks.data()); + m_triggers->GetState(&buttons, classic_trigger_bitmasks.data(), trigs.data()); return buttons != 0; } diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.h index 4d46c9f9cb..cb91969b44 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.h @@ -14,7 +14,7 @@ struct ExtensionReg; class Classic : public Attachment { public: - Classic(WiimoteEmu::ExtensionReg& _reg); + Classic(ExtensionReg& reg); void GetState(u8* const data) override; bool IsButtonPressed() const override; diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.cpp b/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.cpp index 6fd871b89a..91672ddbfa 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.cpp @@ -2,31 +2,34 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. +#include "Core/HW/WiimoteEmu/Attachment/Drums.h" + +#include #include -#include #include "Common/Common.h" #include "Common/CommonTypes.h" -#include "Core/HW/WiimoteEmu/Attachment/Drums.h" #include "Core/HW/WiimoteEmu/WiimoteEmu.h" namespace WiimoteEmu { -static const u8 drums_id[] = {0x01, 0x00, 0xa4, 0x20, 0x01, 0x03}; +constexpr std::array drums_id{{0x01, 0x00, 0xa4, 0x20, 0x01, 0x03}}; -static const u16 drum_pad_bitmasks[] = { - Drums::PAD_RED, Drums::PAD_YELLOW, Drums::PAD_BLUE, - Drums::PAD_GREEN, Drums::PAD_ORANGE, Drums::PAD_BASS, -}; +constexpr std::array drum_pad_bitmasks{{ + Drums::PAD_RED, Drums::PAD_YELLOW, Drums::PAD_BLUE, Drums::PAD_GREEN, Drums::PAD_ORANGE, + Drums::PAD_BASS, +}}; -static const char* const drum_pad_names[] = {_trans("Red"), _trans("Yellow"), _trans("Blue"), - _trans("Green"), _trans("Orange"), _trans("Bass")}; +constexpr std::array drum_pad_names{{ + _trans("Red"), _trans("Yellow"), _trans("Blue"), _trans("Green"), _trans("Orange"), + _trans("Bass"), +}}; -static const u16 drum_button_bitmasks[] = { +constexpr std::array drum_button_bitmasks{{ Drums::BUTTON_MINUS, Drums::BUTTON_PLUS, -}; +}}; -Drums::Drums(WiimoteEmu::ExtensionReg& _reg) : Attachment(_trans("Drums"), _reg) +Drums::Drums(ExtensionReg& reg) : Attachment(_trans("Drums"), reg) { // pads groups.emplace_back(m_pads = new Buttons(_trans("Pads"))); @@ -42,8 +45,7 @@ Drums::Drums(WiimoteEmu::ExtensionReg& _reg) : Attachment(_trans("Drums"), _reg) m_buttons->controls.emplace_back(new ControlGroup::Input("+")); // set up register - // id - memcpy(&id, drums_id, sizeof(drums_id)); + m_id = drums_id; } void Drums::GetState(u8* const data) @@ -67,9 +69,9 @@ void Drums::GetState(u8* const data) data[3] = 0xFF; // buttons - m_buttons->GetState(&ddata->bt, drum_button_bitmasks); + m_buttons->GetState(&ddata->bt, drum_button_bitmasks.data()); // pads - m_pads->GetState(&ddata->bt, drum_pad_bitmasks); + m_pads->GetState(&ddata->bt, drum_pad_bitmasks.data()); // flip button bits ddata->bt ^= 0xFFFF; @@ -78,8 +80,8 @@ void Drums::GetState(u8* const data) bool Drums::IsButtonPressed() const { u16 buttons = 0; - m_buttons->GetState(&buttons, drum_button_bitmasks); - m_pads->GetState(&buttons, drum_pad_bitmasks); + m_buttons->GetState(&buttons, drum_button_bitmasks.data()); + m_pads->GetState(&buttons, drum_pad_bitmasks.data()); return buttons != 0; } diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.h index a01827b2ea..75c201b9be 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.h @@ -14,7 +14,7 @@ struct ExtensionReg; class Drums : public Attachment { public: - Drums(WiimoteEmu::ExtensionReg& _reg); + Drums(ExtensionReg& reg); void GetState(u8* const data) override; bool IsButtonPressed() const override; diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.cpp b/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.cpp index 04a949c23f..6bb6080dd2 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.cpp @@ -2,36 +2,37 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. +#include "Core/HW/WiimoteEmu/Attachment/Guitar.h" + +#include #include -#include #include "Common/Common.h" #include "Common/CommonTypes.h" -#include "Core/HW/WiimoteEmu/Attachment/Guitar.h" #include "Core/HW/WiimoteEmu/WiimoteEmu.h" namespace WiimoteEmu { -static const u8 guitar_id[] = {0x00, 0x00, 0xa4, 0x20, 0x01, 0x03}; +constexpr std::array guitar_id{{0x00, 0x00, 0xa4, 0x20, 0x01, 0x03}}; -static const u16 guitar_fret_bitmasks[] = { - Guitar::FRET_GREEN, Guitar::FRET_RED, Guitar::FRET_YELLOW, - Guitar::FRET_BLUE, Guitar::FRET_ORANGE, -}; +constexpr std::array guitar_fret_bitmasks{{ + Guitar::FRET_GREEN, Guitar::FRET_RED, Guitar::FRET_YELLOW, Guitar::FRET_BLUE, + Guitar::FRET_ORANGE, +}}; -static const char* const guitar_fret_names[] = { +constexpr std::array guitar_fret_names{{ "Green", "Red", "Yellow", "Blue", "Orange", -}; +}}; -static const u16 guitar_button_bitmasks[] = { +constexpr std::array guitar_button_bitmasks{{ Guitar::BUTTON_MINUS, Guitar::BUTTON_PLUS, -}; +}}; -static const u16 guitar_strum_bitmasks[] = { +constexpr std::array guitar_strum_bitmasks{{ Guitar::BAR_UP, Guitar::BAR_DOWN, -}; +}}; -Guitar::Guitar(WiimoteEmu::ExtensionReg& _reg) : Attachment(_trans("Guitar"), _reg) +Guitar::Guitar(ExtensionReg& reg) : Attachment(_trans("Guitar"), reg) { // frets groups.emplace_back(m_frets = new Buttons(_trans("Frets"))); @@ -56,8 +57,7 @@ Guitar::Guitar(WiimoteEmu::ExtensionReg& _reg) : Attachment(_trans("Guitar"), _r m_whammy->controls.emplace_back(new ControlGroup::Input(_trans("Bar"))); // set up register - // id - memcpy(&id, guitar_id, sizeof(guitar_id)); + m_id = guitar_id; } void Guitar::GetState(u8* const data) @@ -85,11 +85,11 @@ void Guitar::GetState(u8* const data) gdata->whammy = static_cast(whammy * 0x1F); // buttons - m_buttons->GetState(&gdata->bt, guitar_button_bitmasks); + m_buttons->GetState(&gdata->bt, guitar_button_bitmasks.data()); // frets - m_frets->GetState(&gdata->bt, guitar_fret_bitmasks); + m_frets->GetState(&gdata->bt, guitar_fret_bitmasks.data()); // strum - m_strum->GetState(&gdata->bt, guitar_strum_bitmasks); + m_strum->GetState(&gdata->bt, guitar_strum_bitmasks.data()); // flip button bits gdata->bt ^= 0xFFFF; @@ -98,9 +98,9 @@ void Guitar::GetState(u8* const data) bool Guitar::IsButtonPressed() const { u16 buttons = 0; - m_buttons->GetState(&buttons, guitar_button_bitmasks); - m_frets->GetState(&buttons, guitar_fret_bitmasks); - m_strum->GetState(&buttons, guitar_strum_bitmasks); + m_buttons->GetState(&buttons, guitar_button_bitmasks.data()); + m_frets->GetState(&buttons, guitar_fret_bitmasks.data()); + m_strum->GetState(&buttons, guitar_strum_bitmasks.data()); return buttons != 0; } diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.h index 6076e8ebc4..b0455a36c1 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.h @@ -14,7 +14,7 @@ struct ExtensionReg; class Guitar : public Attachment { public: - Guitar(WiimoteEmu::ExtensionReg& _reg); + Guitar(ExtensionReg& reg); void GetState(u8* const data) override; bool IsButtonPressed() const override; diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.cpp b/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.cpp index 527e2cbd6a..61eb70adfe 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.cpp @@ -2,24 +2,25 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. +#include "Core/HW/WiimoteEmu/Attachment/Nunchuk.h" + +#include #include -#include #include "Common/Common.h" #include "Common/CommonTypes.h" #include "Common/MathUtil.h" -#include "Core/HW/WiimoteEmu/Attachment/Nunchuk.h" #include "Core/HW/WiimoteEmu/WiimoteEmu.h" namespace WiimoteEmu { -static const u8 nunchuk_id[] = {0x00, 0x00, 0xa4, 0x20, 0x00, 0x00}; +constexpr std::array nunchuk_id{{0x00, 0x00, 0xa4, 0x20, 0x00, 0x00}}; -static const u8 nunchuk_button_bitmasks[] = { +constexpr std::array nunchuk_button_bitmasks{{ Nunchuk::BUTTON_C, Nunchuk::BUTTON_Z, -}; +}}; -Nunchuk::Nunchuk(WiimoteEmu::ExtensionReg& _reg) : Attachment(_trans("Nunchuk"), _reg) +Nunchuk::Nunchuk(ExtensionReg& reg) : Attachment(_trans("Nunchuk"), reg) { // buttons groups.emplace_back(m_buttons = new Buttons("Buttons")); @@ -41,11 +42,7 @@ Nunchuk::Nunchuk(WiimoteEmu::ExtensionReg& _reg) : Attachment(_trans("Nunchuk"), m_shake->controls.emplace_back(new ControlGroup::Input("Y")); m_shake->controls.emplace_back(new ControlGroup::Input("Z")); - // id - memcpy(&id, nunchuk_id, sizeof(nunchuk_id)); - - // this should get set to 0 on disconnect, but it isn't, o well - memset(m_shake_step, 0, sizeof(m_shake_step)); + m_id = nunchuk_id; } void Nunchuk::GetState(u8* const data) @@ -84,9 +81,9 @@ void Nunchuk::GetState(u8* const data) // swing EmulateSwing(&accel, m_swing); // shake - EmulateShake(&accel, m_shake, m_shake_step); + EmulateShake(&accel, m_shake, m_shake_step.data()); // buttons - m_buttons->GetState(&ncdata->bt.hex, nunchuk_button_bitmasks); + m_buttons->GetState(&ncdata->bt.hex, nunchuk_button_bitmasks.data()); // flip the button bits :/ ncdata->bt.hex ^= 0x03; @@ -111,7 +108,7 @@ void Nunchuk::GetState(u8* const data) bool Nunchuk::IsButtonPressed() const { u8 buttons = 0; - m_buttons->GetState(&buttons, nunchuk_button_bitmasks); + m_buttons->GetState(&buttons, nunchuk_button_bitmasks.data()); return buttons != 0; } diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.h index f9e904466e..2071b19815 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.h @@ -4,6 +4,7 @@ #pragma once +#include #include "Core/HW/WiimoteEmu/Attachment/Attachment.h" namespace WiimoteEmu @@ -14,7 +15,7 @@ struct ExtensionReg; class Nunchuk : public Attachment { public: - Nunchuk(WiimoteEmu::ExtensionReg& _reg); + Nunchuk(ExtensionReg& reg); void GetState(u8* const data) override; bool IsButtonPressed() const override; @@ -51,6 +52,6 @@ private: Buttons* m_buttons; AnalogStick* m_stick; - u8 m_shake_step[3]; + std::array m_shake_step{}; }; } diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.cpp b/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.cpp index 3fcf8e7f15..f09cdcd0ab 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.cpp @@ -2,37 +2,31 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. +#include "Core/HW/WiimoteEmu/Attachment/Turntable.h" + +#include #include -#include #include "Common/Common.h" #include "Common/CommonTypes.h" -#include "Core/HW/WiimoteEmu/Attachment/Turntable.h" #include "Core/HW/WiimoteEmu/WiimoteEmu.h" namespace WiimoteEmu { -static const u8 turntable_id[] = {0x03, 0x00, 0xa4, 0x20, 0x01, 0x03}; +constexpr std::array turntable_id{{0x03, 0x00, 0xa4, 0x20, 0x01, 0x03}}; -static const u16 turntable_button_bitmasks[] = { +constexpr std::array turntable_button_bitmasks{{ Turntable::BUTTON_L_GREEN, Turntable::BUTTON_L_RED, Turntable::BUTTON_L_BLUE, Turntable::BUTTON_R_GREEN, Turntable::BUTTON_R_RED, Turntable::BUTTON_R_BLUE, - Turntable::BUTTON_MINUS, Turntable::BUTTON_PLUS, Turntable::BUTTON_EUPHORIA, -}; + Turntable::BUTTON_MINUS, Turntable::BUTTON_PLUS, Turntable::BUTTON_EUPHORIA, +}}; -static const char* const turntable_button_names[] = { - _trans("Green Left"), - _trans("Red Left"), - _trans("Blue Left"), - _trans("Green Right"), - _trans("Red Right"), - _trans("Blue Right"), - "-", - "+", - _trans("Euphoria"), -}; +constexpr std::array turntable_button_names{{ + _trans("Green Left"), _trans("Red Left"), _trans("Blue Left"), _trans("Green Right"), + _trans("Red Right"), _trans("Blue Right"), "-", "+", _trans("Euphoria"), +}}; -Turntable::Turntable(WiimoteEmu::ExtensionReg& _reg) : Attachment(_trans("Turntable"), _reg) +Turntable::Turntable(ExtensionReg& reg) : Attachment(_trans("Turntable"), reg) { // buttons groups.emplace_back(m_buttons = new Buttons("Buttons")); @@ -54,8 +48,7 @@ Turntable::Turntable(WiimoteEmu::ExtensionReg& _reg) : Attachment(_trans("Turnta groups.emplace_back(m_crossfade = new Slider(_trans("Crossfade"))); // set up register - // id - memcpy(&id, turntable_id, sizeof(turntable_id)); + m_id = turntable_id; } void Turntable::GetState(u8* const data) @@ -119,7 +112,7 @@ void Turntable::GetState(u8* const data) } // buttons - m_buttons->GetState(&ttdata->bt, turntable_button_bitmasks); + m_buttons->GetState(&ttdata->bt, turntable_button_bitmasks.data()); // flip button bits :/ ttdata->bt ^= (BUTTON_L_GREEN | BUTTON_L_RED | BUTTON_L_BLUE | BUTTON_R_GREEN | BUTTON_R_RED | @@ -129,7 +122,7 @@ void Turntable::GetState(u8* const data) bool Turntable::IsButtonPressed() const { u16 buttons = 0; - m_buttons->GetState(&buttons, turntable_button_bitmasks); + m_buttons->GetState(&buttons, turntable_button_bitmasks.data()); return buttons != 0; } diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.h index cf085fb8b6..5985f47180 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.h @@ -14,7 +14,7 @@ struct ExtensionReg; class Turntable : public Attachment { public: - Turntable(WiimoteEmu::ExtensionReg& _reg); + Turntable(ExtensionReg& reg); void GetState(u8* const data) override; bool IsButtonPressed() const override; From 34262ee3d84c10310cd23cfc712a703710adff09 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Mon, 23 Jan 2017 01:17:08 -0500 Subject: [PATCH 3/4] Attachment: Move implementation details into the cpp file --- .../Core/Core/HW/WiimoteEmu/Attachment/Attachment.cpp | 11 ++++++++++- .../Core/Core/HW/WiimoteEmu/Attachment/Attachment.h | 7 ++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.cpp b/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.cpp index 2047050de3..f3294c0a92 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.cpp @@ -30,6 +30,15 @@ None::None(ExtensionReg& reg) : Attachment("None", reg) m_id = nothing_id; } +void Attachment::GetState(u8* const data) +{ +} + +bool Attachment::IsButtonPressed() const +{ + return false; +} + std::string Attachment::GetName() const { return m_name; @@ -42,7 +51,7 @@ void Attachment::Reset() std::copy(m_id.cbegin(), m_id.cend(), m_reg.constant_id); std::copy(m_calibration.cbegin(), m_calibration.cend(), m_reg.calibration); } -} +} // namespace WiimoteEmu void ControllerEmu::Extension::GetState(u8* const data) { diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h index 385c79efe0..f1cffa44c3 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h @@ -18,8 +18,9 @@ class Attachment : public ControllerEmu public: Attachment(const char* const name, ExtensionReg& reg); - virtual void GetState(u8* const data) {} - virtual bool IsButtonPressed() const { return false; } + virtual void GetState(u8* const data); + virtual bool IsButtonPressed() const; + void Reset(); std::string GetName() const override; @@ -40,4 +41,4 @@ class None : public Attachment public: None(ExtensionReg& reg); }; -} +} // namespace WiimoteEmu From 34768617d2b8d686ad095056baae1ef2e3d52c8a Mon Sep 17 00:00:00 2001 From: Lioncash Date: Mon, 23 Jan 2017 01:21:09 -0500 Subject: [PATCH 4/4] Attachment: Make constructors explicit where applicable --- Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h | 2 +- Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.h | 2 +- Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.h | 2 +- Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.h | 2 +- Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.h | 2 +- Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.h | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h index f1cffa44c3..7d5361795a 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h @@ -39,6 +39,6 @@ private: class None : public Attachment { public: - None(ExtensionReg& reg); + explicit None(ExtensionReg& reg); }; } // namespace WiimoteEmu diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.h index cb91969b44..ac621859f6 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.h @@ -14,7 +14,7 @@ struct ExtensionReg; class Classic : public Attachment { public: - Classic(ExtensionReg& reg); + explicit Classic(ExtensionReg& reg); void GetState(u8* const data) override; bool IsButtonPressed() const override; diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.h index 75c201b9be..993a3e597b 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.h @@ -14,7 +14,7 @@ struct ExtensionReg; class Drums : public Attachment { public: - Drums(ExtensionReg& reg); + explicit Drums(ExtensionReg& reg); void GetState(u8* const data) override; bool IsButtonPressed() const override; diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.h index b0455a36c1..18549362c1 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.h @@ -14,7 +14,7 @@ struct ExtensionReg; class Guitar : public Attachment { public: - Guitar(ExtensionReg& reg); + explicit Guitar(ExtensionReg& reg); void GetState(u8* const data) override; bool IsButtonPressed() const override; diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.h index 2071b19815..426d65afd2 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.h @@ -15,7 +15,7 @@ struct ExtensionReg; class Nunchuk : public Attachment { public: - Nunchuk(ExtensionReg& reg); + explicit Nunchuk(ExtensionReg& reg); void GetState(u8* const data) override; bool IsButtonPressed() const override; diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.h index 5985f47180..7f917b3189 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.h @@ -14,7 +14,7 @@ struct ExtensionReg; class Turntable : public Attachment { public: - Turntable(ExtensionReg& reg); + explicit Turntable(ExtensionReg& reg); void GetState(u8* const data) override; bool IsButtonPressed() const override;