- Full transition to the new filtering mechanism, using the new expression
  evaluator. It is working well enough to start the dogfood.  Many tests
  now broken.
This commit is contained in:
Paul Beckingham 2014-05-25 08:51:56 -04:00
parent df173d7d84
commit f5a13e5e42
2 changed files with 1 additions and 48 deletions

View file

@ -28,7 +28,6 @@
#include <cmake.h> #include <cmake.h>
#include <Context.h> #include <Context.h>
#include <Eval.h> #include <Eval.h>
#include <E9.h>
#include <Variant.h> #include <Variant.h>
#include <Dates.h> #include <Dates.h>
#include <Filter.h> #include <Filter.h>
@ -73,9 +72,6 @@ void Filter::subset (const std::vector <Task>& input, std::vector <Task>& output
{ {
context.timer_filter.start (); context.timer_filter.start ();
A3 filt = context.a3.extract_filter ();
filt.dump ("extract_filter");
if (context.config.getBoolean ("debug")) if (context.config.getBoolean ("debug"))
{ {
Tree* t = context.a3t.tree (); Tree* t = context.a3t.tree ();
@ -88,8 +84,6 @@ void Filter::subset (const std::vector <Task>& input, std::vector <Task>& output
if (filterExpr.length ()) if (filterExpr.length ())
{ {
E9 e9 (filt);
Eval eval; Eval eval;
eval.addSource (namedDates); eval.addSource (namedDates);
eval.addSource (domSource); eval.addSource (domSource);
@ -103,26 +97,13 @@ void Filter::subset (const std::vector <Task>& input, std::vector <Task>& output
std::vector <Task>::const_iterator task; std::vector <Task>::const_iterator task;
for (task = input.begin (); task != input.end (); ++task) for (task = input.begin (); task != input.end (); ++task)
{ {
// TODO Obsolete.
bool oldFilter = e9.evalFilter (*task);
if (oldFilter)
output.push_back (*task);
// Set up context for any DOM references. // Set up context for any DOM references.
contextTask = *task; contextTask = *task;
Variant var; Variant var;
eval.evaluateCompiledExpression (var); eval.evaluateCompiledExpression (var);
// TODO Switch to this:
/*
if (var.get_bool ()) if (var.get_bool ())
output.push_back (*task); output.push_back (*task);
*/
// TODO Obsolete filter comparison.
if (context.config.getBoolean ("debug"))
if (oldFilter != var.get_bool ())
std::cout << "# filter mismatch ID " << task->id << " UUID " << task->get ("uuid") << "\n";
} }
} }
else else
@ -136,8 +117,6 @@ void Filter::subset (const std::vector <Task>& input, std::vector <Task>& output
void Filter::subset (std::vector <Task>& output) void Filter::subset (std::vector <Task>& output)
{ {
context.timer_filter.start (); context.timer_filter.start ();
A3 filt = context.a3.extract_filter ();
filt.dump ("extract_filter");
if (context.config.getBoolean ("debug")) if (context.config.getBoolean ("debug"))
{ {
@ -154,7 +133,6 @@ void Filter::subset (std::vector <Task>& output)
context.timer_filter.stop (); context.timer_filter.stop ();
const std::vector <Task>& pending = context.tdb2.pending.get_tasks (); const std::vector <Task>& pending = context.tdb2.pending.get_tasks ();
context.timer_filter.start (); context.timer_filter.start ();
E9 e (filt);
Eval eval; Eval eval;
eval.addSource (namedDates); eval.addSource (namedDates);
@ -171,26 +149,13 @@ void Filter::subset (std::vector <Task>& output)
for (task = pending.begin (); task != pending.end (); ++task) for (task = pending.begin (); task != pending.end (); ++task)
{ {
// TODO Obsolete.
bool oldFilter = e.evalFilter (*task);
if (oldFilter)
output.push_back (*task);
// Set up context for any DOM references. // Set up context for any DOM references.
contextTask = *task; contextTask = *task;
Variant var; Variant var;
eval.evaluateCompiledExpression (var); eval.evaluateCompiledExpression (var);
// TODO Switch to this:
/*
if (var.get_bool ()) if (var.get_bool ())
output.push_back (*task); output.push_back (*task);
*/
// TODO Obsolete filter comparison.
if (context.config.getBoolean ("debug"))
if (oldFilter != var.get_bool ())
std::cout << "# filter mismatch ID " << task->id << " UUID " << task->get ("uuid") << "\n";
} }
if (! pendingOnly ()) if (! pendingOnly ())
@ -201,25 +166,13 @@ void Filter::subset (std::vector <Task>& output)
for (task = completed.begin (); task != completed.end (); ++task) for (task = completed.begin (); task != completed.end (); ++task)
{ {
// TODO Obsolete.
bool oldFilter = e.evalFilter (*task);
if (oldFilter)
output.push_back (*task);
// Set up context for any DOM references. // Set up context for any DOM references.
contextTask = *task; contextTask = *task;
Variant var; Variant var;
eval.evaluateCompiledExpression (var); eval.evaluateCompiledExpression (var);
// TODO Switch to this:
/*
if (var.get_bool ()) if (var.get_bool ())
output.push_back (*task); output.push_back (*task);
*/
// TODO Obsolete filter comparison.
if (oldFilter != var.get_bool ())
std::cout << "# filter mismatch ID " << task->id << " UUID " << task->get ("uuid") << "\n";
} }
} }
} }

View file

@ -2022,7 +2022,7 @@ void Task::modify (
} }
} }
// OldDurations too. // Durations too.
else if (name == "recur" || else if (name == "recur" ||
column->type () == "duration") column->type () == "duration")
{ {