示例#1
0
文件: serialize.c 项目: LubkaB/mc
/* *INDENT-OFF* */
START_PARAMETRIZED_TEST (test_serialize, test_serialize_ds)
/* *INDENT-ON* */
{
    /* given */
    char *actual_result;

    /* when */
    actual_result = mc_serialize_str (data->input_char_prefix, data->input_string, &error);

    /* then */
    mctest_assert_str_eq (actual_result, data->expected_result);

    g_free (actual_result);

}
示例#2
0
char *
mc_serialize_config (const mc_config_t * data, GError ** error)
{
    gchar **groups, **group_iterator;
    size_t group_count;
    GString *buffer;

    buffer = g_string_new ("");
    group_iterator = groups = mc_config_get_groups (data, &group_count);

    while (group_count-- != 0)
    {
        char *serialized_str;
        gchar **params, **param_iterator;
        size_t param_count;

        serialized_str = mc_serialize_str ('g', *group_iterator, error);
        if (serialized_str == NULL)
        {
            g_string_free (buffer, TRUE);
            g_strfreev (groups);
            return NULL;
        }
        g_string_append (buffer, serialized_str);
        g_free (serialized_str);

        param_iterator = params = mc_config_get_keys (data, *group_iterator, &param_count);

        while (param_count-- != 0)
        {
            char *value;
            serialized_str = mc_serialize_str ('p', *param_iterator, error);
            if (serialized_str == NULL)
            {
                g_string_free (buffer, TRUE);
                g_strfreev (params);
                g_strfreev (groups);
                return NULL;
            }
            g_string_append (buffer, serialized_str);
            g_free (serialized_str);

            value = mc_config_get_string_raw (data, *group_iterator, *param_iterator, "");
            serialized_str = mc_serialize_str ('v', value, error);
            g_free (value);

            if (serialized_str == NULL)
            {
                g_string_free (buffer, TRUE);
                g_strfreev (params);
                g_strfreev (groups);
                return NULL;
            }

            g_string_append (buffer, serialized_str);
            g_free (serialized_str);

            param_iterator++;
        }

        g_strfreev (params);

        group_iterator++;
    }
    return g_string_free (buffer, FALSE);
}