/* */ #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_