#ifndef RUN_LIST_H #define RUN_LIST_H #include //---------------------------------------------------------------- namespace base { template struct run { run(T const &b, T const &e) : b_(b), e_(e) { } bool operator< (run const &rhs) const { return b_ < rhs.b_; } T b_, e_; }; template class run_list { public: run_list() : invert_(false) { } void add_run(T const &b, T const &e); void sub_run(T const &b, T const &e); bool in_run(T const &key) const; void invert(); void add(run_list const &rl); void sub(run_list const &rl); typedef std::set >::const_iterator const_iterator; const_iterator begin() const; const_iterator end() const; private: bool in_run_(T const &key) const; bool invert_; std::set > runs_; }; } //---------------------------------------------------------------- #include "run_list.tcc" #endif