/* */ #ifndef _D_UNION_SEED_CRITERIA_H_ #define _D_UNION_SEED_CRITERIA_H_ #include "SeedCriteria.h" class UnionSeedCriteria : public SeedCriteria { private: SeedCriterion criterion; class Reset { public: void operator()(SeedCriteriaHandle cri) { cri->reset(); } }; class Eval { public: bool operator()(SeedCriteriaHandle cri) { return cri->evaluate(); } }; public: UnionSeedCriteria() {} virtual ~UnionSeedCriteria() {} virtual void reset() { for_each(criterion.begin(), criterion.end(), Reset()); } virtual bool evaluate() { SeedCriterion::iterator itr = find_if(criterion.begin(), criterion.end(), Eval()); return itr != criterion.end(); } void addSeedCriteria(SeedCriteriaHandle cri) { criterion.push_back(cri); } const SeedCriterion& getSeedCriterion() const { return criterion; } }; #endif // _D_UNION_SEED_CRITERIA_H_