| 236 | } |
| 237 | template<class View, bool pos> |
| 238 | forceinline void |
| 239 | Compact<View,pos>::ValidSupports::operator ++(void) { |
| 240 | n++; |
| 241 | if (pos) { |
| 242 | if (n <= xr.max()) { |
| 243 | assert(n <= sr->max); |
| 244 | s += n_words; |
| 245 | } else if (n <= max) { |
| 246 | while (n > xr.max()) |
| 247 | ++xr; |
| 248 | n = xr.min(); |
| 249 | while (n > sr->max) |
| 250 | sr++; |
| 251 | s = sr->supports(n_words,n); |
| 252 | assert((xr.min() <= n) && (n <= xr.max())); |
| 253 | assert((sr->min <= n) && (n <= sr->max)); |
| 254 | assert(sr->min <= xr.min()); |
| 255 | } |
| 256 | } else { |
| 257 | if ((n <= sr->max) && (n <= xr.max())) { |
| 258 | s += n_words; |
| 259 | } else if (n <= max) { |
| 260 | find(); |
| 261 | } |
| 262 | } |
| 263 | } |
| 264 | template<class View, bool pos> |
| 265 | forceinline bool |
| 266 | Compact<View,pos>::ValidSupports::operator ()(void) const { |