// Copyright (c) 1994 James Clark // See the file COPYING for copying permission. #ifndef ISet_INCLUDED #define ISet_INCLUDED #include #include "Vector.h" #include "Boolean.h" #ifdef SP_NAMESPACE namespace SP_NAMESPACE { #endif template class ISetIter; template struct ISetRange { T min; T max; }; template class ISet { public: ISet(); ISet(const T *, size_t); ~ISet(); Boolean contains(T) const; void remove(T); void add(T x) { addRange(x, x); } void addRange(T, T); #if 0 void add(const ISet &); #endif void check(); void operator+=(T x) { addRange(x, x); } void clear(); Boolean isSingleton() const { return r_.size() == 1 && r_[0].min == r_[0].max; } Boolean isEmpty() const { return r_.size() == 0; } void swap(ISet &x) { r_.swap(x.r_); } friend class ISetIter; private: Vector > r_; }; #ifdef SP_NAMESPACE } #endif #endif /* not ISet_INCLUDED */ #ifdef SP_DEFINE_TEMPLATES #include "ISet.cxx" #endif