C++11: Cleaned up program framework with range-based for
This commit is contained in:
146
src/feedback.cpp
146
src/feedback.cpp
@@ -49,13 +49,12 @@ bool taskDiff (const Task& before, const Task& after)
|
||||
// Attributes are all there is, so figure the different attribute names
|
||||
// between before and after.
|
||||
std::vector <std::string> beforeAtts;
|
||||
Task::const_iterator att;
|
||||
for (att = before.begin (); att != before.end (); ++att)
|
||||
beforeAtts.push_back (att->first);
|
||||
for (auto& att : before)
|
||||
beforeAtts.push_back (att.first);
|
||||
|
||||
std::vector <std::string> afterAtts;
|
||||
for (att = after.begin (); att != after.end (); ++att)
|
||||
afterAtts.push_back (att->first);
|
||||
for (auto& att : after)
|
||||
afterAtts.push_back (att.first);
|
||||
|
||||
std::vector <std::string> beforeOnly;
|
||||
std::vector <std::string> afterOnly;
|
||||
@@ -65,10 +64,9 @@ bool taskDiff (const Task& before, const Task& after)
|
||||
afterOnly.size ())
|
||||
return true;
|
||||
|
||||
std::vector <std::string>::iterator name;
|
||||
for (name = beforeAtts.begin (); name != beforeAtts.end (); ++name)
|
||||
if (*name != "uuid" &&
|
||||
before.get (*name) != after.get (*name))
|
||||
for (auto& name : beforeAtts)
|
||||
if (name != "uuid" &&
|
||||
before.get (name) != after.get (name))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
@@ -80,13 +78,12 @@ std::string taskDifferences (const Task& before, const Task& after)
|
||||
// Attributes are all there is, so figure the different attribute names
|
||||
// between before and after.
|
||||
std::vector <std::string> beforeAtts;
|
||||
Task::const_iterator att;
|
||||
for (att = before.begin (); att != before.end (); ++att)
|
||||
beforeAtts.push_back (att->first);
|
||||
for (auto& att : before)
|
||||
beforeAtts.push_back (att.first);
|
||||
|
||||
std::vector <std::string> afterAtts;
|
||||
for (att = after.begin (); att != after.end (); ++att)
|
||||
afterAtts.push_back (att->first);
|
||||
for (auto& att : after)
|
||||
afterAtts.push_back (att.first);
|
||||
|
||||
std::vector <std::string> beforeOnly;
|
||||
std::vector <std::string> afterOnly;
|
||||
@@ -94,15 +91,14 @@ std::string taskDifferences (const Task& before, const Task& after)
|
||||
|
||||
// Now start generating a description of the differences.
|
||||
std::stringstream out;
|
||||
std::vector <std::string>::iterator name;
|
||||
for (name = beforeOnly.begin (); name != beforeOnly.end (); ++name)
|
||||
for (auto& name : beforeOnly)
|
||||
out << " - "
|
||||
<< format (STRING_FEEDBACK_DELETED, ucFirst (*name))
|
||||
<< format (STRING_FEEDBACK_DELETED, ucFirst (name))
|
||||
<< "\n";
|
||||
|
||||
for (name = afterOnly.begin (); name != afterOnly.end (); ++name)
|
||||
for (auto& name : afterOnly)
|
||||
{
|
||||
if (*name == "depends")
|
||||
if (name == "depends")
|
||||
{
|
||||
std::vector <int> deps_after;
|
||||
after.getDependencies (deps_after);
|
||||
@@ -116,21 +112,21 @@ std::string taskDifferences (const Task& before, const Task& after)
|
||||
else
|
||||
out << " - "
|
||||
<< format (STRING_FEEDBACK_ATT_SET,
|
||||
ucFirst (*name),
|
||||
renderAttribute (*name, after.get (*name)))
|
||||
ucFirst (name),
|
||||
renderAttribute (name, after.get (name)))
|
||||
<< "\n";
|
||||
}
|
||||
|
||||
for (name = beforeAtts.begin (); name != beforeAtts.end (); ++name)
|
||||
for (auto& name : beforeAtts)
|
||||
{
|
||||
// Ignore UUID differences, and find values that changed, but are not also
|
||||
// in the beforeOnly and afterOnly lists, which have been handled above..
|
||||
if (*name != "uuid" &&
|
||||
before.get (*name) != after.get (*name) &&
|
||||
std::find (beforeOnly.begin (), beforeOnly.end (), *name) == beforeOnly.end () &&
|
||||
std::find (afterOnly.begin (), afterOnly.end (), *name) == afterOnly.end ())
|
||||
if (name != "uuid" &&
|
||||
before.get (name) != after.get (name) &&
|
||||
std::find (beforeOnly.begin (), beforeOnly.end (), name) == beforeOnly.end () &&
|
||||
std::find (afterOnly.begin (), afterOnly.end (), name) == afterOnly.end ())
|
||||
{
|
||||
if (*name == "depends")
|
||||
if (name == "depends")
|
||||
{
|
||||
std::vector <int> deps_before;
|
||||
before.getDependencies (deps_before);
|
||||
@@ -149,9 +145,9 @@ std::string taskDifferences (const Task& before, const Task& after)
|
||||
else
|
||||
out << " - "
|
||||
<< format (STRING_FEEDBACK_ATT_MOD,
|
||||
ucFirst (*name),
|
||||
renderAttribute (*name, before.get (*name)),
|
||||
renderAttribute (*name, after.get (*name)))
|
||||
ucFirst (name),
|
||||
renderAttribute (name, before.get (name)),
|
||||
renderAttribute (name, after.get (name)))
|
||||
<< "\n";
|
||||
}
|
||||
}
|
||||
@@ -176,13 +172,12 @@ std::string taskInfoDifferences (
|
||||
// Attributes are all there is, so figure the different attribute names
|
||||
// between before and after.
|
||||
std::vector <std::string> beforeAtts;
|
||||
Task::const_iterator att;
|
||||
for (att = before.begin (); att != before.end (); ++att)
|
||||
beforeAtts.push_back (att->first);
|
||||
for (auto& att : before)
|
||||
beforeAtts.push_back (att.first);
|
||||
|
||||
std::vector <std::string> afterAtts;
|
||||
for (att = after.begin (); att != after.end (); ++att)
|
||||
afterAtts.push_back (att->first);
|
||||
for (auto& att : after)
|
||||
afterAtts.push_back (att.first);
|
||||
|
||||
std::vector <std::string> beforeOnly;
|
||||
std::vector <std::string> afterOnly;
|
||||
@@ -190,10 +185,9 @@ std::string taskInfoDifferences (
|
||||
|
||||
// Now start generating a description of the differences.
|
||||
std::stringstream out;
|
||||
std::vector <std::string>::iterator name;
|
||||
for (name = beforeOnly.begin (); name != beforeOnly.end (); ++name)
|
||||
for (auto& name : beforeOnly)
|
||||
{
|
||||
if (*name == "depends")
|
||||
if (name == "depends")
|
||||
{
|
||||
std::vector <int> deps_before;
|
||||
before.getDependencies (deps_before);
|
||||
@@ -203,27 +197,27 @@ std::string taskInfoDifferences (
|
||||
out << format (STRING_FEEDBACK_DEP_DEL, from)
|
||||
<< "\n";
|
||||
}
|
||||
else if (name->substr (0, 11) == "annotation_")
|
||||
else if (name.substr (0, 11) == "annotation_")
|
||||
{
|
||||
out << format (STRING_FEEDBACK_ANN_DEL, before.get (*name))
|
||||
out << format (STRING_FEEDBACK_ANN_DEL, before.get (name))
|
||||
<< "\n";
|
||||
}
|
||||
else if (*name == "start")
|
||||
else if (name == "start")
|
||||
{
|
||||
out << format (STRING_FEEDBACK_ATT_DEL_DUR, ucFirst (*name),
|
||||
out << format (STRING_FEEDBACK_ATT_DEL_DUR, ucFirst (name),
|
||||
Duration (current_timestamp - last_timestamp).formatPrecise ())
|
||||
<< "\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
out << format (STRING_FEEDBACK_ATT_DEL, ucFirst (*name))
|
||||
out << format (STRING_FEEDBACK_ATT_DEL, ucFirst (name))
|
||||
<< "\n";
|
||||
}
|
||||
}
|
||||
|
||||
for (name = afterOnly.begin (); name != afterOnly.end (); ++name)
|
||||
for (auto& name : afterOnly)
|
||||
{
|
||||
if (*name == "depends")
|
||||
if (name == "depends")
|
||||
{
|
||||
std::vector <int> deps_after;
|
||||
after.getDependencies (deps_after);
|
||||
@@ -233,30 +227,31 @@ std::string taskInfoDifferences (
|
||||
out << format (STRING_FEEDBACK_DEP_WAS_SET, to)
|
||||
<< "\n";
|
||||
}
|
||||
else if (name->substr (0, 11) == "annotation_")
|
||||
else if (name.substr (0, 11) == "annotation_")
|
||||
{
|
||||
out << format (STRING_FEEDBACK_ANN_ADD, after.get (*name))
|
||||
out << format (STRING_FEEDBACK_ANN_ADD, after.get (name))
|
||||
<< "\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (*name == "start")
|
||||
if (name == "start")
|
||||
last_timestamp = current_timestamp;
|
||||
|
||||
out << format (STRING_FEEDBACK_ATT_WAS_SET,
|
||||
ucFirst (*name),
|
||||
renderAttribute (*name, after.get (*name), dateformat))
|
||||
ucFirst (name),
|
||||
renderAttribute (name, after.get (name), dateformat))
|
||||
<< "\n";
|
||||
}
|
||||
}
|
||||
|
||||
for (name = beforeAtts.begin (); name != beforeAtts.end (); ++name)
|
||||
if (*name != "uuid" &&
|
||||
*name != "modified" &&
|
||||
before.get (*name) != after.get (*name) &&
|
||||
before.get (*name) != "" && after.get (*name) != "")
|
||||
for (auto& name : beforeAtts)
|
||||
if (name != "uuid" &&
|
||||
name != "modified" &&
|
||||
before.get (name) != after.get (name) &&
|
||||
before.get (name) != "" &&
|
||||
after.get (name) != "")
|
||||
{
|
||||
if (*name == "depends")
|
||||
if (name == "depends")
|
||||
{
|
||||
std::vector <int> deps_before;
|
||||
before.getDependencies (deps_before);
|
||||
@@ -271,16 +266,16 @@ std::string taskInfoDifferences (
|
||||
out << format (STRING_FEEDBACK_DEP_WAS_MOD, from, to)
|
||||
<< "\n";
|
||||
}
|
||||
else if (name->substr (0, 11) == "annotation_")
|
||||
else if (name.substr (0, 11) == "annotation_")
|
||||
{
|
||||
out << format (STRING_FEEDBACK_ANN_WAS_MOD, after.get (*name))
|
||||
out << format (STRING_FEEDBACK_ANN_WAS_MOD, after.get (name))
|
||||
<< "\n";
|
||||
}
|
||||
else
|
||||
out << format (STRING_FEEDBACK_ATT_WAS_MOD,
|
||||
ucFirst (*name),
|
||||
renderAttribute (*name, before.get (*name), dateformat),
|
||||
renderAttribute (*name, after.get (*name), dateformat))
|
||||
ucFirst (name),
|
||||
renderAttribute (name, before.get (name), dateformat),
|
||||
renderAttribute (name, after.get (name), dateformat))
|
||||
<< "\n";
|
||||
}
|
||||
|
||||
@@ -397,24 +392,23 @@ void feedback_unblocked (const Task& task)
|
||||
dependencyGetBlocked (task, blocked);
|
||||
|
||||
// Scan all the tasks that were blocked by this task
|
||||
std::vector <Task>::iterator i;
|
||||
for (i = blocked.begin (); i != blocked.end (); ++i)
|
||||
for (auto& i : blocked)
|
||||
{
|
||||
std::vector <Task> blocking;
|
||||
dependencyGetBlocking (*i, blocking);
|
||||
dependencyGetBlocking (i, blocking);
|
||||
if (blocking.size () == 0)
|
||||
{
|
||||
if (i->id)
|
||||
if (i.id)
|
||||
std::cout << format (STRING_FEEDBACK_UNBLOCKED,
|
||||
i->id,
|
||||
i->get ("description"))
|
||||
i.id,
|
||||
i.get ("description"))
|
||||
<< "\n";
|
||||
else
|
||||
{
|
||||
std::string uuid = i->get ("uuid");
|
||||
std::string uuid = i.get ("uuid");
|
||||
std::cout << format (STRING_FEEDBACK_UNBLOCKED,
|
||||
i->get ("uuid"),
|
||||
i->get ("description"))
|
||||
i.get ("uuid"),
|
||||
i.get ("description"))
|
||||
<< "\n";
|
||||
}
|
||||
}
|
||||
@@ -429,10 +423,9 @@ void feedback_backlog ()
|
||||
context.verbose ("sync"))
|
||||
{
|
||||
std::vector <std::string> lines = context.tdb2.backlog.get_lines ();
|
||||
std::vector <std::string>::iterator line;
|
||||
for (line = lines.begin (); line != lines.end (); ++line)
|
||||
for (auto& line : lines)
|
||||
{
|
||||
if ((*line)[0] == '{')
|
||||
if ((line)[0] == '{')
|
||||
{
|
||||
context.footnote (STRING_FEEDBACK_BACKLOG);
|
||||
break;
|
||||
@@ -518,12 +511,11 @@ static void countTasks (
|
||||
int& count_pending,
|
||||
int& count_done)
|
||||
{
|
||||
std::vector <Task>::const_iterator it;
|
||||
for (it = all.begin (); it != all.end (); ++it)
|
||||
for (auto& it : all)
|
||||
{
|
||||
if (it->get ("project") == project)
|
||||
if (it.get ("project") == project)
|
||||
{
|
||||
switch (it->getStatus ())
|
||||
switch (it.getStatus ())
|
||||
{
|
||||
case Task::pending:
|
||||
case Task::waiting:
|
||||
|
||||
Reference in New Issue
Block a user