| ... | ... |
@@ -74,7 +74,7 @@ |
| 74 | 74 |
|
| 75 | 75 |
void copy(Item i, Vit p) |
| 76 | 76 |
{
|
| 77 |
_where |
|
| 77 |
_where.set(*p=i,p); |
|
| 78 | 78 |
} |
| 79 | 79 |
void copy(Vit s, Vit p) |
| 80 | 80 |
{
|
| ... | ... |
@@ -82,15 +82,15 @@ |
| 82 | 82 |
{
|
| 83 | 83 |
Item i=*s; |
| 84 | 84 |
*p=i; |
| 85 |
_where |
|
| 85 |
_where.set(i,p); |
|
| 86 | 86 |
} |
| 87 | 87 |
} |
| 88 | 88 |
void swap(Vit i, Vit j) |
| 89 | 89 |
{
|
| 90 | 90 |
Item ti=*i; |
| 91 | 91 |
Vit ct = _where[ti]; |
| 92 |
_where[ti]=_where[*i=*j]; |
|
| 93 |
_where[*j]=ct; |
|
| 92 |
_where.set(ti,_where[*i=*j]); |
|
| 93 |
_where.set(*j,ct); |
|
| 94 | 94 |
*j=ti; |
| 95 | 95 |
} |
| 96 | 96 |
|
| ... | ... |
@@ -227,7 +227,8 @@ |
| 227 | 227 |
/// |
| 228 | 228 |
void liftHighestActive() |
| 229 | 229 |
{
|
| 230 |
|
|
| 230 |
Item it = *_last_active[_highest_active]; |
|
| 231 |
_level.set(it,_level[it]+1); |
|
| 231 | 232 |
swap(_last_active[_highest_active]--,_last_active[_highest_active+1]); |
| 232 | 233 |
--_first[++_highest_active]; |
| 233 | 234 |
} |
| ... | ... |
@@ -250,7 +251,7 @@ |
| 250 | 251 |
--_last_active[l]; |
| 251 | 252 |
} |
| 252 | 253 |
copy(li,_first[new_level]); |
| 253 |
_level |
|
| 254 |
_level.set(li,new_level); |
|
| 254 | 255 |
_highest_active=new_level; |
| 255 | 256 |
} |
| 256 | 257 |
|
| ... | ... |
@@ -274,7 +275,7 @@ |
| 274 | 275 |
} |
| 275 | 276 |
copy(li,_first[_max_level]); |
| 276 | 277 |
--_last_active[_max_level]; |
| 277 |
_level |
|
| 278 |
_level.set(li,_max_level); |
|
| 278 | 279 |
|
| 279 | 280 |
while(_highest_active>=0 && |
| 280 | 281 |
_last_active[_highest_active]<_first[_highest_active]) |
| ... | ... |
@@ -305,7 +306,8 @@ |
| 305 | 306 |
///by one. |
| 306 | 307 |
Item liftActiveOn(int level) |
| 307 | 308 |
{
|
| 308 |
|
|
| 309 |
Item it =*_last_active[level]; |
|
| 310 |
_level.set(it,_level[it]+1); |
|
| 309 | 311 |
swap(_last_active[level]--, --_first[level+1]); |
| 310 | 312 |
if (level+1>_highest_active) ++_highest_active; |
| 311 | 313 |
} |
| ... | ... |
@@ -325,7 +327,7 @@ |
| 325 | 327 |
copy(--_first[l+1], _last_active[l]--); |
| 326 | 328 |
} |
| 327 | 329 |
copy(ai,_first[new_level]); |
| 328 |
_level |
|
| 330 |
_level.set(ai,new_level); |
|
| 329 | 331 |
if (new_level>_highest_active) _highest_active=new_level; |
| 330 | 332 |
} |
| 331 | 333 |
|
| ... | ... |
@@ -345,7 +347,7 @@ |
| 345 | 347 |
} |
| 346 | 348 |
copy(ai,_first[_max_level]); |
| 347 | 349 |
--_last_active[_max_level]; |
| 348 |
_level |
|
| 350 |
_level.set(ai,_max_level); |
|
| 349 | 351 |
|
| 350 | 352 |
if (_highest_active==level) {
|
| 351 | 353 |
while(_highest_active>=0 && |
| ... | ... |
@@ -376,7 +378,7 @@ |
| 376 | 378 |
copy(--_first[l+1],_last_active[l]--); |
| 377 | 379 |
} |
| 378 | 380 |
copy(i,_first[new_level]); |
| 379 |
_level |
|
| 381 |
_level.set(i,new_level); |
|
| 380 | 382 |
if(new_level>_highest_active) _highest_active=new_level; |
| 381 | 383 |
} |
| 382 | 384 |
|
| ... | ... |
@@ -387,7 +389,7 @@ |
| 387 | 389 |
///you really know what it is for. |
| 388 | 390 |
///\pre The item is on the top level. |
| 389 | 391 |
void dirtyTopButOne(Item i) {
|
| 390 |
_level |
|
| 392 |
_level.set(i,_max_level - 1); |
|
| 391 | 393 |
} |
| 392 | 394 |
|
| 393 | 395 |
///Lift all items on and above a level to the top (and deactivate them). |
| ... | ... |
@@ -399,7 +401,7 @@ |
| 399 | 401 |
const Vit f=_first[l]; |
| 400 | 402 |
const Vit tl=_first[_max_level]; |
| 401 | 403 |
for(Vit i=f;i!=tl;++i) |
| 402 |
_level |
|
| 404 |
_level.set(*i,_max_level); |
|
| 403 | 405 |
for(int i=l;i<=_max_level;i++) |
| 404 | 406 |
{
|
| 405 | 407 |
_first[i]=f; |
| ... | ... |
@@ -440,8 +442,8 @@ |
| 440 | 442 |
for(typename ItemSetTraits<Graph,Item>::ItemIt i(_g);i!=INVALID;++i) |
| 441 | 443 |
{
|
| 442 | 444 |
*n=i; |
| 443 |
_where[i]=n; |
|
| 444 |
_level[i]=_max_level; |
|
| 445 |
_where.set(i,n); |
|
| 446 |
_level.set(i,_max_level); |
|
| 445 | 447 |
++n; |
| 446 | 448 |
} |
| 447 | 449 |
} |
| ... | ... |
@@ -450,8 +452,8 @@ |
| 450 | 452 |
|
| 451 | 453 |
void initAddItem(Item i) |
| 452 | 454 |
{
|
| 453 |
swap(_where[i],_init_num); |
|
| 454 |
_level[i]=_init_lev; |
|
| 455 |
swap(_where[i],_init_num); |
|
| 456 |
_level.set(i,_init_lev); |
|
| 455 | 457 |
++_init_num; |
| 456 | 458 |
} |
| 457 | 459 |
|
0 comments (0 inline)