Merge pull request #41 from archshift/itr

Changed iterators to use auto, many of which using range-based loops
This commit is contained in:
bunnei 2014-08-12 10:12:39 -04:00
commit 0ccd026a6d
3 changed files with 82 additions and 93 deletions

View File

@ -21,14 +21,14 @@ void SaveHotkeys(QSettings& settings)
{ {
settings.beginGroup("Shortcuts"); settings.beginGroup("Shortcuts");
for (HotkeyGroupMap::iterator group = hotkey_groups.begin(); group != hotkey_groups.end(); ++group) for (auto group : hotkey_groups)
{ {
settings.beginGroup(group->first); settings.beginGroup(group.first);
for (HotkeyMap::iterator hotkey = group->second.begin(); hotkey != group->second.end(); ++hotkey) for (auto hotkey : group.second)
{ {
settings.beginGroup(hotkey->first); settings.beginGroup(hotkey.first);
settings.setValue(QString("KeySeq"), hotkey->second.keyseq.toString()); settings.setValue(QString("KeySeq"), hotkey.second.keyseq.toString());
settings.setValue(QString("Context"), hotkey->second.context); settings.setValue(QString("Context"), hotkey.second.context);
settings.endGroup(); settings.endGroup();
} }
settings.endGroup(); settings.endGroup();
@ -42,17 +42,17 @@ void LoadHotkeys(QSettings& settings)
// Make sure NOT to use a reference here because it would become invalid once we call beginGroup() // Make sure NOT to use a reference here because it would become invalid once we call beginGroup()
QStringList groups = settings.childGroups(); QStringList groups = settings.childGroups();
for (QList<QString>::iterator group = groups.begin(); group != groups.end(); ++group) for (auto group : groups)
{ {
settings.beginGroup(*group); settings.beginGroup(group);
QStringList hotkeys = settings.childGroups(); QStringList hotkeys = settings.childGroups();
for (QList<QString>::iterator hotkey = hotkeys.begin(); hotkey != hotkeys.end(); ++hotkey) for (auto hotkey : hotkeys)
{ {
settings.beginGroup(*hotkey); settings.beginGroup(hotkey);
// RegisterHotkey assigns default keybindings, so use old values as default parameters // RegisterHotkey assigns default keybindings, so use old values as default parameters
Hotkey& hk = hotkey_groups[*group][*hotkey]; Hotkey& hk = hotkey_groups[group][hotkey];
hk.keyseq = QKeySequence::fromString(settings.value("KeySeq", hk.keyseq.toString()).toString()); hk.keyseq = QKeySequence::fromString(settings.value("KeySeq", hk.keyseq.toString()).toString());
hk.context = (Qt::ShortcutContext)settings.value("Context", hk.context).toInt(); hk.context = (Qt::ShortcutContext)settings.value("Context", hk.context).toInt();
if (hk.shortcut) if (hk.shortcut)
@ -91,13 +91,13 @@ GHotkeysDialog::GHotkeysDialog(QWidget* parent): QDialog(parent)
{ {
ui.setupUi(this); ui.setupUi(this);
for (HotkeyGroupMap::iterator group = hotkey_groups.begin(); group != hotkey_groups.end(); ++group) for (auto group : hotkey_groups)
{ {
QTreeWidgetItem* toplevel_item = new QTreeWidgetItem(QStringList(group->first)); QTreeWidgetItem* toplevel_item = new QTreeWidgetItem(QStringList(group.first));
for (HotkeyMap::iterator hotkey = group->second.begin(); hotkey != group->second.end(); ++hotkey) for (auto hotkey : group.second)
{ {
QStringList columns; QStringList columns;
columns << hotkey->first << hotkey->second.keyseq.toString(); columns << hotkey.first << hotkey.second.keyseq.toString();
QTreeWidgetItem* item = new QTreeWidgetItem(columns); QTreeWidgetItem* item = new QTreeWidgetItem(columns);
toplevel_item->addChild(item); toplevel_item->addChild(item);
} }

View File

@ -9,32 +9,29 @@
#include <sstream> #include <sstream>
#include <algorithm> #include <algorithm>
bool BreakPoints::IsAddressBreakPoint(u32 _iAddress) bool BreakPoints::IsAddressBreakPoint(u32 iAddress)
{ {
for (TBreakPoints::iterator i = m_BreakPoints.begin(); i != m_BreakPoints.end(); ++i) auto cond = [&iAddress](const TBreakPoint& bp) { return bp.iAddress == iAddress; };
if (i->iAddress == _iAddress) auto it = std::find_if(m_BreakPoints.begin(), m_BreakPoints.end(), cond);
return true; return it != m_BreakPoints.end();
return false;
} }
bool BreakPoints::IsTempBreakPoint(u32 _iAddress) bool BreakPoints::IsTempBreakPoint(u32 iAddress)
{ {
for (TBreakPoints::iterator i = m_BreakPoints.begin(); i != m_BreakPoints.end(); ++i) auto cond = [&iAddress](const TBreakPoint& bp) { return bp.iAddress == iAddress && bp.bTemporary; };
if (i->iAddress == _iAddress && i->bTemporary) auto it = std::find_if(m_BreakPoints.begin(), m_BreakPoints.end(), cond);
return true; return it != m_BreakPoints.end();
return false;
} }
BreakPoints::TBreakPointsStr BreakPoints::GetStrings() const BreakPoints::TBreakPointsStr BreakPoints::GetStrings() const
{ {
TBreakPointsStr bps; TBreakPointsStr bps;
for (TBreakPoints::const_iterator i = m_BreakPoints.begin(); for (auto breakpoint : m_BreakPoints)
i != m_BreakPoints.end(); ++i)
{ {
if (!i->bTemporary) if (!breakpoint.bTemporary)
{ {
std::stringstream bp; std::stringstream bp;
bp << std::hex << i->iAddress << " " << (i->bOn ? "n" : ""); bp << std::hex << breakpoint.iAddress << " " << (breakpoint.bOn ? "n" : "");
bps.push_back(bp.str()); bps.push_back(bp.str());
} }
} }
@ -44,13 +41,13 @@ BreakPoints::TBreakPointsStr BreakPoints::GetStrings() const
void BreakPoints::AddFromStrings(const TBreakPointsStr& bps) void BreakPoints::AddFromStrings(const TBreakPointsStr& bps)
{ {
for (TBreakPointsStr::const_iterator i = bps.begin(); i != bps.end(); ++i) for (auto bps_item : bps)
{ {
TBreakPoint bp; TBreakPoint bp;
std::stringstream bpstr; std::stringstream bpstr;
bpstr << std::hex << *i; bpstr << std::hex << bps_item;
bpstr >> bp.iAddress; bpstr >> bp.iAddress;
bp.bOn = i->find("n") != i->npos; bp.bOn = bps_item.find("n") != bps_item.npos;
bp.bTemporary = false; bp.bTemporary = false;
Add(bp); Add(bp);
} }
@ -84,16 +81,10 @@ void BreakPoints::Add(u32 em_address, bool temp)
void BreakPoints::Remove(u32 em_address) void BreakPoints::Remove(u32 em_address)
{ {
for (TBreakPoints::iterator i = m_BreakPoints.begin(); i != m_BreakPoints.end(); ++i) auto cond = [&em_address](const TBreakPoint& bp) { return bp.iAddress == em_address; };
{ auto it = std::find_if(m_BreakPoints.begin(), m_BreakPoints.end(), cond);
if (i->iAddress == em_address) if (it != m_BreakPoints.end())
{ m_BreakPoints.erase(it);
m_BreakPoints.erase(i);
//if (jit)
// jit->GetBlockCache()->InvalidateICache(em_address, 4);
return;
}
}
} }
void BreakPoints::Clear() void BreakPoints::Clear()
@ -114,14 +105,16 @@ void BreakPoints::Clear()
MemChecks::TMemChecksStr MemChecks::GetStrings() const MemChecks::TMemChecksStr MemChecks::GetStrings() const
{ {
TMemChecksStr mcs; TMemChecksStr mcs;
for (TMemChecks::const_iterator i = m_MemChecks.begin(); for (auto memcheck : m_MemChecks)
i != m_MemChecks.end(); ++i)
{ {
std::stringstream mc; std::stringstream mc;
mc << std::hex << i->StartAddress; mc << std::hex << memcheck.StartAddress;
mc << " " << (i->bRange ? i->EndAddress : i->StartAddress) << " " << mc << " " << (memcheck.bRange ? memcheck.EndAddress : memcheck.StartAddress) << " "
(i->bRange ? "n" : "") << (i->OnRead ? "r" : "") << << (memcheck.bRange ? "n" : "")
(i->OnWrite ? "w" : "") << (i->Log ? "l" : "") << (i->Break ? "p" : ""); << (memcheck.OnRead ? "r" : "")
<< (memcheck.OnWrite ? "w" : "")
<< (memcheck.Log ? "l" : "")
<< (memcheck.Break ? "p" : "");
mcs.push_back(mc.str()); mcs.push_back(mc.str());
} }
@ -130,17 +123,17 @@ MemChecks::TMemChecksStr MemChecks::GetStrings() const
void MemChecks::AddFromStrings(const TMemChecksStr& mcs) void MemChecks::AddFromStrings(const TMemChecksStr& mcs)
{ {
for (TMemChecksStr::const_iterator i = mcs.begin(); i != mcs.end(); ++i) for (auto mcs_item : mcs)
{ {
TMemCheck mc; TMemCheck mc;
std::stringstream mcstr; std::stringstream mcstr;
mcstr << std::hex << *i; mcstr << std::hex << mcs_item;
mcstr >> mc.StartAddress; mcstr >> mc.StartAddress;
mc.bRange = i->find("n") != i->npos; mc.bRange = mcs_item.find("n") != mcs_item.npos;
mc.OnRead = i->find("r") != i->npos; mc.OnRead = mcs_item.find("r") != mcs_item.npos;
mc.OnWrite = i->find("w") != i->npos; mc.OnWrite = mcs_item.find("w") != mcs_item.npos;
mc.Log = i->find("l") != i->npos; mc.Log = mcs_item.find("l") != mcs_item.npos;
mc.Break = i->find("p") != i->npos; mc.Break = mcs_item.find("p") != mcs_item.npos;
if (mc.bRange) if (mc.bRange)
mcstr >> mc.EndAddress; mcstr >> mc.EndAddress;
else else
@ -149,27 +142,23 @@ void MemChecks::AddFromStrings(const TMemChecksStr& mcs)
} }
} }
void MemChecks::Add(const TMemCheck& _rMemoryCheck) void MemChecks::Add(const TMemCheck& rMemoryCheck)
{ {
if (GetMemCheck(_rMemoryCheck.StartAddress) == 0) if (GetMemCheck(rMemoryCheck.StartAddress) == 0)
m_MemChecks.push_back(_rMemoryCheck); m_MemChecks.push_back(rMemoryCheck);
} }
void MemChecks::Remove(u32 _Address) void MemChecks::Remove(u32 Address)
{ {
for (TMemChecks::iterator i = m_MemChecks.begin(); i != m_MemChecks.end(); ++i) auto cond = [&Address](const TMemCheck& mc) { return mc.StartAddress == Address; };
{ auto it = std::find_if(m_MemChecks.begin(), m_MemChecks.end(), cond);
if (i->StartAddress == _Address) if (it != m_MemChecks.end())
{ m_MemChecks.erase(it);
m_MemChecks.erase(i);
return;
}
}
} }
TMemCheck *MemChecks::GetMemCheck(u32 address) TMemCheck *MemChecks::GetMemCheck(u32 address)
{ {
for (TMemChecks::iterator i = m_MemChecks.begin(); i != m_MemChecks.end(); ++i) for (auto i = m_MemChecks.begin(); i != m_MemChecks.end(); ++i)
{ {
if (i->bRange) if (i->bRange)
{ {

View File

@ -14,32 +14,33 @@ class DebugInterface;
struct TBreakPoint struct TBreakPoint
{ {
u32 iAddress; u32 iAddress;
bool bOn; bool bOn;
bool bTemporary; bool bTemporary;
}; };
struct TMemCheck struct TMemCheck
{ {
TMemCheck() { TMemCheck():
numHits = 0; StartAddress(0), EndAddress(0),
StartAddress = EndAddress = 0; bRange(false), OnRead(false), OnWrite(false),
bRange = OnRead = OnWrite = Log = Break = false; Log(false), Break(false), numHits(0)
} { }
u32 StartAddress;
u32 EndAddress;
bool bRange; u32 StartAddress;
u32 EndAddress;
bool OnRead; bool bRange;
bool OnWrite;
bool Log; bool OnRead;
bool Break; bool OnWrite;
u32 numHits; bool Log;
bool Break;
void Action(DebugInterface *dbg_interface, u32 _iValue, u32 addr, u32 numHits;
void Action(DebugInterface *dbg_interface, u32 iValue, u32 addr,
bool write, int size, u32 pc); bool write, int size, u32 pc);
}; };
@ -56,22 +57,22 @@ public:
void AddFromStrings(const TBreakPointsStr& bps); void AddFromStrings(const TBreakPointsStr& bps);
// is address breakpoint // is address breakpoint
bool IsAddressBreakPoint(u32 _iAddress); bool IsAddressBreakPoint(u32 iAddress);
bool IsTempBreakPoint(u32 _iAddress); bool IsTempBreakPoint(u32 iAddress);
// Add BreakPoint // Add BreakPoint
void Add(u32 em_address, bool temp=false); void Add(u32 em_address, bool temp=false);
void Add(const TBreakPoint& bp); void Add(const TBreakPoint& bp);
// Remove Breakpoint // Remove Breakpoint
void Remove(u32 _iAddress); void Remove(u32 iAddress);
void Clear(); void Clear();
void DeleteByAddress(u32 _Address); void DeleteByAddress(u32 Address);
private: private:
TBreakPoints m_BreakPoints; TBreakPoints m_BreakPoints;
u32 m_iBreakOnCount; u32 m_iBreakOnCount;
}; };
@ -89,7 +90,7 @@ public:
TMemChecksStr GetStrings() const; TMemChecksStr GetStrings() const;
void AddFromStrings(const TMemChecksStr& mcs); void AddFromStrings(const TMemChecksStr& mcs);
void Add(const TMemCheck& _rMemoryCheck); void Add(const TMemCheck& rMemoryCheck);
// memory breakpoint // memory breakpoint
TMemCheck *GetMemCheck(u32 address); TMemCheck *GetMemCheck(u32 address);
@ -99,4 +100,3 @@ public:
}; };
#endif #endif