Example #1
0
    void
    increment() override
    {
        assert (sle1_ || sle0_);

        if (sle1_ && !sle0_)
        {
            inc1();
            return;
        }

        if (sle0_ && !sle1_)
        {
            inc0();
            return;
        }

        if (sle1_->key () == sle0_->key())
        {
            inc1();
            inc0();
        }
        else if (sle1_->key () < sle0_->key())
        {
            inc1();
        }
        else
        {
            inc0();
        }
        skip();
    }
Example #2
0
 void skip()
 {
     while (iter1_ != end1_ &&
         iter1_->second.first == Action::erase &&
            sle0_->key() == sle1_->key())
     {
         inc1();
         inc0();
         if (! sle0_)
             return;
     }
 }
Example #3
0
void *inc(void **p, int sz) {
    void *p0;
    p0 = *p;
    inc0(p, sz);
    return p0;
}