mirror of
https://gitea.psi.ch/ELOG/elog.git
synced 2026-09-12 19:33:03 +00:00
Implemented mxml_debug_tree()
SVN revision: 1234
This commit is contained in:
parent
9229e610b7
commit
71f29f56d2
57
src/mxml.c
57
src/mxml.c
@ -6,6 +6,9 @@
|
|||||||
Contents: Midas XML Library
|
Contents: Midas XML Library
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.3 2005/03/03 15:34:21 ritt
|
||||||
|
Implemented mxml_debug_tree()
|
||||||
|
|
||||||
Revision 1.2 2005/03/01 23:55:43 ritt
|
Revision 1.2 2005/03/01 23:55:43 ritt
|
||||||
Fixed compiler warnings
|
Fixed compiler warnings
|
||||||
|
|
||||||
@ -342,13 +345,25 @@ PMXML_NODE mxml_create_root_node()
|
|||||||
PMXML_NODE mxml_add_node(PMXML_NODE parent, char *node_name, char *value)
|
PMXML_NODE mxml_add_node(PMXML_NODE parent, char *node_name, char *value)
|
||||||
/* add a subnode (child) to an existing parent node */
|
/* add a subnode (child) to an existing parent node */
|
||||||
{
|
{
|
||||||
PMXML_NODE pnode;
|
PMXML_NODE pnode, pchild;
|
||||||
|
int i, j;
|
||||||
|
|
||||||
assert(parent);
|
assert(parent);
|
||||||
if (parent->n_children == 0)
|
if (parent->n_children == 0)
|
||||||
parent->child = malloc(sizeof(MXML_NODE));
|
parent->child = malloc(sizeof(MXML_NODE));
|
||||||
else
|
else {
|
||||||
|
pchild = parent->child;
|
||||||
parent->child = realloc(parent->child, sizeof(MXML_NODE)*(parent->n_children+1));
|
parent->child = realloc(parent->child, sizeof(MXML_NODE)*(parent->n_children+1));
|
||||||
|
|
||||||
|
if (parent->child != pchild) {
|
||||||
|
/* correct parent pointer for children */
|
||||||
|
for (i=0 ; i<parent->n_children ; i++) {
|
||||||
|
pchild = parent->child+i;
|
||||||
|
for (j=0 ; j<pchild->n_children ; j++)
|
||||||
|
pchild->child[j].parent = pchild;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
assert(parent->child);
|
assert(parent->child);
|
||||||
pnode = &parent->child[parent->n_children];
|
pnode = &parent->child[parent->n_children];
|
||||||
memset(pnode, 0, sizeof(MXML_NODE));
|
memset(pnode, 0, sizeof(MXML_NODE));
|
||||||
@ -397,6 +412,17 @@ int mxml_get_number_of_children(PMXML_NODE pnode)
|
|||||||
|
|
||||||
/*------------------------------------------------------------------*/
|
/*------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
PMXML_NODE mxml_subnode(PMXML_NODE pnode, int index)
|
||||||
|
/* return number of subnodes (children) of a node */
|
||||||
|
{
|
||||||
|
assert(pnode);
|
||||||
|
if (index < pnode->n_children)
|
||||||
|
return &pnode->child[index];
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------*/
|
||||||
|
|
||||||
PMXML_NODE mxml_find_node(PMXML_NODE tree, char *xml_path)
|
PMXML_NODE mxml_find_node(PMXML_NODE tree, char *xml_path)
|
||||||
/*
|
/*
|
||||||
Search for a specific XML node with a subset of XPATH specifications.
|
Search for a specific XML node with a subset of XPATH specifications.
|
||||||
@ -1025,6 +1051,33 @@ BOOL mxml_write_tree(char *file_name, PMXML_NODE tree)
|
|||||||
|
|
||||||
/*------------------------------------------------------------------*/
|
/*------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void mxml_debug_tree(PMXML_NODE tree, int level)
|
||||||
|
/* print XML tree for debugging */
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i=0 ; i<level ; i++)
|
||||||
|
printf(" ");
|
||||||
|
printf("Name: %s\n", tree->name);
|
||||||
|
for (i=0 ; i<level ; i++)
|
||||||
|
printf(" ");
|
||||||
|
printf("Addr: %08X\n", tree);
|
||||||
|
for (i=0 ; i<level ; i++)
|
||||||
|
printf(" ");
|
||||||
|
printf("Prnt: %08X\n", tree->parent);
|
||||||
|
for (i=0 ; i<level ; i++)
|
||||||
|
printf(" ");
|
||||||
|
printf("NCld: %d\n", tree->n_children);
|
||||||
|
|
||||||
|
for (i=0 ; i<tree->n_children ; i++)
|
||||||
|
mxml_debug_tree(tree->child+i, level+1);
|
||||||
|
|
||||||
|
if (level == 0)
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------*/
|
||||||
|
|
||||||
void mxml_free_tree(PMXML_NODE tree)
|
void mxml_free_tree(PMXML_NODE tree)
|
||||||
/* free memory of XML tree, must be called after any
|
/* free memory of XML tree, must be called after any
|
||||||
mxml_create_root_node() or mxml_parse_file() */
|
mxml_create_root_node() or mxml_parse_file() */
|
||||||
|
|||||||
@ -6,6 +6,9 @@
|
|||||||
Contents: Header file for mxml.c
|
Contents: Header file for mxml.c
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.2 2005/03/03 15:34:40 ritt
|
||||||
|
Implemented mxml_debug_tree()
|
||||||
|
|
||||||
Revision 1.1 2005/03/01 23:48:18 ritt
|
Revision 1.1 2005/03/01 23:48:18 ritt
|
||||||
Implemented MXML for password file
|
Implemented MXML for password file
|
||||||
|
|
||||||
@ -47,6 +50,7 @@ BOOL mxml_write_value(MXML_WRITER *writer, const char *value);
|
|||||||
BOOL mxml_close_document(MXML_WRITER *writer);
|
BOOL mxml_close_document(MXML_WRITER *writer);
|
||||||
|
|
||||||
int mxml_get_number_of_children(PMXML_NODE pnode);
|
int mxml_get_number_of_children(PMXML_NODE pnode);
|
||||||
|
PMXML_NODE mxml_subnode(PMXML_NODE pnode, int index);
|
||||||
PMXML_NODE mxml_find_node(PMXML_NODE tree, char *xml_path);
|
PMXML_NODE mxml_find_node(PMXML_NODE tree, char *xml_path);
|
||||||
char *mxml_get_value(PMXML_NODE pnode);
|
char *mxml_get_value(PMXML_NODE pnode);
|
||||||
char *mxml_get_attribute(PMXML_NODE pnode, char *name);
|
char *mxml_get_attribute(PMXML_NODE pnode, char *name);
|
||||||
@ -66,6 +70,7 @@ BOOL mxml_delete_attribute(PMXML_NODE, char *attrib_name);
|
|||||||
PMXML_NODE mxml_create_root_node();
|
PMXML_NODE mxml_create_root_node();
|
||||||
PMXML_NODE mxml_parse_file(char *file_name, char *error, int error_size);
|
PMXML_NODE mxml_parse_file(char *file_name, char *error, int error_size);
|
||||||
BOOL mxml_write_tree(char *file_name, PMXML_NODE tree);
|
BOOL mxml_write_tree(char *file_name, PMXML_NODE tree);
|
||||||
|
void mxml_debug_tree(PMXML_NODE tree, int level);
|
||||||
void mxml_free_tree(PMXML_NODE tree);
|
void mxml_free_tree(PMXML_NODE tree);
|
||||||
|
|
||||||
/*------------------------------------------------------------------*/
|
/*------------------------------------------------------------------*/
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user