bool PointFilter::check(double* point) { // create a new checker chain if(m_changed) { createCheckers(); // mark as unchanged to avoid recreation on further calls m_changed = false; } // apply all tests to the point Checker* checker = m_checker; while(checker) { if(checker->test(point)) { checker = checker->m_next; } else { // if even one test fails the point is discarded return false; } } // point has passed if all tests returned true return true; }