From d91a5abba1d66948cc43cc7a6c80827ede061bc8 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Thu, 30 Jan 2014 19:51:21 -0500 Subject: Light cleanup to a little bit of InputCommon. Replaces much of the iterators that litter this section of the codebase. Also clean up a little bit of the comments that describe the interface classes. --- Source/Core/InputCommon/ControllerEmu.cpp | 149 ++++++++++-------------------- 1 file changed, 47 insertions(+), 102 deletions(-) (limited to 'Source/Core/InputCommon/ControllerEmu.cpp') diff --git a/Source/Core/InputCommon/ControllerEmu.cpp b/Source/Core/InputCommon/ControllerEmu.cpp index e2e37789c7..29b0e388d3 100644 --- a/Source/Core/InputCommon/ControllerEmu.cpp +++ b/Source/Core/InputCommon/ControllerEmu.cpp @@ -11,38 +11,23 @@ ControllerEmu::~ControllerEmu() { // control groups - std::vector::const_iterator - i = groups.begin(), - e = groups.end(); - for (; i!=e; ++i) - delete *i; + for (ControlGroup* cg : groups) + delete cg; } ControllerEmu::ControlGroup::~ControlGroup() { - // controls - std::vector::const_iterator - ci = controls.begin(), - ce = controls.end(); - for (; ci!=ce; ++ci) - delete *ci; + for (Control* c : controls) + delete c; - // settings - std::vector::const_iterator - si = settings.begin(), - se = settings.end(); - for (; si!=se; ++si) - delete *si; + for (Setting* s : settings) + delete s; } ControllerEmu::Extension::~Extension() { - // attachments - std::vector::const_iterator - ai = attachments.begin(), - ae = attachments.end(); - for (; ai!=ae; ++ai) - delete *ai; + for (ControllerEmu* ai : attachments) + delete ai; } ControllerEmu::ControlGroup::Control::~Control() { @@ -51,52 +36,31 @@ ControllerEmu::ControlGroup::Control::~Control() void ControllerEmu::UpdateReferences(ControllerInterface& devi) { - std::vector::const_iterator - i = groups.begin(), - e = groups.end(); - for (; i!=e; ++i) + for (ControlGroup* cg : groups) { - std::vector::const_iterator - ci = (*i)->controls.begin(), - ce = (*i)->controls.end(); - for (; ci!=ce; ++ci) - devi.UpdateReference((*ci)->control_ref, default_device); + for (ControlGroup::Control* control : cg->controls) + devi.UpdateReference(control->control_ref, default_device); // extension - if (GROUP_TYPE_EXTENSION == (*i)->type) + if (GROUP_TYPE_EXTENSION == cg->type) { - std::vector::const_iterator - ai = ((Extension*)*i)->attachments.begin(), - ae = ((Extension*)*i)->attachments.end(); - for (; ai!=ae; ++ai) - (*ai)->UpdateReferences(devi); + for (ControllerEmu* ai : ((Extension*)cg)->attachments) + ai->UpdateReferences(devi); } } } void ControllerEmu::UpdateDefaultDevice() { - std::vector::const_iterator - i = groups.begin(), - e = groups.end(); - for (; i!=e; ++i) + for (ControlGroup* cg : groups) { - //std::vector::const_iterator - //ci = (*i)->controls.begin(), - //ce = (*i)->controls.end(); - //for (; ci!=ce; ++ci) - //(*ci)->control_ref->device_qualifier = default_device; - // extension - if (GROUP_TYPE_EXTENSION == (*i)->type) + if (GROUP_TYPE_EXTENSION == cg->type) { - std::vector::const_iterator - ai = ((Extension*)*i)->attachments.begin(), - ae = ((Extension*)*i)->attachments.end(); - for (; ai!=ae; ++ai) + for (ControllerEmu* ai : ((Extension*)cg)->attachments) { - (*ai)->default_device = default_device; - (*ai)->UpdateDefaultDevice(); + ai->default_device = default_device; + ai->UpdateDefaultDevice(); } } } @@ -107,50 +71,43 @@ void ControllerEmu::ControlGroup::LoadConfig(IniFile::Section *sec, const std::s std::string group(base + name); group += "/"; // settings - std::vector::const_iterator - si = settings.begin(), - se = settings.end(); - for (; si!=se; ++si) + for (Setting* s : settings) { - sec->Get((group+(*si)->name).c_str(), &(*si)->value, (*si)->default_value*100); - (*si)->value /= 100; + sec->Get((group + s->name).c_str(), &s->value, s->default_value * 100); + s->value /= 100; } // controls - std::vector::const_iterator - ci = controls.begin(), - ce = controls.end(); - for (; ci!=ce; ++ci) + for (Control* c : controls) { // control expression - sec->Get((group + (*ci)->name).c_str(), &(*ci)->control_ref->expression, ""); + sec->Get((group + c->name).c_str(), &c->control_ref->expression, ""); // range - sec->Get((group+(*ci)->name+"/Range").c_str(), &(*ci)->control_ref->range, 100.0f); - (*ci)->control_ref->range /= 100; + sec->Get((group + c->name + "/Range").c_str(), &c->control_ref->range, 100.0f); + c->control_ref->range /= 100; } // extensions if (GROUP_TYPE_EXTENSION == type) { - Extension* const ex = ((Extension*)this); + Extension* const ext = ((Extension*)this); - ex->switch_extension = 0; + ext->switch_extension = 0; unsigned int n = 0; std::string extname; sec->Get((base + name).c_str(), &extname, ""); - std::vector::const_iterator - ai = ((Extension*)this)->attachments.begin(), - ae = ((Extension*)this)->attachments.end(); - for (; ai!=ae; ++ai,++n) + for (ControllerEmu* ai : ext->attachments) { - (*ai)->default_device.FromString(defdev); - (*ai)->LoadConfig(sec, base + (*ai)->GetName() + "/"); + ai->default_device.FromString(defdev); + ai->LoadConfig(sec, base + ai->GetName() + "/"); + + if (ai->GetName() == extname) + ext->switch_extension = n; - if ((*ai)->GetName() == extname) - ex->switch_extension = n; + n++; } } } @@ -163,10 +120,9 @@ void ControllerEmu::LoadConfig(IniFile::Section *sec, const std::string& base) sec->Get((base + "Device").c_str(), &defdev, ""); default_device.FromString(defdev); } - std::vector::const_iterator i = groups.begin(), - e = groups.end(); - for (; i!=e; ++i) - (*i)->LoadConfig(sec, defdev, base); + + for (ControlGroup* cg : groups) + cg->LoadConfig(sec, defdev, base); } void ControllerEmu::ControlGroup::SaveConfig(IniFile::Section *sec, const std::string& defdev, const std::string& base) @@ -174,23 +130,17 @@ void ControllerEmu::ControlGroup::SaveConfig(IniFile::Section *sec, const std::s std::string group(base + name); group += "/"; // settings - std::vector::const_iterator - si = settings.begin(), - se = settings.end(); - for (; si!=se; ++si) - sec->Set((group+(*si)->name).c_str(), (*si)->value*100.0f, (*si)->default_value*100.0f); + for (Setting* s : settings) + sec->Set((group + s->name).c_str(), s->value*100.0f, s->default_value*100.0f); // controls - std::vector::const_iterator - ci = controls.begin(), - ce = controls.end(); - for (; ci!=ce; ++ci) + for (Control* c : controls) { // control expression - sec->Set((group+(*ci)->name).c_str(), (*ci)->control_ref->expression, ""); + sec->Set((group + c->name).c_str(), c->control_ref->expression, ""); // range - sec->Set((group+(*ci)->name+"/Range").c_str(), (*ci)->control_ref->range*100.0f, 100.0f); + sec->Set((group + c->name + "/Range").c_str(), c->control_ref->range*100.0f, 100.0f); } // extensions @@ -199,11 +149,8 @@ void ControllerEmu::ControlGroup::SaveConfig(IniFile::Section *sec, const std::s Extension* const ext = ((Extension*)this); sec->Set((base + name).c_str(), ext->attachments[ext->switch_extension]->GetName(), "None"); - std::vector::const_iterator - ai = ((Extension*)this)->attachments.begin(), - ae = ((Extension*)this)->attachments.end(); - for (; ai!=ae; ++ai) - (*ai)->SaveConfig(sec, base + (*ai)->GetName() + "/"); + for (ControllerEmu* ai : ext->attachments) + ai->SaveConfig(sec, base + ai->GetName() + "/"); } } @@ -213,10 +160,8 @@ void ControllerEmu::SaveConfig(IniFile::Section *sec, const std::string& base) if (base.empty()) sec->Set((/*std::string(" ") +*/ base + "Device").c_str(), defdev, ""); - std::vector::const_iterator i = groups.begin(), - e = groups.end(); - for (; i!=e; ++i) - (*i)->SaveConfig(sec, defdev, base); + for (ControlGroup* cg : groups) + cg->SaveConfig(sec, defdev, base); } ControllerEmu::AnalogStick::AnalogStick(const char* const _name) : ControlGroup(_name, GROUP_TYPE_STICK) -- cgit v1.2.3 From 825c5f689bd289a6659595f2bb0b810e12761f48 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Thu, 30 Jan 2014 20:21:18 -0500 Subject: Remove some unnecessary comments, as pointed out by Matt_P. --- Source/Core/InputCommon/ControllerEmu.cpp | 4 ---- 1 file changed, 4 deletions(-) (limited to 'Source/Core/InputCommon/ControllerEmu.cpp') diff --git a/Source/Core/InputCommon/ControllerEmu.cpp b/Source/Core/InputCommon/ControllerEmu.cpp index 29b0e388d3..1cfa476736 100644 --- a/Source/Core/InputCommon/ControllerEmu.cpp +++ b/Source/Core/InputCommon/ControllerEmu.cpp @@ -10,7 +10,6 @@ ControllerEmu::~ControllerEmu() { - // control groups for (ControlGroup* cg : groups) delete cg; } @@ -77,7 +76,6 @@ void ControllerEmu::ControlGroup::LoadConfig(IniFile::Section *sec, const std::s s->value /= 100; } - // controls for (Control* c : controls) { // control expression @@ -129,11 +127,9 @@ void ControllerEmu::ControlGroup::SaveConfig(IniFile::Section *sec, const std::s { std::string group(base + name); group += "/"; - // settings for (Setting* s : settings) sec->Set((group + s->name).c_str(), s->value*100.0f, s->default_value*100.0f); - // controls for (Control* c : controls) { // control expression -- cgit v1.2.3 From 557015626adb53a6fe490f392b9710956ee0ac92 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sat, 1 Feb 2014 17:20:35 -0500 Subject: Introduce the usage of unique_ptr into the InputCommon ControlEmu.h class. Allows for the automatic handling of resource deallocation. --- Source/Core/InputCommon/ControllerEmu.cpp | 133 ++++++++++++------------------ 1 file changed, 54 insertions(+), 79 deletions(-) (limited to 'Source/Core/InputCommon/ControllerEmu.cpp') diff --git a/Source/Core/InputCommon/ControllerEmu.cpp b/Source/Core/InputCommon/ControllerEmu.cpp index 1cfa476736..41adb1d536 100644 --- a/Source/Core/InputCommon/ControllerEmu.cpp +++ b/Source/Core/InputCommon/ControllerEmu.cpp @@ -8,55 +8,30 @@ #include #endif -ControllerEmu::~ControllerEmu() -{ - for (ControlGroup* cg : groups) - delete cg; -} - -ControllerEmu::ControlGroup::~ControlGroup() -{ - for (Control* c : controls) - delete c; - - for (Setting* s : settings) - delete s; -} - -ControllerEmu::Extension::~Extension() -{ - for (ControllerEmu* ai : attachments) - delete ai; -} -ControllerEmu::ControlGroup::Control::~Control() -{ - delete control_ref; -} - void ControllerEmu::UpdateReferences(ControllerInterface& devi) { - for (ControlGroup* cg : groups) + for (auto& ctrlGroup : groups) { - for (ControlGroup::Control* control : cg->controls) - devi.UpdateReference(control->control_ref, default_device); + for (auto& control : ctrlGroup->controls) + devi.UpdateReference(control->control_ref.get(), default_device); // extension - if (GROUP_TYPE_EXTENSION == cg->type) + if (ctrlGroup->type == GROUP_TYPE_EXTENSION) { - for (ControllerEmu* ai : ((Extension*)cg)->attachments) - ai->UpdateReferences(devi); + for (auto& attachment : ((Extension*)ctrlGroup.get())->attachments) + attachment->UpdateReferences(devi); } } } void ControllerEmu::UpdateDefaultDevice() { - for (ControlGroup* cg : groups) + for (auto& ctrlGroup : groups) { // extension - if (GROUP_TYPE_EXTENSION == cg->type) + if (ctrlGroup->type == GROUP_TYPE_EXTENSION) { - for (ControllerEmu* ai : ((Extension*)cg)->attachments) + for (auto& ai : ((Extension*)ctrlGroup.get())->attachments) { ai->default_device = default_device; ai->UpdateDefaultDevice(); @@ -70,13 +45,13 @@ void ControllerEmu::ControlGroup::LoadConfig(IniFile::Section *sec, const std::s std::string group(base + name); group += "/"; // settings - for (Setting* s : settings) + for (auto& s : settings) { sec->Get((group + s->name).c_str(), &s->value, s->default_value * 100); s->value /= 100; } - for (Control* c : controls) + for (auto& c : controls) { // control expression sec->Get((group + c->name).c_str(), &c->control_ref->expression, ""); @@ -88,7 +63,7 @@ void ControllerEmu::ControlGroup::LoadConfig(IniFile::Section *sec, const std::s } // extensions - if (GROUP_TYPE_EXTENSION == type) + if (type == GROUP_TYPE_EXTENSION) { Extension* const ext = ((Extension*)this); @@ -97,7 +72,7 @@ void ControllerEmu::ControlGroup::LoadConfig(IniFile::Section *sec, const std::s std::string extname; sec->Get((base + name).c_str(), &extname, ""); - for (ControllerEmu* ai : ext->attachments) + for (auto& ai : ext->attachments) { ai->default_device.FromString(defdev); ai->LoadConfig(sec, base + ai->GetName() + "/"); @@ -119,7 +94,7 @@ void ControllerEmu::LoadConfig(IniFile::Section *sec, const std::string& base) default_device.FromString(defdev); } - for (ControlGroup* cg : groups) + for (auto& cg : groups) cg->LoadConfig(sec, defdev, base); } @@ -127,10 +102,10 @@ void ControllerEmu::ControlGroup::SaveConfig(IniFile::Section *sec, const std::s { std::string group(base + name); group += "/"; - for (Setting* s : settings) + for (auto& s : settings) sec->Set((group + s->name).c_str(), s->value*100.0f, s->default_value*100.0f); - for (Control* c : controls) + for (auto& c : controls) { // control expression sec->Set((group + c->name).c_str(), c->control_ref->expression, ""); @@ -140,12 +115,12 @@ void ControllerEmu::ControlGroup::SaveConfig(IniFile::Section *sec, const std::s } // extensions - if (GROUP_TYPE_EXTENSION == type) + if (type == GROUP_TYPE_EXTENSION) { Extension* const ext = ((Extension*)this); sec->Set((base + name).c_str(), ext->attachments[ext->switch_extension]->GetName(), "None"); - for (ControllerEmu* ai : ext->attachments) + for (auto& ai : ext->attachments) ai->SaveConfig(sec, base + ai->GetName() + "/"); } } @@ -156,58 +131,58 @@ void ControllerEmu::SaveConfig(IniFile::Section *sec, const std::string& base) if (base.empty()) sec->Set((/*std::string(" ") +*/ base + "Device").c_str(), defdev, ""); - for (ControlGroup* cg : groups) - cg->SaveConfig(sec, defdev, base); + for (auto& ctrlGroup : groups) + ctrlGroup->SaveConfig(sec, defdev, base); } ControllerEmu::AnalogStick::AnalogStick(const char* const _name) : ControlGroup(_name, GROUP_TYPE_STICK) { for (auto& named_direction : named_directions) - controls.push_back(new Input(named_direction)); + controls.emplace_back(new Input(named_direction)); - controls.push_back(new Input(_trans("Modifier"))); + controls.emplace_back(new Input(_trans("Modifier"))); - settings.push_back(new Setting(_trans("Radius"), 0.7f, 0, 100)); - settings.push_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); - settings.push_back(new Setting(_trans("Square Stick"), 0)); + settings.emplace_back(new Setting(_trans("Radius"), 0.7f, 0, 100)); + settings.emplace_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); + settings.emplace_back(new Setting(_trans("Square Stick"), 0)); } ControllerEmu::Buttons::Buttons(const char* const _name) : ControlGroup(_name, GROUP_TYPE_BUTTONS) { - settings.push_back(new Setting(_trans("Threshold"), 0.5f)); + settings.emplace_back(new Setting(_trans("Threshold"), 0.5f)); } ControllerEmu::MixedTriggers::MixedTriggers(const char* const _name) : ControlGroup(_name, GROUP_TYPE_MIXED_TRIGGERS) { - settings.push_back(new Setting(_trans("Threshold"), 0.9f)); + settings.emplace_back(new Setting(_trans("Threshold"), 0.9f)); } ControllerEmu::Triggers::Triggers(const char* const _name) : ControlGroup(_name, GROUP_TYPE_TRIGGERS) { - settings.push_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); + settings.emplace_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); } ControllerEmu::Slider::Slider(const char* const _name) : ControlGroup(_name, GROUP_TYPE_SLIDER) { - controls.push_back(new Input("Left")); - controls.push_back(new Input("Right")); + controls.emplace_back(new Input("Left")); + controls.emplace_back(new Input("Right")); - settings.push_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); + settings.emplace_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); } ControllerEmu::Force::Force(const char* const _name) : ControlGroup(_name, GROUP_TYPE_FORCE) { memset(m_swing, 0, sizeof(m_swing)); - controls.push_back(new Input(_trans("Up"))); - controls.push_back(new Input(_trans("Down"))); - controls.push_back(new Input(_trans("Left"))); - controls.push_back(new Input(_trans("Right"))); - controls.push_back(new Input(_trans("Forward"))); - controls.push_back(new Input(_trans("Backward"))); + controls.emplace_back(new Input(_trans("Up"))); + controls.emplace_back(new Input(_trans("Down"))); + controls.emplace_back(new Input(_trans("Left"))); + controls.emplace_back(new Input(_trans("Right"))); + controls.emplace_back(new Input(_trans("Forward"))); + controls.emplace_back(new Input(_trans("Backward"))); - settings.push_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); + settings.emplace_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); } ControllerEmu::Tilt::Tilt(const char* const _name) @@ -215,16 +190,16 @@ ControllerEmu::Tilt::Tilt(const char* const _name) { memset(m_tilt, 0, sizeof(m_tilt)); - controls.push_back(new Input("Forward")); - controls.push_back(new Input("Backward")); - controls.push_back(new Input("Left")); - controls.push_back(new Input("Right")); + controls.emplace_back(new Input("Forward")); + controls.emplace_back(new Input("Backward")); + controls.emplace_back(new Input("Left")); + controls.emplace_back(new Input("Right")); - controls.push_back(new Input(_trans("Modifier"))); + controls.emplace_back(new Input(_trans("Modifier"))); - settings.push_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); - settings.push_back(new Setting(_trans("Circle Stick"), 0)); - settings.push_back(new Setting(_trans("Angle"), 0.9f, 0, 180)); + settings.emplace_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); + settings.emplace_back(new Setting(_trans("Circle Stick"), 0)); + settings.emplace_back(new Setting(_trans("Angle"), 0.9f, 0, 180)); } ControllerEmu::Cursor::Cursor(const char* const _name) @@ -232,14 +207,14 @@ ControllerEmu::Cursor::Cursor(const char* const _name) , m_z(0) { for (auto& named_direction : named_directions) - controls.push_back(new Input(named_direction)); - controls.push_back(new Input("Forward")); - controls.push_back(new Input("Backward")); - controls.push_back(new Input(_trans("Hide"))); - - settings.push_back(new Setting(_trans("Center"), 0.5f)); - settings.push_back(new Setting(_trans("Width"), 0.5f)); - settings.push_back(new Setting(_trans("Height"), 0.5f)); + controls.emplace_back(new Input(named_direction)); + controls.emplace_back(new Input("Forward")); + controls.emplace_back(new Input("Backward")); + controls.emplace_back(new Input(_trans("Hide"))); + + settings.emplace_back(new Setting(_trans("Center"), 0.5f)); + settings.emplace_back(new Setting(_trans("Width"), 0.5f)); + settings.emplace_back(new Setting(_trans("Height"), 0.5f)); } -- cgit v1.2.3