debugger: refactor breakpoint handling

Use BreakpointData objects for communicaition instead of random
collection of some of their attributes.
This commit is contained in:
hjk
2010-05-12 16:48:04 +02:00
parent 88e4917b2e
commit d8318a9502
8 changed files with 96 additions and 107 deletions

View File

@@ -112,7 +112,7 @@ public:
return;
BreakHandler *handler = m_data->handler();
handler->removeBreakpoint(handler->indexOf(m_data));
handler->removeBreakpoint(m_data);
handler->saveBreakpoints();
handler->updateMarkers();
}
@@ -373,7 +373,9 @@ BreakpointData *BreakHandler::findSimilarBreakpoint(const BreakpointData &needle
for (int index = 0; index != size(); ++index) {
BreakpointData *data = m_bp[index];
// Clear hit.
if (data->bpNumber == needle.bpNumber)
if (data->bpNumber == needle.bpNumber
&& !data->bpNumber.isEmpty()
&& data->bpNumber.toInt() != 0)
return data;
// Clear miss.
if (data->type != needle.type)
@@ -393,21 +395,6 @@ BreakpointData *BreakHandler::findSimilarBreakpoint(const BreakpointData &needle
return 0;
}
int BreakHandler::findBreakpoint(const QString &fileName, int lineNumber) const
{
if (lineNumber <= 0) {
QByteArray address = fileName.toLatin1();
for (int index = 0; index != size(); ++index)
if (at(index)->bpAddress == address)
return index;
} else {
for (int index = 0; index != size(); ++index)
if (at(index)->isLocatedAt(fileName, lineNumber))
return index;
}
return -1;
}
BreakpointData *BreakHandler::findBreakpointByNumber(int bpNumber) const
{
if (!size())
@@ -790,6 +777,13 @@ void BreakHandler::removeBreakpoint(int index)
saveBreakpoints();
}
void BreakHandler::removeBreakpoint(BreakpointData *data)
{
removeBreakpointHelper(m_bp.indexOf(data));
emit layoutChanged();
saveBreakpoints();
}
void BreakHandler::toggleBreakpointEnabled(BreakpointData *data)
{
QTC_ASSERT(data, return);