Exemplo n.º 1
0
Arquivo: main.c Projeto: taysom/tau
struct db open_db(const char *dir)
{
    struct db db;

    db.w = open_logger(path(dir, "log"));
    db.r = open_reader(path(dir, "log"));
    db.mt = open_mtree(path(dir, "mtree"));
    db.bag = new_bag(BAG_SIZE);
    return db;
}
Exemplo n.º 2
0
    void PushVector(const std::vector<T*> array)
    {
        totle_weight_ = 0.0;
        ptr_array_.clear();
        bool is_not_overflow = true;

        int length = array.size();
        int* elements = new int[length];

        std::vector< xxcig::shared_ptr<SmartBag> > bag_array;

        for (int i = 0; i < length; ++i)
        {
            elements[i] = 1;
            std::vector<int> selectors(elements, elements + length);

            do {
                xxcig::shared_ptr<SmartBag> new_bag(new SmartBag(capacity_, param_function_));
                for (size_t j = 0; j < selectors.size(); ++j) {
                    if (1 == selectors[j]) {
                        is_not_overflow = new_bag->PushMaterial(array[j]);
                    }
                }
                if (new_bag->Size() > 0) {
                    bag_array.push_back(new_bag);
                }
            } while (prev_permutation(selectors.begin(), selectors.end()));

            sort(bag_array.begin(), bag_array.end(), SmartBag::CompareBag);
            while (bag_array.size() > 1) {
                bag_array.pop_back();  // only leave the largest one
            }

            if (!is_not_overflow) {
                break;
            }
        }

        delete[] elements;
        if (bag_array.size() > 0) {
            for (int k = 0; k < bag_array.front()->Size(); ++k) {
                PushMaterial(bag_array.front()->GetMaterial(k));
            }
        }
    }
Exemplo n.º 3
0
Arquivo: main.c Projeto: taysom/tau
void test_bag(int num_recs)
{
    u64 key;
    struct lump val;
    struct bag *bag;
    u64 i;

    bag = new_bag(10);
    for (i = 0; i < num_recs; i++) {
        key = randkey();
        if (0) val = randlump();
        if (1) val = key2lump(key);
        //printf("%lld %*s\n", key, val.size, (char *)val.d);
        stuff_bag(bag, key, val);
    }
    sort_bag(bag);
    pr_bag(bag);
    free_bag(bag);
}