Add version macro for XML schema.
This commit is contained in:
		@ -102,7 +102,7 @@ validate (const gchar  *element_name,
 | 
				
			|||||||
    gchar *element_path;
 | 
					    gchar *element_path;
 | 
				
			||||||
    GSList *head;
 | 
					    GSList *head;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    head = g_slist_prepend (element_stack, element_name);
 | 
					    head = g_slist_prepend (element_stack, (gchar *)element_name);
 | 
				
			||||||
    element_path = strjoin_slist (head, "/");
 | 
					    element_path = strjoin_slist (head, "/");
 | 
				
			||||||
    g_slist_free1 (head);
 | 
					    g_slist_free1 (head);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -138,7 +138,7 @@ start_element_callback (GMarkupParseContext *pcontext,
 | 
				
			|||||||
    const gchar **names = attribute_names;
 | 
					    const gchar **names = attribute_names;
 | 
				
			||||||
    const gchar **values = attribute_values;
 | 
					    const gchar **values = attribute_values;
 | 
				
			||||||
    gint column = -1, row = -1, groups = -1, levels = -1;
 | 
					    gint column = -1, row = -1, groups = -1, levels = -1;
 | 
				
			||||||
    gchar *name = NULL, *id = NULL;
 | 
					    gchar *name = NULL, *id = NULL, *version = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    validate (element_name, data->element_stack, error);
 | 
					    validate (element_name, data->element_stack, error);
 | 
				
			||||||
    if (error && *error)
 | 
					    if (error && *error)
 | 
				
			||||||
@ -153,6 +153,8 @@ start_element_callback (GMarkupParseContext *pcontext,
 | 
				
			|||||||
            name = g_strdup (*values);
 | 
					            name = g_strdup (*values);
 | 
				
			||||||
        else if (g_strcmp0 (*names, "id") == 0)
 | 
					        else if (g_strcmp0 (*names, "id") == 0)
 | 
				
			||||||
            id = g_strdup (*values);
 | 
					            id = g_strdup (*values);
 | 
				
			||||||
 | 
					        else if (g_strcmp0 (*names, "version") == 0)
 | 
				
			||||||
 | 
					            version = g_strdup (*values);
 | 
				
			||||||
        else if (g_strcmp0 (*names, "groups") == 0)
 | 
					        else if (g_strcmp0 (*names, "groups") == 0)
 | 
				
			||||||
            groups = strtol (*values, NULL, 10);
 | 
					            groups = strtol (*values, NULL, 10);
 | 
				
			||||||
        else if (g_strcmp0 (*names, "levels") == 0)
 | 
					        else if (g_strcmp0 (*names, "levels") == 0)
 | 
				
			||||||
@ -198,6 +200,7 @@ start_element_callback (GMarkupParseContext *pcontext,
 | 
				
			|||||||
 out:
 | 
					 out:
 | 
				
			||||||
    g_free (name);
 | 
					    g_free (name);
 | 
				
			||||||
    g_free (id);
 | 
					    g_free (id);
 | 
				
			||||||
 | 
					    g_free (version);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    data->element_stack = g_slist_prepend (data->element_stack,
 | 
					    data->element_stack = g_slist_prepend (data->element_stack,
 | 
				
			||||||
                                           g_strdup (element_name));
 | 
					                                           g_strdup (element_name));
 | 
				
			||||||
@ -238,7 +241,8 @@ end_element_callback (GMarkupParseContext *pcontext,
 | 
				
			|||||||
        head = data->keysyms = g_slist_reverse (data->keysyms);
 | 
					        head = data->keysyms = g_slist_reverse (data->keysyms);
 | 
				
			||||||
        for (i = 0; i < num_keysyms; i++) {
 | 
					        for (i = 0; i < num_keysyms; i++) {
 | 
				
			||||||
            if (head) {
 | 
					            if (head) {
 | 
				
			||||||
                keysyms[i] = (guint)head->data;
 | 
					                keysyms[i] = *(guint *)head->data;
 | 
				
			||||||
 | 
					                g_slice_free (guint, head->data);
 | 
				
			||||||
                head = g_slist_next (head);
 | 
					                head = g_slist_next (head);
 | 
				
			||||||
            } else
 | 
					            } else
 | 
				
			||||||
                keysyms[i] = EEK_INVALID_KEYSYM;
 | 
					                keysyms[i] = EEK_INVALID_KEYSYM;
 | 
				
			||||||
@ -355,8 +359,10 @@ end_element_callback (GMarkupParseContext *pcontext,
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (g_strcmp0 (element_name, "keysym") == 0) {
 | 
					    if (g_strcmp0 (element_name, "keysym") == 0) {
 | 
				
			||||||
        guint keysym = strtoul (text, NULL, 10);
 | 
					        guint *keysym = g_slice_new(guint);
 | 
				
			||||||
        data->keysyms = g_slist_prepend (data->keysyms, (gpointer)keysym);
 | 
					
 | 
				
			||||||
 | 
					        *keysym = strtoul (text, NULL, 10);
 | 
				
			||||||
 | 
					        data->keysyms = g_slist_prepend (data->keysyms, keysym);
 | 
				
			||||||
        goto out;
 | 
					        goto out;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -190,7 +190,10 @@ eek_keyboard_output (EekKeyboard *keyboard, GString *output, gint indent)
 | 
				
			|||||||
    g_assert (EEK_IS_KEYBOARD(keyboard));
 | 
					    g_assert (EEK_IS_KEYBOARD(keyboard));
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
    g_string_append_indent (output, indent);
 | 
					    g_string_append_indent (output, indent);
 | 
				
			||||||
    g_string_markup_printf (output, "<?xml version=\"1.0\"?>\n<keyboard>\n");
 | 
					    g_string_markup_printf (output, "<?xml version=\"1.0\"?>\n"
 | 
				
			||||||
 | 
					                            "<keyboard version=\""
 | 
				
			||||||
 | 
					                            EEK_XML_SCHEMA_VERSION
 | 
				
			||||||
 | 
					                            "\">\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    eek_element_get_bounds (EEK_ELEMENT(keyboard), &bounds);
 | 
					    eek_element_get_bounds (EEK_ELEMENT(keyboard), &bounds);
 | 
				
			||||||
    g_string_append_indent (output, indent + 1);
 | 
					    g_string_append_indent (output, indent + 1);
 | 
				
			||||||
 | 
				
			|||||||
@ -7,6 +7,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
G_BEGIN_DECLS
 | 
					G_BEGIN_DECLS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define EEK_XML_SCHEMA_VERSION "0.90"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void eek_keyboard_output (EekKeyboard *keyboard, GString *output, gint indent);
 | 
					void eek_keyboard_output (EekKeyboard *keyboard, GString *output, gint indent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
G_END_DECLS
 | 
					G_END_DECLS
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user