sux 0.12.3

A pure Rust implementation of succinct and compressed data structures
Documentation
#define BOOST_TEST_MODULE positive_sequence

#include "test_generic_sequence.hpp"

#include "positive_sequence.hpp"
#include "partitioned_sequence.hpp"
#include "uniform_partitioned_sequence.hpp"
#include <vector>
#include <cstdlib>
#include <algorithm>
#include <numeric>

template <typename BaseSequence>
void test_positive_sequence()
{
    srand(42);
    ds2i::global_parameters params;
    size_t n = 50000;
    std::vector<uint64_t> values(n);
    std::generate(values.begin(), values.end(), []() { return (rand() % 256) + 1; });
    uint64_t universe = std::accumulate(values.begin(), values.end(), 0) + 1;

    typedef ds2i::positive_sequence<BaseSequence> sequence_type;
    succinct::bit_vector_builder bvb;
    sequence_type::write(bvb, values.begin(), universe, values.size(), params);
    succinct::bit_vector bv(&bvb);
    typename sequence_type::enumerator r(bv, 0, universe, values.size(), params);

    for (size_t i = 0; i < n; ++i) {
        auto val = r.move(i);
        MY_REQUIRE_EQUAL(i, val.first,
                         "i = " << i);
        MY_REQUIRE_EQUAL(values[i], val.second,
                         "i = " << i);
    }
}

BOOST_AUTO_TEST_CASE(positive_sequence)
{
    test_positive_sequence<ds2i::strict_sequence>();
    test_positive_sequence<ds2i::partitioned_sequence<ds2i::strict_sequence>>();
    test_positive_sequence<ds2i::uniform_partitioned_sequence<ds2i::strict_sequence>>();
}