Esempio n. 1
0
void ReadTest::installMeta(const char * def) {
    m_metaLib = NULL;
    mem_buffer_init(&m_metaLib_buffer, NULL);

    EXPECT_EQ(
        0,
        dr_create_lib_from_xml_ex(&m_metaLib_buffer, def, strlen(def), t_em()))
        << "install meta error";

    m_metaLib = (LPDRMETALIB)mem_buffer_make_exactly(&m_metaLib_buffer);
}
Esempio n. 2
0
void dir_search(
    dir_visitor_t visitor, void * ctx,
    const char * path, int maxLevel,
    error_monitor_t em, mem_allocrator_t talloc)
{
    struct mem_buffer buffer;
    mem_buffer_init(&buffer, talloc);

    mem_buffer_strcat(&buffer, path);

    dir_search_i(visitor, ctx, maxLevel, em, &buffer);

    mem_buffer_clear(&buffer);
}
Esempio n. 3
0
int tools_main(error_monitor_t em) {
    struct cpe_dr_generate_ctx ctx;
    struct mem_buffer buffer;
    int rv;

    ctx.m_builder = NULL;
    ctx.m_metalib = NULL;
    ctx.m_em = em;

    rv = 0;

    ctx.m_builder = dr_metalib_builder_create(NULL, em);
    if (ctx.m_builder == NULL) {
        CPE_ERROR(em, "create metalib builder fail!");
        return -1;
    }

    prepare_input(ctx.m_builder, em);

    dr_metalib_builder_analize(ctx.m_builder);

    mem_buffer_init(&buffer, 0);
    if (dr_inbuild_build_lib(
            &buffer,
            dr_metalib_bilder_lib(ctx.m_builder),
            em) == 0)
    {
        ctx.m_metalib = (LPDRMETALIB)mem_buffer_make_continuous(&buffer, 0), mem_buffer_size(&buffer);

        if (ctx.m_metalib) {
            if (do_validate(&ctx) != 0) rv = -1;
            if (do_generate_h(&ctx) != 0) rv = -1;
            if (do_generate_lib_bin(&ctx) != 0) rv = -1;
            if (do_generate_lib_c(&ctx) != 0) rv = -1;
        }
    }
    else {
        rv = -1;
    }

    mem_buffer_clear(&buffer);
    dr_metalib_builder_free(ctx.m_builder);

    return rv;
}
Esempio n. 4
0
const char *
PrintPathTest::path(const char * p, const char * r) {
    EXPECT_TRUE(m_root) << "root not set!";

    cfg_t input = cfg_find_cfg(m_root, p);
    EXPECT_TRUE(input) << "input path " << p << " not exist";

    cfg_t to = 0;
    if (r) {
        to = cfg_find_cfg(m_root, r);
        EXPECT_TRUE(input) << "root path " << r << " not exist";
    }

    struct mem_buffer buffer;
    mem_buffer_init(&buffer, t_tmp_allocrator());

    return cfg_path(&buffer, input, to);
}
Esempio n. 5
0
static int do_generate_h(cpe_dr_generate_ctx_t ctx) {
    struct dr_metalib_source_it source_it;
    dr_metalib_source_t source;
    struct mem_buffer buffer;
    struct write_stream_file stream;
    int i;
    FILE * fp;
    int rv;

    mem_buffer_init(&buffer, 0);

    rv = 0;
    for(i = 0; i < o_h->count; ++i) {
        dr_metalib_builder_sources(&source_it, ctx->m_builder);
        while((source = dr_metalib_source_next(&source_it))) {
            const char * file_name;

            if (dr_metalib_source_from(source) != dr_metalib_source_from_user) continue;

            file_name = dr_metalib_source_file(source);
            if (file_name == NULL) continue;

            mem_buffer_clear_data(&buffer);
            mem_buffer_strcat(&buffer, o_h->filename[i]);
            mem_buffer_strcat(&buffer, "/");
            file_name_append_base(&buffer, file_name);
            mem_buffer_strcat(&buffer, ".h");

            fp = file_stream_open((char *)mem_buffer_make_continuous(&buffer, 0), "w", ctx->m_em);
            if (fp == NULL) {
                rv = -1;
                continue;
            }

            write_stream_file_init(&stream, fp, ctx->m_em);
            cpe_dr_generate_h((write_stream_t)&stream, source, ctx);
            file_stream_close(fp, ctx->m_em);
        }
    }

    mem_buffer_clear(&buffer);

    return rv;
}
Esempio n. 6
0
dr_metalib_source_t
dr_metalib_builder_add_file(dr_metalib_builder_t builder, const char * name, const char * file) {
    dr_metalib_source_t source;
    struct mem_buffer name_buffer;
    size_t file_len;
    const char * suffix;
    dr_metalib_source_format_t format;

    assert(builder);
    assert(file);

    suffix = file_name_suffix(file);
    if (suffix == NULL) return 0;
    if (strcmp(suffix, "xml") == 0) {
        format = dr_metalib_source_format_xml;
    }
    else {
        return NULL;
    }

    mem_buffer_init(&name_buffer, 0);
    if (name == NULL) {
        name = file_name_base(file, &name_buffer);
        if (name == NULL) {
            mem_buffer_clear(&name_buffer);
            return NULL;
        }
    }

    assert(name);

    file_len = strlen(file) + 1;
    source = dr_metalib_source_create(builder, name, file_len, dr_metalib_source_type_file, format, dr_metalib_source_from_user);
    if (source == NULL) {
        mem_buffer_clear(&name_buffer);
        return NULL;
    }

    memcpy(source + 1, file, file_len);

    mem_buffer_clear(&name_buffer);
    return source;
}
Esempio n. 7
0
void with_dr_store::t_dr_store_reset(const char * name, const char * def) {
    struct mem_buffer buffer;
    mem_buffer_init(&buffer, t_tmp_allocrator());

    EXPECT_EQ(
        0,
        dr_create_lib_from_xml_ex(
            &buffer,
            def,
            strlen(def),
            NULL));

    dr_store_t dr_store = dr_store_find_or_create(m_dr_store_mgr, name);
    ASSERT_TRUE(dr_store) << "find or crate dr_store " << name << " fail!";

    EXPECT_EQ(
        0, 
        dr_store_set_lib(dr_store, (LPDRMETALIB)mem_buffer_make_continuous(&buffer, 0), NULL, NULL));
}
Esempio n. 8
0
void ReadTest::SetUp() {
    Base::SetUp();
    mem_buffer_init(&m_metaLib_buffer, NULL);
}
Esempio n. 9
0
void MergeTest::SetUp() {
    Base::SetUp();
    mem_buffer_init(&m_result_buffer, NULL);
}
Esempio n. 10
0
void BufferTest::SetUp() {
    Base::SetUp();
    mem_buffer_init(&m_buffer, t_allocrator());
}