# class BDB::Sequence

### Public Instance Methods

cachesize() click to toggle source

    static VALUE
    bdb_seq_cachesize(VALUE obj)
    {

        bdb_SEQ *seqst;
        int size;

        GetSEQ(obj, seqst);
        bdb_test_error(seqst->seqp->get_cachesize(seqst->seqp, &size));
        return INT2NUM(size);
    }

close() click to toggle source

    static VALUE
    bdb_seq_close(VALUE obj)
    {
        bdb_SEQ *seqst;

        GetSEQ(obj, seqst);
        seqst->seqp->close(seqst->seqp, 0);
        seqst->seqp = NULL;
        return Qnil;
    }

db() click to toggle source

    static VALUE
    bdb_seq_db(VALUE obj)
    {
        bdb_SEQ *seqst;

        GetSEQ(obj, seqst);
        return seqst->db;
    }

flags() click to toggle source

    static VALUE
    bdb_seq_flags(VALUE obj)
    {

        bdb_SEQ *seqst;
        unsigned int flags;

        GetSEQ(obj, seqst);
        bdb_test_error(seqst->seqp->get_flags(seqst->seqp, &flags));
        return INT2NUM(flags);
    }

get(p1 = v1, p2 = v2) click to toggle source

    static VALUE
    bdb_seq_get(int argc, VALUE *argv, VALUE obj)
    {
        bdb_SEQ *seqst;
        int delta = 1, flags = 0;
        VALUE a, b;
        db_seq_t val;

        GetSEQ(obj, seqst);
        switch (rb_scan_args(argc, argv, "02", &a, &b)) {
        case 2:
            flags = NUM2INT(b);
            /* ... */
        case 1:
            delta = NUM2INT(a);
        }
        bdb_test_error(seqst->seqp->get(seqst->seqp, seqst->txnid, delta, &val, flags));
        return LONG2NUM(val);
    }

key() click to toggle source

    static VALUE
    bdb_seq_key(VALUE obj)
    {
        bdb_SEQ *seqst;
        DBT key;

        GetSEQ(obj, seqst);
        bdb_test_error(seqst->seqp->get_key(seqst->seqp, &key));
        return bdb_test_load_key(seqst->db, &key);
    }

range() click to toggle source

    static VALUE
    bdb_seq_range(VALUE obj)
    {
        bdb_SEQ *seqst;
        db_seq_t deb, fin;

        GetSEQ(obj, seqst);
        bdb_test_error(seqst->seqp->get_range(seqst->seqp, &deb, &fin));
        return rb_assoc_new(LONG2NUM(deb), LONG2NUM(fin));
    }

remove(p1 = v1) click to toggle source

    static VALUE
    bdb_seq_remove(int argc, VALUE *argv, VALUE obj)
    {
        bdb_SEQ *seqst;
        VALUE a;
        int flags = 0;

        GetSEQ(obj, seqst);
        if (rb_scan_args(argc, argv, "01", &a)) {
            flags = NUM2INT(a);
        }
        if (seqst->seqp->remove(seqst->seqp, seqst->txnid, flags)) {
            rb_raise(rb_eArgError, "invalid argument");
        }
        seqst->seqp = NULL;
        return Qnil;
    }

stat(p1 = v1) click to toggle source

    static VALUE
    bdb_seq_stat(int argc, VALUE *argv, VALUE obj)
    {
        bdb_SEQ *seqst;
        int  flags = 0;
        VALUE a, res;
        DB_SEQUENCE_STAT sta;

        GetSEQ(obj, seqst);
        if (rb_scan_args(argc, argv, "01", &a)) {
            flags = NUM2INT(a);
        }
        bdb_test_error(seqst->seqp->stat(seqst->seqp, (void *)&sta, flags));
        res = rb_hash_new();
        rb_hash_aset(res, rb_str_new2("wait"), INT2NUM(sta.st_wait));
        rb_hash_aset(res, rb_str_new2("nowait"), INT2NUM(sta.st_nowait));
        rb_hash_aset(res, rb_str_new2("current"), INT2NUM(sta.st_current));
        rb_hash_aset(res, rb_str_new2("value"), INT2NUM(sta.st_value));
        rb_hash_aset(res, rb_str_new2("last_value"), INT2NUM(sta.st_last_value));
        rb_hash_aset(res, rb_str_new2("min"), INT2NUM(sta.st_min));
        rb_hash_aset(res, rb_str_new2("max"), INT2NUM(sta.st_max));
        rb_hash_aset(res, rb_str_new2("cache_size"), INT2NUM(sta.st_cache_size));
        rb_hash_aset(res, rb_str_new2("flags"), INT2NUM(sta.st_flags));
        return res;
    }