ROOTANA
Data Structures | Macros | Typedefs | Functions
mxml.h File Reference

Go to the source code of this file.

Data Structures

struct  MXML_WRITER
 
struct  mxml_struct
 

Macros

#define MXML_NAME_LENGTH   64
 
#define ELEMENT_NODE   1
 
#define TEXT_NODE   2
 
#define PROCESSING_INSTRUCTION_NODE   3
 
#define COMMENT_NODE   4
 
#define DOCUMENT_NODE   5
 
#define INTERNAL_ENTITY   0
 
#define EXTERNAL_ENTITY   1
 
#define MXML_MAX_ENTITY   500
 
#define MXML_MAX_CONDITION   10
 
#define DIR_SEPARATOR   '/'
 
#define EXPRT
 

Typedefs

typedef struct mxml_structPMXML_NODE
 
typedef struct mxml_struct MXML_NODE
 

Functions

void mxml_suppress_date (int suppress)
 
MXML_WRITERmxml_open_file (const char *file_name)
 
MXML_WRITERmxml_open_buffer (void)
 
int mxml_set_translate (MXML_WRITER *writer, int flag)
 
int mxml_start_element (MXML_WRITER *writer, const char *name)
 
int mxml_start_element_noindent (MXML_WRITER *writer, const char *name)
 
int mxml_end_element (MXML_WRITER *writer)
 
int mxml_write_comment (MXML_WRITER *writer, const char *string)
 
int mxml_write_element (MXML_WRITER *writer, const char *name, const char *value)
 
int mxml_write_attribute (MXML_WRITER *writer, const char *name, const char *value)
 
int mxml_write_value (MXML_WRITER *writer, const char *value)
 
int mxml_write_empty_line (MXML_WRITER *writer)
 
char * mxml_close_buffer (MXML_WRITER *writer)
 
int mxml_close_file (MXML_WRITER *writer)
 
int mxml_get_number_of_children (PMXML_NODE pnode)
 
PMXML_NODE mxml_get_parent (PMXML_NODE pnode)
 
PMXML_NODE mxml_subnode (PMXML_NODE pnode, int idx)
 
PMXML_NODE mxml_find_node (PMXML_NODE tree, const char *xml_path)
 
int mxml_find_nodes (PMXML_NODE tree, const char *xml_path, PMXML_NODE **nodelist)
 
char * mxml_get_name (PMXML_NODE pnode)
 
char * mxml_get_value (PMXML_NODE pnode)
 
int mxml_get_line_number_start (PMXML_NODE pnode)
 
int mxml_get_line_number_end (PMXML_NODE pnode)
 
PMXML_NODE mxml_get_node_at_line (PMXML_NODE tree, int linenumber)
 
char * mxml_get_attribute (PMXML_NODE pnode, const char *name)
 
int mxml_add_attribute (PMXML_NODE pnode, const char *attrib_name, const char *attrib_value)
 
PMXML_NODE mxml_add_special_node (PMXML_NODE parent, int node_type, const char *node_name, const char *value)
 
PMXML_NODE mxml_add_special_node_at (PMXML_NODE parent, int node_type, const char *node_name, const char *value, int idx)
 
PMXML_NODE mxml_add_node (PMXML_NODE parent, const char *node_name, const char *value)
 
PMXML_NODE mxml_add_node_at (PMXML_NODE parent, const char *node_name, const char *value, int idx)
 
PMXML_NODE mxml_clone_tree (PMXML_NODE tree)
 
int mxml_add_tree (PMXML_NODE parent, PMXML_NODE tree)
 
int mxml_add_tree_at (PMXML_NODE parent, PMXML_NODE tree, int idx)
 
int mxml_replace_node_name (PMXML_NODE pnode, const char *new_name)
 
int mxml_replace_node_value (PMXML_NODE pnode, const char *value)
 
int mxml_replace_subvalue (PMXML_NODE pnode, const char *name, const char *value)
 
int mxml_replace_attribute_name (PMXML_NODE pnode, const char *old_name, const char *new_name)
 
int mxml_replace_attribute_value (PMXML_NODE pnode, const char *attrib_name, const char *attrib_value)
 
int mxml_delete_node (PMXML_NODE pnode)
 
int mxml_delete_attribute (PMXML_NODE, const char *attrib_name)
 
PMXML_NODE mxml_create_root_node (void)
 
PMXML_NODE mxml_parse_file (const char *file_name, char *error, int error_size, int *error_line)
 
PMXML_NODE mxml_parse_buffer (const char *buffer, char *error, int error_size, int *error_line)
 
int mxml_parse_entity (char **buf, const char *file_name, char *error, int error_size, int *error_line)
 
int mxml_write_tree (const char *file_name, PMXML_NODE tree)
 
void mxml_debug_tree (PMXML_NODE tree, int level)
 
void mxml_free_tree (PMXML_NODE tree)
 
void mxml_dirname (char *path)
 
void mxml_basename (char *path)
 

Macro Definition Documentation

◆ COMMENT_NODE

#define COMMENT_NODE   4

Definition at line 36 of file mxml.h.

◆ DIR_SEPARATOR

#define DIR_SEPARATOR   '/'

Definition at line 48 of file mxml.h.

◆ DOCUMENT_NODE

#define DOCUMENT_NODE   5

Definition at line 37 of file mxml.h.

◆ ELEMENT_NODE

#define ELEMENT_NODE   1

Definition at line 33 of file mxml.h.

◆ EXPRT

#define EXPRT

Definition at line 85 of file mxml.h.

◆ EXTERNAL_ENTITY

#define EXTERNAL_ENTITY   1

Definition at line 40 of file mxml.h.

◆ INTERNAL_ENTITY

#define INTERNAL_ENTITY   0

Definition at line 39 of file mxml.h.

◆ MXML_MAX_CONDITION

#define MXML_MAX_CONDITION   10

Definition at line 43 of file mxml.h.

◆ MXML_MAX_ENTITY

#define MXML_MAX_ENTITY   500

Definition at line 41 of file mxml.h.

◆ MXML_NAME_LENGTH

#define MXML_NAME_LENGTH   64

Definition at line 31 of file mxml.h.

◆ PROCESSING_INSTRUCTION_NODE

#define PROCESSING_INSTRUCTION_NODE   3

Definition at line 35 of file mxml.h.

◆ TEXT_NODE

#define TEXT_NODE   2

Definition at line 34 of file mxml.h.

Typedef Documentation

◆ MXML_NODE

typedef struct mxml_struct MXML_NODE

◆ PMXML_NODE

typedef struct mxml_struct* PMXML_NODE

Definition at line 63 of file mxml.h.

Function Documentation

◆ mxml_add_attribute()

int mxml_add_attribute ( PMXML_NODE  pnode,
const char *  attrib_name,
const char *  attrib_value 
)

add an attribute to an existing node

Definition at line 842 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_add_node()

PMXML_NODE mxml_add_node ( PMXML_NODE  parent,
const char *  node_name,
const char *  value 
)

write value of an XML element, like <[name]>[value]</[name]>

Definition at line 755 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_add_node_at()

PMXML_NODE mxml_add_node_at ( PMXML_NODE  parent,
const char *  node_name,
const char *  value,
int  idx 
)

add a subnode (child) to an existing parent node at the end

Definition at line 765 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_add_special_node()

PMXML_NODE mxml_add_special_node ( PMXML_NODE  parent,
int  node_type,
const char *  node_name,
const char *  value 
)

add a subnode (child) to an existing parent node at the end

Definition at line 745 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_add_special_node_at()

PMXML_NODE mxml_add_special_node_at ( PMXML_NODE  parent,
int  node_type,
const char *  node_name,
const char *  value,
int  idx 
)

add a subnode (child) to an existing parent node as a specific position

Definition at line 697 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_add_tree()

int mxml_add_tree ( PMXML_NODE  parent,
PMXML_NODE  tree 
)

add a whole node tree to an existing parent node at the end

Definition at line 832 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_add_tree_at()

int mxml_add_tree_at ( PMXML_NODE  parent,
PMXML_NODE  tree,
int  idx 
)

add a whole node tree to an existing parent node at a specific position

Definition at line 775 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_basename()

void mxml_basename ( char *  path)

mxml_basename deletes any prefix ending with the last slash '/' character present in path. mxml_dirname deletes the filename portion, beginning with the last slash '/' character to the end of path. Followings are examples from these functions

path dirname basename "/" "/" "" "." "." "." "" "" "" "/test.txt" "/" "test.txt" "path/to/test.txt" "path/to" "test.txt" "test.txt "." "test.txt"

Under Windows, '\' and ':' are recognized ad separator too.

Definition at line 2344 of file mxml.cxx.

◆ mxml_clone_tree()

PMXML_NODE mxml_clone_tree ( PMXML_NODE  tree)

Definition at line 2192 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_close_buffer()

char* mxml_close_buffer ( MXML_WRITER writer)

close a file opened with mxml_open_writer

Definition at line 632 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_close_file()

int mxml_close_file ( MXML_WRITER writer)

close a file opened with mxml_open_writer

Definition at line 657 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_create_root_node()

PMXML_NODE mxml_create_root_node ( void  )

create root node of an XML tree

Definition at line 681 of file mxml.cxx.

◆ mxml_debug_tree()

void mxml_debug_tree ( PMXML_NODE  tree,
int  level 
)

print XML tree for debugging

Definition at line 2223 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_delete_attribute()

int mxml_delete_attribute ( PMXML_NODE  pnode,
const char *  attrib_name 
)

Definition at line 1278 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_delete_node()

int mxml_delete_node ( PMXML_NODE  pnode)

free memory of a node and remove it from the parent's child list

Definition at line 1245 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_dirname()

void mxml_dirname ( char *  path)

Definition at line 2371 of file mxml.cxx.

◆ mxml_end_element()

int mxml_end_element ( MXML_WRITER writer)

close an open XML element

Definition at line 483 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_find_node()

PMXML_NODE mxml_find_node ( PMXML_NODE  tree,
const char *  xml_path 
)

Search for a specific XML node with a subset of XPATH specifications. Return first found node. For syntax see mxml_find_nodes()

Definition at line 1078 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_find_nodes()

int mxml_find_nodes ( PMXML_NODE  tree,
const char *  xml_path,
PMXML_NODE **  nodelist 
)

Definition at line 1060 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_free_tree()

void mxml_free_tree ( PMXML_NODE  tree)

free memory of XML tree, must be called after any mxml_create_root_node() or mxml_parse_file()

Definition at line 2273 of file mxml.cxx.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mxml_get_attribute()

char* mxml_get_attribute ( PMXML_NODE  pnode,
const char *  name 
)

Definition at line 1135 of file mxml.cxx.

◆ mxml_get_line_number_end()

int mxml_get_line_number_end ( PMXML_NODE  pnode)

Definition at line 1127 of file mxml.cxx.

◆ mxml_get_line_number_start()

int mxml_get_line_number_start ( PMXML_NODE  pnode)

Definition at line 1119 of file mxml.cxx.

◆ mxml_get_name()

char* mxml_get_name ( PMXML_NODE  pnode)

Definition at line 1103 of file mxml.cxx.

◆ mxml_get_node_at_line()

PMXML_NODE mxml_get_node_at_line ( PMXML_NODE  tree,
int  line_number 
)

Retieve node at a certain line number

Definition at line 2406 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_get_number_of_children()

int mxml_get_number_of_children ( PMXML_NODE  pnode)

return number of subnodes (children) of a node

Definition at line 867 of file mxml.cxx.

◆ mxml_get_parent()

PMXML_NODE mxml_get_parent ( PMXML_NODE  pnode)

Definition at line 1095 of file mxml.cxx.

◆ mxml_get_value()

char* mxml_get_value ( PMXML_NODE  pnode)

Definition at line 1111 of file mxml.cxx.

◆ mxml_open_buffer()

MXML_WRITER* mxml_open_buffer ( void  )

open a memory buffer and write XML header

Definition at line 223 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_open_file()

MXML_WRITER* mxml_open_file ( const char *  file_name)

open a file and write XML header

Definition at line 272 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_parse_buffer()

PMXML_NODE mxml_parse_buffer ( const char *  buf,
char *  error,
int  error_size,
int *  error_line 
)

Parse a XML buffer and convert it into a tree of MXML_NODE's. Return NULL in case of an error, return error description. Optional file_name is used for error reporting if called from mxml_parse_file()

Definition at line 1357 of file mxml.cxx.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mxml_parse_entity()

int mxml_parse_entity ( char **  buf,
const char *  file_name,
char *  error,
int  error_size,
int *  error_line 
)

parse !ENTYTY entries of XML files and replace with references. Return 0 in case of no errors, return error description. Optional file_name is used for error reporting if called from mxml_parse_file()

Definition at line 1675 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_parse_file()

PMXML_NODE mxml_parse_file ( const char *  file_name,
char *  error,
int  error_size,
int *  error_line 
)

parse a XML file and convert it into a tree of MXML_NODE's. Return NULL in case of an error, return error description

Definition at line 2073 of file mxml.cxx.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mxml_replace_attribute_name()

int mxml_replace_attribute_name ( PMXML_NODE  pnode,
const char *  old_name,
const char *  new_name 
)

change the name of an attribute, keep its value

Definition at line 1203 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_replace_attribute_value()

int mxml_replace_attribute_value ( PMXML_NODE  pnode,
const char *  attrib_name,
const char *  attrib_value 
)

change the value of an attribute

Definition at line 1223 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_replace_node_name()

int mxml_replace_node_name ( PMXML_NODE  pnode,
const char *  new_name 
)

Definition at line 1149 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_replace_node_value()

int mxml_replace_node_value ( PMXML_NODE  pnode,
const char *  value 
)

Definition at line 1157 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_replace_subvalue()

int mxml_replace_subvalue ( PMXML_NODE  pnode,
const char *  name,
const char *  value 
)

replace value os a subnode, like

<parent> <child>value</child> </parent>

if pnode=parent, and "name"="child", then "value" gets replaced

Definition at line 1184 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_set_translate()

int mxml_set_translate ( MXML_WRITER writer,
int  flag 
)

set translation of <,>,",',&, on/off in writer

Definition at line 416 of file mxml.cxx.

◆ mxml_start_element()

int mxml_start_element ( MXML_WRITER writer,
const char *  name 
)

Definition at line 466 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_start_element_noindent()

int mxml_start_element_noindent ( MXML_WRITER writer,
const char *  name 
)

Definition at line 473 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_subnode()

PMXML_NODE mxml_subnode ( PMXML_NODE  pnode,
int  idx 
)

return number of subnodes (children) of a node

Definition at line 878 of file mxml.cxx.

◆ mxml_suppress_date()

void mxml_suppress_date ( int  suppress)

suppress writing date at the top of file.

Definition at line 262 of file mxml.cxx.

◆ mxml_write_attribute()

int mxml_write_attribute ( MXML_WRITER writer,
const char *  name,
const char *  value 
)

write an attribute to the currently open XML element

Definition at line 523 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_write_comment()

int mxml_write_comment ( MXML_WRITER writer,
const char *  string 
)

write a comment to an XML file, enclosed in "<!--" and "-->"

Definition at line 590 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_write_element()

int mxml_write_element ( MXML_WRITER writer,
const char *  name,
const char *  value 
)

shortcut to write an element with a value but without attribute

Definition at line 617 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_write_empty_line()

int mxml_write_empty_line ( MXML_WRITER writer)

write empty line

Definition at line 572 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_write_tree()

int mxml_write_tree ( const char *  file_name,
PMXML_NODE  tree 
)

write a complete XML tree to a file

Definition at line 2169 of file mxml.cxx.

Here is the call graph for this function:

◆ mxml_write_value()

int mxml_write_value ( MXML_WRITER writer,
const char *  data 
)

write value of an XML element, like <[name]>[value]</[name]>

Definition at line 547 of file mxml.cxx.

Here is the call graph for this function: