| 81 | ConstSetView::ConstSetView(void) : ranges(nullptr), size(0), domSize(0) {} |
| 82 | |
| 83 | forceinline |
| 84 | ConstSetView::ConstSetView(Space& home, const IntSet& dom) { |
| 85 | size = dom.ranges(); |
| 86 | domSize = 0; |
| 87 | if (size > 0) { |
| 88 | ranges = home.alloc<int>(2*size); |
| 89 | IntSetRanges dr(dom); |
| 90 | for (int i=0; dr(); ++dr, i+=2) { |
| 91 | int min = dr.min(); int max = dr.max(); |
| 92 | ranges[i] = min; |
| 93 | ranges[i+1] = max; |
| 94 | domSize += static_cast<unsigned int>(max-min+1); |
| 95 | } |
| 96 | } else { |
| 97 | ranges = nullptr; |
| 98 | } |
| 99 | } |
| 100 | |
| 101 | forceinline unsigned int |
| 102 | ConstSetView::glbSize(void) const { return domSize; } |