COIN-OR::LEMON - Graph Library

Changeset 397:61fbd77f0f44 in lemon


Ignore:
Timestamp:
11/21/08 11:41:36 (16 years ago)
Author:
Alpar Juttner <alpar@…>
Branch:
default
Phase:
public
Message:

Don't assume that the default maps are reference maps (in Elevator)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lemon/elevator.h

    r396 r397  
    7575    void copy(Item i, Vit p)
    7676    {
    77       _where[*p=i]=p;
     77      _where.set(*p=i,p);
    7878    }
    7979    void copy(Vit s, Vit p)
     
    8383          Item i=*s;
    8484          *p=i;
    85           _where[i]=p;
     85          _where.set(i,p);
    8686        }
    8787    }
     
    9090      Item ti=*i;
    9191      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);
    9494      *j=ti;
    9595    }
     
    228228    void liftHighestActive()
    229229    {
    230       ++_level[*_last_active[_highest_active]];
     230      Item it = *_last_active[_highest_active];
     231      _level.set(it,_level[it]+1);
    231232      swap(_last_active[_highest_active]--,_last_active[_highest_active+1]);
    232233      --_first[++_highest_active];
     
    251252        }
    252253      copy(li,_first[new_level]);
    253       _level[li]=new_level;
     254      _level.set(li,new_level);
    254255      _highest_active=new_level;
    255256    }
     
    275276      copy(li,_first[_max_level]);
    276277      --_last_active[_max_level];
    277       _level[li]=_max_level;
     278      _level.set(li,_max_level);
    278279
    279280      while(_highest_active>=0 &&
     
    306307    Item liftActiveOn(int level)
    307308    {
    308       ++_level[*_last_active[level]];
     309      Item it =*_last_active[level];
     310      _level.set(it,_level[it]+1);
    309311      swap(_last_active[level]--, --_first[level+1]);
    310312      if (level+1>_highest_active) ++_highest_active;
     
    326328        }
    327329      copy(ai,_first[new_level]);
    328       _level[ai]=new_level;
     330      _level.set(ai,new_level);
    329331      if (new_level>_highest_active) _highest_active=new_level;
    330332    }
     
    346348      copy(ai,_first[_max_level]);
    347349      --_last_active[_max_level];
    348       _level[ai]=_max_level;
     350      _level.set(ai,_max_level);
    349351
    350352      if (_highest_active==level) {
     
    377379        }
    378380      copy(i,_first[new_level]);
    379       _level[i]=new_level;
     381      _level.set(i,new_level);
    380382      if(new_level>_highest_active) _highest_active=new_level;
    381383    }
     
    388390    ///\pre The item is on the top level.
    389391    void dirtyTopButOne(Item i) {
    390       _level[i] = _max_level - 1;
     392      _level.set(i,_max_level - 1);
    391393    }
    392394
     
    400402      const Vit tl=_first[_max_level];
    401403      for(Vit i=f;i!=tl;++i)
    402         _level[*i]=_max_level;
     404        _level.set(*i,_max_level);
    403405      for(int i=l;i<=_max_level;i++)
    404406        {
     
    441443        {
    442444          *n=i;
    443           _where[i]=n;
    444           _level[i]=_max_level;
     445          _where.set(i,n);
     446          _level.set(i,_max_level);
    445447          ++n;
    446448        }
     
    451453    void initAddItem(Item i)
    452454    {
    453      swap(_where[i],_init_num);
    454       _level[i]=_init_lev;
     455      swap(_where[i],_init_num);
     456      _level.set(i,_init_lev);
    455457      ++_init_num;
    456458    }
Note: See TracChangeset for help on using the changeset viewer.