mxml.h File Reference

Mini-XML XML parsing functions. More...

`#include <stdio.h>`
`#include <stdlib.h>`
`#include <string.h>`
`#include <ctype.h>`
`#include <errno.h>`
`#include <gutenprint/types.h>`

## Data Structures

struct | stp_mxml_attr_s
struct | stp_mxml_value_s
struct | stp_mxml_text_s
union | stp_mxml_value_u
struct | stp_mxml_node_s

## Macros

#define | STP_MXML_WRAP 70 /* Wrap XML output at this column position */
#define | STP_MXML_TAB 8 /* Tabs every N columns */
#define | STP_MXML_NO_CALLBACK 0 /* Don't use a type callback */
#define | STP_MXML_NO_PARENT 0 /* No parent for the node */
#define | STP_MXML_DESCEND 1 /* Descend when finding/walking */
#define | STP_MXML_NO_DESCEND 0 /* Don't descend when finding/walking */
#define | STP_MXML_DESCEND_FIRST -1 /* Descend for first find */
#define | STP_MXML_WS_BEFORE_OPEN 0 /* Callback for before open tag */
#define | STP_MXML_WS_AFTER_OPEN 1 /* Callback for after open tag */
#define | STP_MXML_WS_BEFORE_CLOSE 2 /* Callback for before close tag */
#define | STP_MXML_WS_AFTER_CLOSE 3 /* Callback for after close tag */
#define | STP_MXML_ADD_BEFORE 0 /* Add node before specified node */
#define | STP_MXML_ADD_AFTER 1 /* Add node after specified node */
#define | STP_MXML_ADD_TO_PARENT NULL /* Add node relative to parent */

## Typedefs

typedef enum stp_mxml_type_e | stp_mxml_type_t
typedef struct stp_mxml_attr_s | stp_mxml_attr_t
typedef struct stp_mxml_value_s | stp_mxml_element_t
typedef struct stp_mxml_text_s | stp_mxml_text_t
typedef union stp_mxml_value_u | stp_mxml_value_t
typedef struct stp_mxml_node_s | stp_mxml_node_t

## Enumerations

enum | stp_mxml_type_e { STP_MXML_ELEMENT , STP_MXML_INTEGER , STP_MXML_OPAQUE , STP_MXML_REAL , STP_MXML_TEXT , STP_MXML_DIMENSION }

## Functions

void | stp_mxmlAdd (stp_mxml_node_t *parent, int where, stp_mxml_node_t *child, stp_mxml_node_t *node)
void | stp_mxmlDelete (stp_mxml_node_t *node)
const char * | stp_mxmlElementGetAttr (stp_mxml_node_t *node, const char *name)
void | stp_mxmlElementSetAttr (stp_mxml_node_t *node, const char *name, const char *value)
stp_mxml_node_t * | stp_mxmlFindElement (stp_mxml_node_t *node, stp_mxml_node_t *top, const char *name, const char *attr, const char *value, int descend)
stp_mxml_node_t * | stp_mxmlLoadFile (stp_mxml_node_t *top, FILE *fp, stp_mxml_type_t(*cb)(stp_mxml_node_t *))
stp_mxml_node_t * | stp_mxmlLoadFromFile (stp_mxml_node_t *top, const char *file, stp_mxml_type_t(*cb)(stp_mxml_node_t *))
stp_mxml_node_t * | stp_mxmlLoadString (stp_mxml_node_t *top, const char *s, stp_mxml_type_t(*cb)(stp_mxml_node_t *))
stp_mxml_node_t * | stp_mxmlNewElement (stp_mxml_node_t *parent, const char *name)
stp_mxml_node_t * | stp_mxmlNewInteger (stp_mxml_node_t *parent, int integer)
stp_mxml_node_t * | stp_mxmlNewOpaque (stp_mxml_node_t *parent, const char *opaque)
stp_mxml_node_t * | stp_mxmlNewReal (stp_mxml_node_t *parent, double real)
stp_mxml_node_t * | stp_mxmlNewDimension (stp_mxml_node_t *parent, stp_dimension_t real)
stp_mxml_node_t * | stp_mxmlNewText (stp_mxml_node_t *parent, int whitespace, const char *string)
stp_mxml_node_t * | stp_mxmlParent (stp_mxml_node_t *node)
void | stp_mxmlRemove (stp_mxml_node_t *node)
char * | stp_mxmlSaveAllocString (stp_mxml_node_t *node, int(*cb)(stp_mxml_node_t *, int))
int | stp_mxmlSaveFile (stp_mxml_node_t *node, FILE *fp, int(*cb)(stp_mxml_node_t *, int))
int | stp_mxmlSaveToFile (stp_mxml_node_t *node, const char *fp, int(*cb)(stp_mxml_node_t *, int))
int | stp_mxmlSaveString (stp_mxml_node_t *node, char *buffer, int bufsize, int(*cb)(stp_mxml_node_t *, int))
stp_mxml_node_t * | stp_mxmlWalkNext (stp_mxml_node_t *node, stp_mxml_node_t *top, int descend)
stp_mxml_node_t * | stp_mxmlWalkPrev (stp_mxml_node_t *node, stp_mxml_node_t *top, int descend)

## Detailed Description

Mini-XML XML parsing functions.

## Macro Definition Documentation

## STP_MXML_ADD_AFTER

#define STP_MXML_ADD_AFTER 1 /* Add node after specified node */

## STP_MXML_ADD_BEFORE

#define STP_MXML_ADD_BEFORE 0 /* Add node before specified node */

## STP_MXML_ADD_TO_PARENT

#define STP_MXML_ADD_TO_PARENT NULL /* Add node relative to parent */

## STP_MXML_DESCEND

#define STP_MXML_DESCEND 1 /* Descend when finding/walking */

## STP_MXML_DESCEND_FIRST

#define STP_MXML_DESCEND_FIRST -1 /* Descend for first find */

## STP_MXML_NO_CALLBACK

#define STP_MXML_NO_CALLBACK 0 /* Don't use a type callback */

## STP_MXML_NO_DESCEND

#define STP_MXML_NO_DESCEND 0 /* Don't descend when finding/walking */

## STP_MXML_NO_PARENT

#define STP_MXML_NO_PARENT 0 /* No parent for the node */

## STP_MXML_TAB

#define STP_MXML_TAB 8 /* Tabs every N columns */

## STP_MXML_WRAP

#define STP_MXML_WRAP 70 /* Wrap XML output at this column position */

## STP_MXML_WS_AFTER_CLOSE

#define STP_MXML_WS_AFTER_CLOSE 3 /* Callback for after close tag */

## STP_MXML_WS_AFTER_OPEN

#define STP_MXML_WS_AFTER_OPEN 1 /* Callback for after open tag */

## STP_MXML_WS_BEFORE_CLOSE

#define STP_MXML_WS_BEFORE_CLOSE 2 /* Callback for before close tag */

## STP_MXML_WS_BEFORE_OPEN

#define STP_MXML_WS_BEFORE_OPEN 0 /* Callback for before open tag */

## Typedef Documentation

## stp_mxml_attr_t

typedef struct stp_mxml_attr_s stp_mxml_attr_t

## stp_mxml_element_t

typedef struct stp_mxml_value_s stp_mxml_element_t

## stp_mxml_node_t

typedef struct stp_mxml_node_s stp_mxml_node_t

## stp_mxml_text_t

typedef struct stp_mxml_text_s stp_mxml_text_t

## stp_mxml_type_t

typedef enum stp_mxml_type_e stp_mxml_type_t

## stp_mxml_value_t

typedef union stp_mxml_value_u stp_mxml_value_t

## Enumeration Type Documentation

## stp_mxml_type_e

enum stp_mxml_type_e

Enumerator
STP_MXML_ELEMENT |
STP_MXML_INTEGER |
STP_MXML_OPAQUE |
STP_MXML_REAL |
STP_MXML_TEXT |
STP_MXML_DIMENSION |

## Function Documentation

## stp_mxmlAdd()

void stp_mxmlAdd | ( | stp_mxml_node_t * | parent,
|  | int | where,
|  | stp_mxml_node_t * | child,
|  | stp_mxml_node_t * | node
| ) |  |

extern

## stp_mxmlDelete()

void stp_mxmlDelete | ( | stp_mxml_node_t * | node | ) |

extern

## stp_mxmlElementGetAttr()

const char * stp_mxmlElementGetAttr | ( | stp_mxml_node_t * | node,
|  | const char * | name
| ) |  |

extern

## stp_mxmlElementSetAttr()

void stp_mxmlElementSetAttr | ( | stp_mxml_node_t * | node,
|  | const char * | name,
|  | const char * | value
| ) |  |

extern

## stp_mxmlFindElement()

stp_mxml_node_t * stp_mxmlFindElement | ( | stp_mxml_node_t * | node,
|  | stp_mxml_node_t * | top,
|  | const char * | name,
|  | const char * | attr,
|  | const char * | value,
|  | int | descend
| ) |  |

extern

## stp_mxmlLoadFile()

stp_mxml_node_t * stp_mxmlLoadFile | ( | stp_mxml_node_t * | top,
|  | FILE * | fp,
|  | stp_mxml_type_t(*)(stp_mxml_node_t *) | cb
| ) |  |

extern

## stp_mxmlLoadFromFile()

stp_mxml_node_t * stp_mxmlLoadFromFile | ( | stp_mxml_node_t * | top,
|  | const char * | file,
|  | stp_mxml_type_t(*)(stp_mxml_node_t *) | cb
| ) |  |

extern

## stp_mxmlLoadString()

stp_mxml_node_t * stp_mxmlLoadString | ( | stp_mxml_node_t * | top,
|  | const char * | s,
|  | stp_mxml_type_t(*)(stp_mxml_node_t *) | cb
| ) |  |

extern

## stp_mxmlNewDimension()

stp_mxml_node_t * stp_mxmlNewDimension | ( | stp_mxml_node_t * | parent,
|  | stp_dimension_t | real
| ) |  |

extern

## stp_mxmlNewElement()

stp_mxml_node_t * stp_mxmlNewElement | ( | stp_mxml_node_t * | parent,
|  | const char * | name
| ) |  |

extern

## stp_mxmlNewInteger()

stp_mxml_node_t * stp_mxmlNewInteger | ( | stp_mxml_node_t * | parent,
|  | int | integer
| ) |  |

extern

## stp_mxmlNewOpaque()

stp_mxml_node_t * stp_mxmlNewOpaque | ( | stp_mxml_node_t * | parent,
|  | const char * | opaque
| ) |  |

extern

## stp_mxmlNewReal()

stp_mxml_node_t * stp_mxmlNewReal | ( | stp_mxml_node_t * | parent,
|  | double | real
| ) |  |

extern

## stp_mxmlNewText()

stp_mxml_node_t * stp_mxmlNewText | ( | stp_mxml_node_t * | parent,
|  | int | whitespace,
|  | const char * | string
| ) |  |

extern

## stp_mxmlParent()

stp_mxml_node_t * stp_mxmlParent | ( | stp_mxml_node_t * | node | ) |

extern

## stp_mxmlRemove()

void stp_mxmlRemove | ( | stp_mxml_node_t * | node | ) |

extern

## stp_mxmlSaveAllocString()

char * stp_mxmlSaveAllocString | ( | stp_mxml_node_t * | node,
|  | int(*)(stp_mxml_node_t *, int) | cb
| ) |  |

extern

## stp_mxmlSaveFile()

int stp_mxmlSaveFile | ( | stp_mxml_node_t * | node,
|  | FILE * | fp,
|  | int(*)(stp_mxml_node_t *, int) | cb
| ) |  |

extern

## stp_mxmlSaveString()

int stp_mxmlSaveString | ( | stp_mxml_node_t * | node,
|  | char * | buffer,
|  | int | bufsize,
|  | int(*)(stp_mxml_node_t *, int) | cb
| ) |  |

extern

## stp_mxmlSaveToFile()

int stp_mxmlSaveToFile | ( | stp_mxml_node_t * | node,
|  | const char * | fp,
|  | int(*)(stp_mxml_node_t *, int) | cb
| ) |  |

extern

## stp_mxmlWalkNext()

stp_mxml_node_t * stp_mxmlWalkNext | ( | stp_mxml_node_t * | node,
|  | stp_mxml_node_t * | top,
|  | int | descend
| ) |  |

extern

## stp_mxmlWalkPrev()

stp_mxml_node_t * stp_mxmlWalkPrev | ( | stp_mxml_node_t * | node,
|  | stp_mxml_node_t * | top,
|  | int | descend
| ) |  |

extern