5 #include <KrisLibrary/structs/array2d.h> 22 typedef set<IntPair>::iterator iterator;
23 typedef set<IntPair>::const_iterator const_iterator;
27 inline bool empty() {
return items.empty(); }
29 void expandRange(
const IntPair& index);
30 void insert(
const IntPair& index);
32 void insert(It first,It last);
33 void erase(iterator it);
34 void erase(
const IntPair& item);
36 void erase(It first,It last);
37 inline iterator begin() {
return items.begin(); }
38 inline const_iterator begin()
const {
return items.begin(); }
39 inline iterator end() {
return items.end(); }
40 inline const_iterator end()
const {
return items.end(); }
41 size_t size()
const {
return items.size(); }
43 iterator find(
const IntPair& item);
44 const_iterator find(
const IntPair& item)
const;
45 inline bool isRangeEmpty()
const {
return imax.a < imin.a; }
46 inline const IntPair& minimum()
const {
return imin; }
47 inline const IntPair& maximum()
const {
return imax; }
48 inline bool inRange(
const IntPair& item)
const {
return item.a >= imin.a && item.a <= imax.a && item.b >= imin.b && item.b <= imax.b; }
49 inline bool cacheGet(
const IntPair& item)
const {
return contains(item.a-imin.a,item.b-imin.b); }
50 inline void cacheSet(
const IntPair& item,
bool value) { contains(item.a-imin.a,item.b-imin.b)=value; }
54 inline bool IsCacheBuilt()
const {
return hasContainmentCache; }
59 bool hasContainmentCache;
64 void RangeSet2D::insert(It first,It last)
66 for(It i=first;i!=last;i++)
71 void RangeSet2D::erase(It first,It last)
73 for(It i=first;i!=last;i++)
A lightweight integer 2-tuple class.
Definition: IntPair.h:9
Definition: rayprimitives.h:132
A set of 2d indices within a range. Operates in two modes, set or bit matrix mode. In bit-matrix mode, allows O(1) membership testing (but the range is fixed). Set mode is just like a regular set.
Definition: RangeSet2D.h:19