示例#1
0
TEST_F(BuilderBasicTest, it_basic) {
    dr_metalib_source_t source_a = dr_metalib_builder_add_file(m_builder, NULL, "a.xml");
    dr_metalib_source_t source_b = dr_metalib_builder_add_file(m_builder, NULL, "b.xml");

    struct dr_metalib_source_it it;
    dr_metalib_builder_sources(&it, m_builder);

    EXPECT_TRUE(source_a == dr_metalib_source_next(&it));
    EXPECT_TRUE(source_b == dr_metalib_source_next(&it));
    EXPECT_TRUE(NULL == dr_metalib_source_next(&it));
}
示例#2
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;
}
示例#3
0
TEST_F(BuilderBasicTest, it_empty) {
    struct dr_metalib_source_it it;
    dr_metalib_builder_sources(&it, m_builder);

    EXPECT_TRUE(NULL == dr_metalib_source_next(&it));
}