| 176 | |
| 177 | template<class View, bool pos> |
| 178 | forceinline void |
| 179 | Compact<View,pos>::ValidSupports::find(void) { |
| 180 | assert(!pos); |
| 181 | assert(n <= max); |
| 182 | while (true) { |
| 183 | while (xr() && (n > xr.max())) |
| 184 | ++xr; |
| 185 | if (!xr()) { |
| 186 | n = max+1; return; |
| 187 | } |
| 188 | assert(n <= xr.max()); |
| 189 | n = std::max(n,xr.min()); |
| 190 | |
| 191 | while ((sr <= lst) && (n > sr->max)) |
| 192 | sr++; |
| 193 | if (sr > lst) { |
| 194 | n = max+1; return; |
| 195 | } |
| 196 | assert(n <= sr->max); |
| 197 | n = std::max(n,sr->min); |
| 198 | |
| 199 | if ((xr.min() <= n) && (n <= xr.max())) { |
| 200 | s = sr->supports(n_words,n); |
| 201 | return; |
| 202 | } |
| 203 | } |
| 204 | GECODE_NEVER; |
| 205 | } |
| 206 | |
| 207 | template<class View, bool pos> |
| 208 | forceinline |