Files
sysprof/xmlstore.c
Soeren Sandmann 00244118a2 Add beginning of a screenshot window.
Mon Nov  7 23:42:26 2005  Soeren Sandmann  <sandmann@redhat.com>

        * sysprof.c: Add beginning of a screenshot
        window.

        * sysprof.glade: Add screenshot window plus menu items.

        * stackstash.c: Remove unused function stack_node_list_leaves()

        * xmlstore.c: Various crack
2005-11-08 04:32:19 +00:00

157 lines
2.1 KiB
C

typedef struct ParsedItem ParsedItem;
struct XmlItem
{
gboolean is_element;
union
{
struct
{
const char *name;
guint sibling_index;
} element;
char text[1];
} u;
};
struct XmlStore
{
GHashTable *names;
GArray *items;
GList *stack;
guint last_index;
};
static guint
add_item (GArray *array,
const XmlItem *item)
{
}
XmlStore *
xml_store_new (void)
{
XmlStore *store = g_new (XmlStore, 1);
store->names = g_hash_table_new (g_str_hash, g_str_equal);
store->stack = NULL;
store->items = g_array_new (TRUE, TRUE, sizeof (XmlItem));
}
void
xml_store_append_begin (XmlStore *store,
const char *element)
{
XmlItem item;
item.is_element = TRUE;
item.element.name = canonical_name (store, element);
item.element.sibling = NULL;
if (store->last)
store->last->u.element.sibling = &result;
}
typedef enum
{
BEGIN,
TEXT,
END
} XmlItemType;
struct XmlItem
{
XmlItemType type;
char [1] data;
};
struct XmlStore
{
XmlItem * items;
GHashTable *user_data_map;
};
struct ParsedItem
{
XmlItemType type;
union
{
struct
{
char * element;
int n_attrs;
char **attr;
} begin_item;
struct
{
char *text;
} text_item;
struct
{
char *element;
} end_item;
} u;
};
static void
parse_begin_item (XmlItem *item,
ParsedItem *parsed_item)
{
}
static void
parse_end_item (XmlItem *item,
ParsedItem *parsed_item)
{
}
static void
parse_text_item (XmlItem *item,
ParsedItem *parsed_item)
{
}
static ParsedItem *
parsed_item_new (XmlItem *item)
{
ParsedItem *parsed_item = g_new0 (ParsedItem, 0);
switch (item->type)
{
case BEGIN:
parsed_item->type = BEGIN;
parse_begin_item (item, parsed_item);
break;
case END:
parsed_item->type = END;
parse_end_item (item, parsed_item);
break;
case TEXT:
parsed_item->type = TEXT;
parse_text_item (item, parsed_item);
break;
}
return parsed_item;
}
static void
parsed_item_free (ParsedItem *item)
{
}