From 5d61e067a04db3f25c1483303f844347543fc240 Mon Sep 17 00:00:00 2001 From: rabbott99 Date: Sat, 26 Dec 2015 12:40:26 -0500 Subject: [PATCH] CheatSearchTab: Use an enum for filter masks rather than ints --- .../Core/DolphinWX/Cheats/CheatSearchTab.cpp | 43 ++++++++++++++----- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/Source/Core/DolphinWX/Cheats/CheatSearchTab.cpp b/Source/Core/DolphinWX/Cheats/CheatSearchTab.cpp index 997b048a4d..3296495e35 100644 --- a/Source/Core/DolphinWX/Cheats/CheatSearchTab.cpp +++ b/Source/Core/DolphinWX/Cheats/CheatSearchTab.cpp @@ -251,15 +251,35 @@ void CheatSearchTab::UpdateCheatSearchResultItem(long index) m_lview_search_results->SetItem(index, 3, buf); } +enum class ComparisonMask +{ + EQUAL = 0x1, + GREATER_THAN = 0x2, + LESS_THAN = 0x4 +}; + +static ComparisonMask operator | (ComparisonMask comp1, ComparisonMask comp2) +{ + return static_cast(static_cast(comp1) | + static_cast(comp2)); +} + +static ComparisonMask operator & (ComparisonMask comp1, ComparisonMask comp2) +{ + return static_cast(static_cast(comp1) & + static_cast(comp2)); +} + void CheatSearchTab::FilterCheatSearchResults(u32 value) { - // Determine the selected filter - // 1 : equal - // 2 : greater-than - // 4 : less-than - // 6 : not equal - static const int filters[] = { 6, 1, 2, 4 }; - int filter_mask = filters[m_search_type->GetSelection()]; + static const std::array filters{{ + ComparisonMask::EQUAL | ComparisonMask::GREATER_THAN | ComparisonMask::LESS_THAN, // Unknown + ComparisonMask::GREATER_THAN | ComparisonMask::LESS_THAN, // Not Equal + ComparisonMask::EQUAL, + ComparisonMask::GREATER_THAN, + ComparisonMask::LESS_THAN + }}; + ComparisonMask filter_mask = filters[m_search_type->GetSelection()]; std::vector filtered_results; filtered_results.reserve(m_search_results.size()); @@ -268,14 +288,15 @@ void CheatSearchTab::FilterCheatSearchResults(u32 value) { // with big endian, can just use memcmp for ><= comparison int cmp_result = std::memcmp(&Memory::m_pRAM[result.address], &value, m_search_type_size); + ComparisonMask cmp_mask; if (cmp_result < 0) - cmp_result = 4; + cmp_mask = ComparisonMask::LESS_THAN; else if (cmp_result) - cmp_result = 2; + cmp_mask = ComparisonMask::GREATER_THAN; else - cmp_result = 1; + cmp_mask = ComparisonMask::EQUAL; - if (cmp_result & filter_mask) + if (static_cast(cmp_mask & filter_mask)) { std::memcpy(&result.old_value, &Memory::m_pRAM[result.address], m_search_type_size); filtered_results.push_back(result);