44 class ObsFilter :
public DerivedValue<bool>{
46 Function<bool()>& filter_function;
49 value = filter_function();
53 ObsFilter(
const std::string& name, std::function<
bool()> filter_function,
const std::string& impl=
"")
54 :DerivedValue<bool>(name),
55 filter_function(GenFunction::register_function<bool()>(
"filter::"+name, filter_function, impl)){ }
60 ObsFilter*
all(
const std::vector<ObsFilter*>&& fs){
65 ss << fs[0]->get_name();
66 for(
size_t i=1; i<fs.size(); i++) ss <<
"AND" << fs[i]->get_name();
67 return new ObsFilter(ss.str(), [fs](){
68 return std::all_of(std::begin(fs), std::end(fs), [](ObsFilter* f){
return f->get_value();});
75 ObsFilter*
any(
const std::vector<ObsFilter*>&& fs){
80 ss << fs[0]->get_name();
81 for(
size_t i=1; i<fs.size(); i++) ss <<
"OR" << fs[i]->get_name();
82 return new ObsFilter(ss.str(), [fs](){
83 return std::any_of(std::begin(fs), std::end(fs), [](ObsFilter* f){
return f->get_value();});
90 ObsFilter*
all(ObsFilter *f1, ObsFilter *f2){
96 ObsFilter*
any(ObsFilter *f1, ObsFilter *f2){
ObsFilter * all(const std::vector< ObsFilter *> &&fs)
Return a new filter that is the conjuction of a vector of source filters.
The namespace containing all filval classes and functions.
ObsFilter * any(const std::vector< ObsFilter *> &&fs)
Return a new filter that is the disjunction of a vector of source filters.