ROOTANA
|
#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include <assert.h>
#include <string>
#include <stdlib.h>
#include <unistd.h>
#include <ctype.h>
#include <stdarg.h>
#include <errno.h>
#include <sys/time.h>
#include <time.h>
#include "mxml.h"
Go to the source code of this file.
Macros | |
#define | TRUE 1 |
#define | FALSE 0 |
#define | O_TEXT 0 |
#define | O_BINARY 0 |
#define | XML_INDENT " " |
#define | MXML_GNUC_PRINTF(format_idx, arg_idx) |
#define | MXML_GNUC_SCANF(format_idx, arg_idx) |
#define | MXML_GNUC_FORMAT(arg_idx) |
#define | HERE root, file_name, line_number, error, error_size, error_line |
Functions | |
static PMXML_NODE | read_error (PMXML_NODE root, const char *file_name, int line_number, char *error, int error_size, int *error_line, const char *format,...) MXML_GNUC_PRINTF(7 |
static PMXML_NODE static void | mxml_encode (char *buf, int buf_size, const char *src, int src_len, int translate) |
static void | mxml_decode (char *str) |
static int | mxml_write_subtree (MXML_WRITER *writer, PMXML_NODE tree, int indent) |
static int | mxml_write_line (MXML_WRITER *writer, const char *line) |
static int | mxml_start_element1 (MXML_WRITER *writer, const char *name, int indent) |
static int | mxml_add_resultnode (PMXML_NODE node, const char *xml_path, PMXML_NODE **nodelist, int *found) |
static int | mxml_find_nodes1 (PMXML_NODE tree, const char *xml_path, PMXML_NODE **nodelist, int *found) |
static void * | mxml_malloc (size_t size) |
static void * | mxml_realloc (void *p, size_t size) |
static void | mxml_free (void *p) |
static size_t | mxml_strlcpy (char *dst, const char *src, size_t size) |
static std::string | toString (int i) |
static std::string | toStrerror (int err) |
MXML_WRITER * | mxml_open_buffer (void) |
void | mxml_suppress_date (int suppress) |
MXML_WRITER * | mxml_open_file (const char *file_name) |
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_attribute (MXML_WRITER *writer, const char *name, const char *value) |
int | mxml_write_value (MXML_WRITER *writer, const char *data) |
int | mxml_write_empty_line (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) |
char * | mxml_close_buffer (MXML_WRITER *writer) |
int | mxml_close_file (MXML_WRITER *writer) |
PMXML_NODE | mxml_create_root_node (void) |
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_special_node (PMXML_NODE parent, int node_type, const char *node_name, const char *value) |
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) |
int | mxml_add_tree_at (PMXML_NODE parent, PMXML_NODE tree, int idx) |
int | mxml_add_tree (PMXML_NODE parent, PMXML_NODE tree) |
int | mxml_add_attribute (PMXML_NODE pnode, const char *attrib_name, const char *attrib_value) |
int | mxml_get_number_of_children (PMXML_NODE pnode) |
PMXML_NODE | mxml_subnode (PMXML_NODE pnode, int idx) |
int | mxml_find_nodes (PMXML_NODE tree, const char *xml_path, PMXML_NODE **nodelist) |
PMXML_NODE | mxml_find_node (PMXML_NODE tree, const char *xml_path) |
PMXML_NODE | mxml_get_parent (PMXML_NODE pnode) |
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) |
char * | mxml_get_attribute (PMXML_NODE pnode, const char *name) |
int | mxml_replace_node_name (PMXML_NODE pnode, const char *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 pnode, const char *attrib_name) |
PMXML_NODE | mxml_parse_buffer (const char *buf, 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) |
PMXML_NODE | mxml_parse_file (const char *file_name, char *error, int error_size, int *error_line) |
int | mxml_write_tree (const char *file_name, PMXML_NODE tree) |
int | mxml_print_tree (char *buffer, int *buffer_size, PMXML_NODE tree) |
PMXML_NODE | mxml_clone_tree (PMXML_NODE tree) |
void | mxml_debug_tree (PMXML_NODE tree, int level) |
void | mxml_free_tree (PMXML_NODE tree) |
void | mxml_basename (char *path) |
void | mxml_dirname (char *path) |
PMXML_NODE | mxml_get_node_at_line (PMXML_NODE tree, int line_number) |
Variables | |
static int | mxml_suppress_date_flag = 0 |
#define HERE root, file_name, line_number, error, error_size, error_line |
int mxml_add_attribute | ( | PMXML_NODE | pnode, |
const char * | attrib_name, | ||
const char * | attrib_value | ||
) |
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 | ||
) |
|
static |
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 | ||
) |
int mxml_add_tree | ( | PMXML_NODE | parent, |
PMXML_NODE | tree | ||
) |
int mxml_add_tree_at | ( | PMXML_NODE | parent, |
PMXML_NODE | tree, | ||
int | idx | ||
) |
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.
PMXML_NODE mxml_clone_tree | ( | PMXML_NODE | tree | ) |
char * mxml_close_buffer | ( | MXML_WRITER * | writer | ) |
int mxml_close_file | ( | MXML_WRITER * | writer | ) |
PMXML_NODE mxml_create_root_node | ( | void | ) |
void mxml_debug_tree | ( | PMXML_NODE | tree, |
int | level | ||
) |
|
static |
int mxml_delete_attribute | ( | PMXML_NODE | pnode, |
const char * | attrib_name | ||
) |
int mxml_delete_node | ( | PMXML_NODE | pnode | ) |
void mxml_dirname | ( | char * | path | ) |
|
static |
int mxml_end_element | ( | MXML_WRITER * | writer | ) |
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.
int mxml_find_nodes | ( | PMXML_NODE | tree, |
const char * | xml_path, | ||
PMXML_NODE ** | nodelist | ||
) |
|
static |
Return list of XML nodes with a subset of XPATH specifications. Following elemets are possible
/<node>/<node>/..../<node> Find a node in the tree hierarchy /<node>[idx] Find child #[idx] of node (index starts from 1) /<node>[idx]/<node> Find subnode of the above /<node>[<subnode>=
] Find a node which has a specific subnode /<node>[<subnode>=
]/<node> Find subnode of the above /<node>[<attrib>=
]/<node> Find a node which has a specific attribute
Definition at line 923 of file mxml.cxx.
|
static |
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 2305 of file mxml.cxx.
char * mxml_get_attribute | ( | PMXML_NODE | pnode, |
const char * | name | ||
) |
int mxml_get_line_number_end | ( | PMXML_NODE | pnode | ) |
int mxml_get_line_number_start | ( | PMXML_NODE | pnode | ) |
char * mxml_get_name | ( | PMXML_NODE | pnode | ) |
PMXML_NODE mxml_get_node_at_line | ( | PMXML_NODE | tree, |
int | line_number | ||
) |
int mxml_get_number_of_children | ( | PMXML_NODE | pnode | ) |
PMXML_NODE mxml_get_parent | ( | PMXML_NODE | pnode | ) |
char * mxml_get_value | ( | PMXML_NODE | pnode | ) |
|
static |
MXML_WRITER * mxml_open_buffer | ( | void | ) |
MXML_WRITER * mxml_open_file | ( | const char * | file_name | ) |
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 1355 of file mxml.cxx.
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 1673 of file mxml.cxx.
PMXML_NODE mxml_parse_file | ( | const char * | file_name, |
char * | error, | ||
int | error_size, | ||
int * | error_line | ||
) |
int mxml_print_tree | ( | char * | buffer, |
int * | buffer_size, | ||
PMXML_NODE | tree | ||
) |
|
static |
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_replace_node_name | ( | PMXML_NODE | pnode, |
const char * | 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_set_translate | ( | MXML_WRITER * | writer, |
int | flag | ||
) |
int mxml_start_element | ( | MXML_WRITER * | writer, |
const char * | name | ||
) |
|
static |
int mxml_start_element_noindent | ( | MXML_WRITER * | writer, |
const char * | name | ||
) |
|
static |
PMXML_NODE mxml_subnode | ( | PMXML_NODE | pnode, |
int | idx | ||
) |
void mxml_suppress_date | ( | int | suppress | ) |
int mxml_write_attribute | ( | MXML_WRITER * | writer, |
const char * | name, | ||
const char * | value | ||
) |
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_empty_line | ( | MXML_WRITER * | writer | ) |
|
static |
|
static |
int mxml_write_tree | ( | const char * | file_name, |
PMXML_NODE | tree | ||
) |
int mxml_write_value | ( | MXML_WRITER * | writer, |
const char * | data | ||
) |
|
static |
|
static |
|
static |