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