コード例 #1
0
ファイル: lsyck.c プロジェクト: cobexer/RPM5
static void lua_syck_mark_emitter(SyckEmitter *e, int idx)
{
    struct emitter_xtra *bonus = (struct emitter_xtra *)e->bonus;
    int type = lua_type(bonus->L, idx);

    switch (type) {
    case LUA_TTABLE:
        lua_pushnil(bonus->L);  /* first key */
        while (lua_next(bonus->L, -2) != 0) {
            /* `key' is at index -2 and `value' at index -1 */
            //syck_emitter_mark_node(e, bonus->id++);
            syck_emitter_mark_node(e, (st_data_t)((long)bonus->id++));
            lua_syck_mark_emitter(e, -1);
            lua_pop(bonus->L, 1);
        }
        break;
    default:
        syck_emitter_mark_node(e, (st_data_t)((long)bonus->id++));
        break;
    }
}
コード例 #2
0
ファイル: extra-delimiter-bug.c プロジェクト: ifwe/pysyck
int main(int argc, char *argv[])
{
    SyckEmitter *e;
    int k;

    e = syck_new_emitter();
    syck_emitter_handler(e, emitter_handler);
    syck_output_handler(e, output_handler);
    for (k = 1; k < LENGTH; k++) {
        syck_emitter_mark_node(e, k);
    }
    syck_emit(e, 1);
    syck_emitter_flush(e, 0);
    syck_free_emitter(e);
}