예제 #1
0
int main(int argc,const char* argv[])
{
    _START_EASYLOGGINGPP(argc,argv);
    el::Loggers::addFlag(el::LoggingFlag::ColoredTerminalOutput);
    el::Loggers::reconfigureAllLoggers(el::ConfigurationType::Format, "%datetime : %msg");

    LOG(INFO) << "Parsing command line arguments";
    cmdargs_t args = parse_args(argc,argv);

    LOG(INFO) << "Parsing collection directory " << args.collection_dir;
    collection col(args.collection_dir);

    auto patterns = pattern_parser::parse_file<false>(args.pattern_file);
    LOG(INFO) << "Parsed " << patterns.size() << " patterns from file " << args.pattern_file;

    /* verify index */
    // {
    //     index_sort<> index(col);
    //     verify_index(index,patterns,"SORT");
    // }
    // {
    //     index_wt<> index(col);
    //     verify_index(index,patterns,"WT");
    // }
    // {
    //     index_sada<> index(col);
    //     verify_index(index,patterns,"SADA");
    // }
    {
        using invidx_type = index_invidx<optpfor_list<128,true>,optpfor_list<128,false>>;
        index_abspos<eliasfano_list<true>,invidx_type> index(col);
        verify_index(index,patterns,"ABS-EF");
    }
    {
        using invidx_type = index_invidx<optpfor_list<128,true>,optpfor_list<128,false>>;
        index_abspos<eliasfano_sskip_list<32,true>,invidx_type> index(col);
        verify_index(index,patterns,"ABS-ESSF-64");
    }
    {
        using invidx_type = index_invidx<optpfor_list<128,true>,optpfor_list<128,false>>;
        index_abspos<eliasfano_skip_list<64,true>,invidx_type> index(col);
        verify_index(index,patterns,"ABS-ESF-64");
    }
    // {
    //     using invidx_type = index_invidx<optpfor_list<128,true>,optpfor_list<128,false>>;
    //     index_abspos<uniform_eliasfano_list<128>,invidx_type> index(col);
    //     verify_index(index,patterns,"ABS-UEF-128");
    // }
    // {
    //     using invidx_type = index_invidx<optpfor_list<128,true>,optpfor_list<128,false>>;
    //     index_nextword<eliasfano_list<true>,invidx_type> index(col);
    //     verify_index(index,patterns,"NEXT-EF");
    // }

    return 0;
}
예제 #2
0
bool JsonArray::has_object(int i)
{
    verify_index(i);
    jsin->seek(positions[i]);
    return jsin->test_object();
}
예제 #3
0
bool JsonArray::has_string(int i)
{
    verify_index(i);
    jsin->seek(positions[i]);
    return jsin->test_string();
}
예제 #4
0
JsonObject JsonArray::get_object(int i)
{
    verify_index(i);
    jsin->seek(positions[i]);
    return jsin->get_object();
}
예제 #5
0
JsonArray JsonArray::get_array(int i)
{
    verify_index(i);
    jsin->seek(positions[i]);
    return jsin->get_array();
}
예제 #6
0
std::string JsonArray::get_string(int i)
{
    verify_index(i);
    jsin->seek(positions[i]);
    return jsin->get_string();
}
예제 #7
0
double JsonArray::get_float(int i)
{
    verify_index(i);
    jsin->seek(positions[i]);
    return jsin->get_float();
}
예제 #8
0
JsonObject JsonArray::next_object()
{
    verify_index(index);
    jsin->seek(positions[index++]);
    return jsin->get_object();
}
예제 #9
0
JsonArray JsonArray::next_array()
{
    verify_index(index);
    jsin->seek(positions[index++]);
    return jsin->get_array();
}
예제 #10
0
std::string JsonArray::next_string()
{
    verify_index(index);
    jsin->seek(positions[index++]);
    return jsin->get_string();
}
예제 #11
0
double JsonArray::next_float()
{
    verify_index(index);
    jsin->seek(positions[index++]);
    return jsin->get_float();
}
예제 #12
0
bool JsonArray::has_number(int i)
{
    verify_index(i);
    jsin->seek(positions[i]);
    return jsin->test_number();
}
예제 #13
0
void JsonArray::skip_value()
{
    verify_index(index);
    ++index;
}
예제 #14
0
json_value_type JsonArray::get_index_type(int i)
{
    verify_index(i);
    jsin->seek(positions[i]);
    return jsin->get_next_type();
}