void Pass::adjustSlot(int delta, Slot * & slot_out, SlotMap & smap) const { if (delta < 0) { if (!slot_out) { slot_out = smap.segment.last(); ++delta; if (smap.highpassed() && !smap.highwater()) smap.highpassed(false); } while (++delta <= 0 && slot_out) { if (smap.highpassed() && smap.highwater() == slot_out) smap.highpassed(false); slot_out = slot_out->prev(); } } else if (delta > 0) { if (!slot_out) { slot_out = smap.segment.first(); --delta; } while (--delta >= 0 && slot_out) { slot_out = slot_out->next(); if (slot_out == smap.highwater() && slot_out) smap.highpassed(true); } } }