Пример #1
1
void mpack_write_tag(mpack_writer_t* writer, mpack_tag_t value) {
    switch (value.type) {
        case mpack_type_nil:    mpack_write_nil   (writer);            break;
        case mpack_type_bool:   mpack_write_bool  (writer, value.v.b); break;
        case mpack_type_float:  mpack_write_float (writer, value.v.f); break;
        case mpack_type_double: mpack_write_double(writer, value.v.d); break;
        case mpack_type_int:    mpack_write_int   (writer, value.v.i); break;
        case mpack_type_uint:   mpack_write_uint  (writer, value.v.u); break;

        case mpack_type_str: mpack_start_str(writer, value.v.l); break;
        case mpack_type_bin: mpack_start_bin(writer, value.v.l); break;
        case mpack_type_ext: mpack_start_ext(writer, value.exttype, value.v.l); break;

        case mpack_type_array: mpack_start_array(writer, value.v.n); break;
        case mpack_type_map:   mpack_start_map(writer, value.v.n);   break;

        default:
            mpack_assert(0, "unrecognized type %i", (int)value.type);
            break;
    }
}
Пример #2
1
static void pack_test(void)
{
    /***************  Test of pack  *****************/
    
    cw_pack_context pc;
    cmp_ctx_t cc;
    mpack_writer_t mw;
    
    int ii, itemSize;
    for (ii=0; ii<BUF_Length; ii++) buffer[ii] = 0; /*Load pages in memory*/
    uint8_t item[40];
    
    
    BEFORE_PTEST(cw_pack_nil(&pc));
    PTEST("CMP",cmp_write_nil(&cc));
    PTEST("MPack", mpack_write_nil(&mw));
    PTEST("CWPack", cw_pack_nil(&pc));
    AFTER_PTEST;
    
    BEFORE_PTEST(cw_pack_signed(&pc, -1));
    PTEST("CMP",cmp_write_integer(&cc, -1));
    PTEST("MPack", mpack_write_i64(&mw, -1));
    PTEST("CWPack", cw_pack_signed(&pc, -1));
    AFTER_PTEST;
    
    BEFORE_PTEST(cw_pack_signed(&pc, 200));
    PTEST("CMP",cmp_write_integer(&cc, 200));
    PTEST("MPack", mpack_write_i64(&mw, 200));
    PTEST("CWPack", cw_pack_signed(&pc, 200));
    AFTER_PTEST;
    
    BEFORE_PTEST(cw_pack_signed(&pc, 10000));
    PTEST("CMP",cmp_write_integer(&cc, 10000));
    PTEST("MPack", mpack_write_i64(&mw, 10000));
    PTEST("CWPack", cw_pack_signed(&pc, 10000));
    AFTER_PTEST;
    
    BEFORE_PTEST(cw_pack_signed(&pc, 100000));
    PTEST("CMP",cmp_write_integer(&cc, 100000));
    PTEST("MPack", mpack_write_i64(&mw, 100000));
    PTEST("CWPack", cw_pack_signed(&pc, 100000));
    AFTER_PTEST;
    
    BEFORE_PTEST(cw_pack_float(&pc, (float)3.14));
    PTEST("CMP",cmp_write_float(&cc, (float)3.14));
    PTEST("MPack", mpack_write_float(&mw, (float)3.14));
    PTEST("CWPack", cw_pack_float(&pc, (float)3.14));
    AFTER_PTEST;
    
    BEFORE_PTEST(cw_pack_double(&pc, 3.14));
    PTEST("CMP",cmp_write_decimal(&cc, 3.14));
    PTEST("MPack", mpack_write_double(&mw, 3.14));
    PTEST("CWPack", cw_pack_double(&pc, 3.14));
    AFTER_PTEST;
    
    BEFORE_PTEST(cw_pack_str(&pc, "Claes",5));
    PTEST("CMP",cmp_write_str(&cc, "Claes",5));
    PTEST("MPack", mpack_write_str(&mw, "Claes",5));
    PTEST("CWPack", cw_pack_str(&pc, "Claes",5));
    AFTER_PTEST;
    
    BEFORE_PTEST(cw_pack_str(&pc, "Longer string than the other one.",33));
    PTEST("CMP",cmp_write_str(&cc, "Longer string than the other one.",33));
    PTEST("MPack", mpack_write_str(&mw, "Longer string than the other one.",33));
    PTEST("CWPack", cw_pack_str(&pc, "Longer string than the other one.",33));
    AFTER_PTEST;
}