From 735989840c5880d9446e31806753b1093c4ab0ba Mon Sep 17 00:00:00 2001
From: Michael R Sweet Add a node to a tree.
+ 'mxmlAdd()' - Add a node to a tree.
Adds the specified node to the parent. If the child argument is not
NULL, puts the new node before or after the specified child depending
@@ -124,7 +124,7 @@ mxmlAdd(
Delete a node and all of its children.
+ 'mxmlDelete()' - Delete a node and all of its children.
If the specified node has a parent, this function first removes the
node from its parent using the mxmlRemove() function.mxmlAdd()
Description
-mxmlDelete()
Description
-name Name of attribute
Attribute value or NULL
+O - Attribute value or NULL
Set an attribute. +
'mxmlElementSetAttr()' - Set an attribute. If the named attribute already exists, the value of the attribute is replaced by the new string value. The string value is copied @@ -207,7 +207,7 @@ mxmlEntityAddCallback(void);
None.
0 on success, -1 on failure
+O - 0 on success, -1 on failure
Entity name or NULL
+O - Entity name or NULL
Character value or -1 on error
+O - Character value or -1 on error
Remove a callback.
+'mxmlEntityRemoveCallback()' - Remove a callback.
void @@ -302,12 +302,12 @@ mxmlFindElement(descend Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST Returns
-Element node or NULL
+O - Element node or NULL
mxmlIndexDelete()
Description
-Delete an index.
+'mxmlIndexDelete()' - Delete an index.
Syntax
void @@ -342,7 +342,7 @@ mxmlIndexEnum(ind Index to enumerate Returns
-Next node or NULL if there is none
+O - Next node or NULL if there is none
mxmlIndexFind()
@@ -370,7 +370,7 @@ mxmlIndexFind(value Attribute value, if any Returns
-Node or NULL if none found
+O - Node or NULL if none found
mxmlIndexNew()
@@ -399,7 +399,7 @@ mxmlIndexNew(attr Attribute to index or NULL for none Returns
-New index
+O - New index
mxmlIndexReset()
@@ -422,7 +422,7 @@ mxmlIndexReset(ind Index to reset Returns
-First node or NULL if there is none
+O - First node or NULL if there is none
mxmlLoadFd()
@@ -454,7 +454,7 @@ mxmlLoadFd(fd File descriptor to read from Returns
-First node or NULL if the file could not be read.
+O - First node or NULL if the file could not be read.
mxmlLoadFile()
@@ -486,7 +486,7 @@ mxmlLoadFile(fp File to read from Returns
-First node or NULL if the file could not be read.
+O - First node or NULL if the file could not be read.
mxmlLoadString()
@@ -518,7 +518,7 @@ mxmlLoadString(s String to load Returns
-First node or NULL if the string has errors.
+O - First node or NULL if the string has errors.
mxmlNewCDATA() Mini-XML 2.3
@@ -546,7 +546,7 @@ mxmlNewCDATA(data Data string Returns
-New node
+O - New node
mxmlNewCustom() Mini-XML 2.1
@@ -574,7 +574,7 @@ mxmlNewCustom(data Pointer to data Returns
-New node
+O - New node
mxmlNewElement()
@@ -599,7 +599,7 @@ mxmlNewElement(name Name of element Returns
-New node
+O - New node
mxmlNewInteger()
@@ -624,7 +624,7 @@ mxmlNewInteger(integer Integer value Returns
-New node
+O - New node
mxmlNewOpaque()
@@ -650,7 +650,7 @@ mxmlNewOpaque(opaque Opaque string Returns
-New node
+O - New node
mxmlNewReal()
@@ -675,7 +675,7 @@ mxmlNewReal(real Real number value Returns
-New node
+O - New node
mxmlNewText()
@@ -704,7 +704,7 @@ mxmlNewText(string String Returns
-New node
+O - New node
mxmlNewTextf()
@@ -735,12 +735,12 @@ mxmlNewTextf(... Additional args as needed Returns
-New node
+O - New node
mxmlRemove()
Description
-Remove a node from its parent. +
'mxmlRemove()' - Remove a node from its parent. Does not free memory used by the node - use mxmlDelete() for that. This function does nothing if the node has no parent.
@@ -788,7 +788,7 @@ mxmlSaveAllocString(node Node to write Returns
-Allocated string or NULL
+O - Allocated string or NULL
mxmlSaveFd()
@@ -815,7 +815,7 @@ mxmlSaveFd(fd File descriptor to write to Returns
-0 on success, -1 on error.
+O - 0 on success, -1 on error.
mxmlSaveFile()
@@ -842,7 +842,7 @@ mxmlSaveFile(fp File to write to Returns
-0 on success, -1 on error.
+O - 0 on success, -1 on error.
mxmlSaveString()
@@ -875,7 +875,7 @@ mxmlSaveString(bufsize Size of string buffer Returns
-Size of string
+O - Size of string
mxmlSetCDATA() Mini-XML 2.3
@@ -900,7 +900,7 @@ mxmlSetCDATA(data New data string Returns
-0 on success, -1 on failure
+O - 0 on success, -1 on failure
mxmlSetCustom() Mini-XML 2.1
@@ -925,18 +925,19 @@ mxmlSetCustom(data New data pointer Returns
-0 on success, -1 on failure
+O - 0 on success, -1 on failure
mxmlSetCustomHandlers()
Description
-Set the handling functions for custom data. +
'mxmlSetCustomHandlers()' - Set the handling functions for custom data. The load function accepts a node pointer and a data string and must return 0 on success and non-zero on error. The save function accepts a node pointer and must return a malloc'd -string on success and NULL on error.
+string on success and NULL on error. +Syntax
void @@ -975,12 +976,12 @@ mxmlSetElement(name New name string Returns
-0 on success, -1 on failure
+O - 0 on success, -1 on failure
mxmlSetErrorCallback()
Description
-Set the error message callback.
+'mxmlSetErrorCallback()' - Set the error message callback.
Syntax
void @@ -1012,7 +1013,7 @@ mxmlSetInteger(integer Integer value Returns
-0 on success, -1 on failure
+O - 0 on success, -1 on failure
mxmlSetOpaque()
@@ -1035,7 +1036,7 @@ mxmlSetOpaque(opaque Opaque string Returns
-0 on success, -1 on failure
+O - 0 on success, -1 on failure
mxmlSetReal()
@@ -1058,7 +1059,7 @@ mxmlSetReal(real Real number value Returns
-0 on success, -1 on failure
+O - 0 on success, -1 on failure
mxmlSetText()
@@ -1083,7 +1084,7 @@ mxmlSetText(string String Returns
-0 on success, -1 on failure
+O - 0 on success, -1 on failure
mxmlSetTextf()
@@ -1110,7 +1111,7 @@ mxmlSetTextf(... Additional arguments as needed Returns
-0 on success, -1 on failure
+O - 0 on success, -1 on failure
mxmlWalkNext()
@@ -1137,7 +1138,7 @@ mxmlWalkNext(descend Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST Returns
-Next node or NULL
+O - Next node or NULL
mxmlWalkPrev()
@@ -1164,7 +1165,7 @@ mxmlWalkPrev(descend Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST Returns
-Previous node or NULL
+O - Previous node or NULL
Structures
An XML element attribute value.
+Data types...
struct mxml_attr_s @@ -1328,7 +1329,7 @@ struct mxml_text_smxml_attr_t
Description
-An XML element attribute value.
+Data types...
Definition
typedef struct mxml_attr_s mxml_attr_t; @@ -1355,7 +1356,7 @@ typedef char * (*mxml_custom_save_cb_t)(mxml_node_t *mxml_custom_t Mini-XML 2.1
Description
-An XML custom value.
+*** An XML custom value.
Definition
typedef struct mxml_custom_s mxml_custom_t; @@ -1364,7 +1365,7 @@ typedef struct mxml_custom_s mxml_custom_t;mxml_element_t
Description
-An XML element value.
+*** An XML element value.
Definition
typedef struct mxml_element_s mxml_element_t; @@ -1373,7 +1374,7 @@ typedef struct mxml_element_s mxml_element_t;mxml_index_t
Description
-An XML node index.
+*** An XML node index.
Definition
typedef struct mxml_index_s mxml_index_t; @@ -1382,7 +1383,7 @@ typedef struct mxml_index_s mxml_index_t;mxml_node_t
Description
-An XML node.
+*** An XML node.
Definition
typedef struct mxml_node_s mxml_node_t; @@ -1391,7 +1392,7 @@ typedef struct mxml_node_s mxml_node_t;mxml_text_t
Description
-An XML text value.
+*** An XML text value.
Definition
typedef struct mxml_text_s mxml_text_t; @@ -1400,7 +1401,7 @@ typedef struct mxml_text_s mxml_text_t;mxml_value_t
Description
-An XML node value.
+*** An XML node value.
Definition
typedef union mxml_value_u mxml_value_t; diff --git a/mxml-file.c b/mxml-file.c index efc685e..96f87d4 100644 --- a/mxml-file.c +++ b/mxml-file.c @@ -77,7 +77,7 @@ * Structures... */ -typedef struct mxml_fdbuf_s /**** File descriptor buffer (@private) ****/ +typedef struct mxml_fdbuf_s /**** File descriptor buffer (@private@) ****/ { int fd; /* File descriptor */ unsigned char *current, /* Current position in buffer */ diff --git a/mxml.xml b/mxml.xml index 1a68497..a722e40 100644 --- a/mxml.xml +++ b/mxml.xml @@ -3,7 +3,7 @@ xmlns="http://www.easysw.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.easysw.com/~mike/mxml/mxmldoc.xsd">- Add a node to a tree. + 'mxmlAdd()' - Add a node to a tree. Adds the specified node to the parent. If the child argument is not NULL, puts the new node before or after the specified child depending @@ -29,7 +29,7 @@ MXML_ADD_TO_PARENT can be used to specify a NULL child pointer. - Delete a node and all of its children. + 'mxmlDelete()' - Delete a node and all of its children. If the specified node has a parent, this function first removes the node from its parent using the mxmlRemove() function. @@ -41,7 +41,7 @@ node from its parent using the mxmlRemove() function.const char * -Attribute value or NULL +O - Attribute value or NULL Get an attribute. @@ -57,7 +57,7 @@ named attribute does not exist. - Set an attribute. + 'mxmlElementSetAttr()' - Set an attribute. If the named attribute already exists, the value of the attribute is replaced by the new string value. The string value is copied @@ -79,14 +79,14 @@ not an element. int -0 on success, -1 on failure +O - 0 on success, -1 on failure Add a callback to convert entities to Unicode. const char * -Entity name or NULL +O - Entity name or NULL Get the name that corresponds to the character value. @@ -99,7 +99,7 @@ If val does not need to be represented by a named entity, NULL is returned. int -Character value or -1 on error +O - Character value or -1 on error Get the character corresponding to a named entity. @@ -111,12 +111,12 @@ name is not known. - Remove a callback. +'mxmlEntityRemoveCallback()' - Remove a callback. mxml_node_t * -Element node or NULL +O - Element node or NULL Find the named element. @@ -154,7 +154,7 @@ constrains the search to a particular node's children. - Delete an index. +'mxmlIndexDelete()' - Delete an index. mxml_index_t * Index to delete @@ -163,7 +163,7 @@ constrains the search to a particular node's children.mxml_node_t * -Next node or NULL if there is none +O - Next node or NULL if there is none Return the next node in the index. @@ -176,7 +176,7 @@ Nodes are returned in the sorted order of the index. mxml_node_t * -Node or NULL if none found +O - Node or NULL if none found Find the next matching node. @@ -200,7 +200,7 @@ to calling mxmlIndexEnum(). mxml_index_t * -New index +O - New index Create a new index. @@ -225,7 +225,7 @@ argument is not NULL. mxml_node_t * -First node or NULL if there is none +O - First node or NULL if there is none Reset the enumeration/find pointer in the index and return the first node in the index. @@ -240,7 +240,7 @@ mxmlIndexFind() for the first time. mxml_node_t * -First node or NULL if the file could not be read. +O - First node or NULL if the file could not be read. Load a file descriptor into an XML node tree. @@ -266,7 +266,7 @@ child nodes of the specified type. mxml_node_t * -First node or NULL if the file could not be read. +O - First node or NULL if the file could not be read. Load a file into an XML node tree. @@ -292,7 +292,7 @@ child nodes of the specified type. mxml_node_t * -First node or NULL if the string has errors. +O - First node or NULL if the string has errors. Load a string into an XML node tree. @@ -318,7 +318,7 @@ child nodes of the specified type. mxml_node_t * -New node +O - New node Create a new CDATA node. @@ -340,7 +340,7 @@ is copied into the new node. CDATA nodes use the MXML_ELEMENT type. mxml_node_t * -New node +O - New node Create a new custom data node. @@ -362,7 +362,7 @@ node is not dynamically allocated or is separately managed. mxml_node_t * -New node +O - New node Create a new element node. @@ -381,7 +381,7 @@ element node has no parent. mxml_node_t * -New node +O - New node Create a new integer node. @@ -400,7 +400,7 @@ integer node has no parent. mxml_node_t * -New node +O - New node Create a new opaque string. @@ -420,7 +420,7 @@ is copied into the new node. mxml_node_t * -New node +O - New node Create a new real number node. @@ -439,7 +439,7 @@ the new real number node has no parent. mxml_node_t * -New node +O - New node Create a new text fragment node. @@ -464,7 +464,7 @@ string must be nul-terminated and is copied into the new node. mxml_node_t * -New node +O - New node Create a new formatted text fragment node. @@ -490,7 +490,7 @@ string must be nul-terminated and is formatted into the new node. - Remove a node from its parent. + 'mxmlRemove()' - Remove a node from its parent. Does not free memory used by the node - use mxmlDelete() for that. This function does nothing if the node has no parent. @@ -502,7 +502,7 @@ This function does nothing if the node has no parent.char * -Allocated string or NULL +O - Allocated string or NULL Save an XML node tree to an allocated string. @@ -525,7 +525,7 @@ element tags. int -0 on success, -1 on error. +O - 0 on success, -1 on error. Save an XML tree to a file descriptor. @@ -546,7 +546,7 @@ element tags. int -0 on success, -1 on error. +O - 0 on success, -1 on error. Save an XML tree to a file. @@ -567,7 +567,7 @@ element tags. int -Size of string +O - Size of string Save an XML node tree to a string. @@ -596,7 +596,7 @@ element tags. int -0 on success, -1 on failure +O - 0 on success, -1 on failure Set the element name of a CDATA node. @@ -615,7 +615,7 @@ The node is not changed if it is not a CDATA element node. int -0 on success, -1 on failure +O - 0 on success, -1 on failure Set the data and destructor of a custom data node. @@ -632,13 +632,14 @@ The node is not changed if it is not a custom node. - Set the handling functions for custom data. + 'mxmlSetCustomHandlers()' - Set the handling functions for custom data. The load function accepts a node pointer and a data string and must return 0 on success and non-zero on error. The save function accepts a node pointer and must return a malloc'd -string on success and NULL on error. +string on success and NULL on error. +mxml_custom_load_cb_t Load function @@ -651,7 +652,7 @@ string on success and NULL on error.int -0 on success, -1 on failure +O - 0 on success, -1 on failure Set the name of an element node. @@ -666,12 +667,12 @@ The node is not changed if it is not an element node. - Set the error message callback. +'mxmlSetErrorCallback()' - Set the error message callback. int -0 on success, -1 on failure +O - 0 on success, -1 on failure Set the value of an integer node. @@ -688,7 +689,7 @@ The node is not changed if it is not an integer node. int -0 on success, -1 on failure +O - 0 on success, -1 on failure Set the value of an opaque node. @@ -705,7 +706,7 @@ The node is not changed if it is not an opaque node. int -0 on success, -1 on failure +O - 0 on success, -1 on failure Set the value of a real number node. @@ -722,7 +723,7 @@ The node is not changed if it is not a real number node. int -0 on success, -1 on failure +O - 0 on success, -1 on failure Set the value of a text node. @@ -743,7 +744,7 @@ The node is not changed if it is not a text node. int -0 on success, -1 on failure +O - 0 on success, -1 on failure Set the value of a text node to a formatted string. @@ -767,7 +768,7 @@ The node is not changed if it is not a text node. mxml_node_t * -Next node or NULL +O - Next node or NULL Walk to the next logical node in the tree. @@ -790,7 +791,7 @@ the node's children. mxml_node_t * -Previous node or NULL +O - Previous node or NULL Walk to the previous logical node in the tree. @@ -811,7 +812,7 @@ the walk to the node's children. - An XML element attribute value. +Data types... char * Attribute name @@ -823,7 +824,7 @@ the walk to the node's children.struct mxml_attr_s -An XML element attribute value. +Data types... int(*)(mxml_node_t *, const char *) @@ -844,7 +845,7 @@ the walk to the node's children.struct mxml_custom_s -An XML custom value. @since Mini-XML 2.1@ +*** An XML custom value. @since Mini-XML 2.1@ An XML element value. @@ -863,7 +864,7 @@ the walk to the node's children.struct mxml_element_s -An XML element value. +*** An XML element value. An XML node index. @@ -890,7 +891,7 @@ the walk to the node's children.struct mxml_index_s -An XML node index. +*** An XML node index. An XML node. @@ -925,7 +926,7 @@ the walk to the node's children.struct mxml_node_s -An XML node. +*** An XML node. An XML text value. @@ -940,7 +941,7 @@ the walk to the node's children.struct mxml_text_s -An XML text value. +*** An XML text value. The XML node type. @@ -968,7 +969,7 @@ the walk to the node's children.union mxml_value_u -An XML node value. +*** An XML node value. An XML node value. diff --git a/mxmldoc.c b/mxmldoc.c index ddf4a0e..3511acb 100644 --- a/mxmldoc.c +++ b/mxmldoc.c @@ -1,3 +1,4 @@ +#define DEBUG 1 /* * "$Id$" * @@ -792,7 +793,7 @@ scan_file(const char *filename, /* I - Filename */ #endif /* DEBUG */ if (comment->last_child && - strstr(comment->last_child->value.text.string, "@private")) + strstr(comment->last_child->value.text.string, "@private@")) { mxmlDelete(type); type = NULL; @@ -861,9 +862,9 @@ scan_file(const char *filename, /* I - Filename */ #ifdef DEBUG fputs(" duplicating comment for typedef...\n", stderr); #endif /* DEBUG */ - update_comment(typedefnode, comment->last_child); mxmlAdd(description, MXML_ADD_AFTER, MXML_ADD_TO_PARENT, comment->last_child); + update_comment(typedefnode, comment->last_child); } description = mxmlNewElement(structclass, "description"); @@ -871,9 +872,9 @@ scan_file(const char *filename, /* I - Filename */ fprintf(stderr, " adding comment to %s...\n", structclass->value.element.name); #endif /* DEBUG */ - update_comment(structclass, comment->last_child); mxmlAdd(description, MXML_ADD_AFTER, MXML_ADD_TO_PARENT, comment->last_child); + update_comment(structclass, comment->last_child); if (scan_file(filename, fp, structclass)) { @@ -943,18 +944,18 @@ scan_file(const char *filename, /* I - Filename */ #ifdef DEBUG fputs(" duplicating comment for typedef...\n", stderr); #endif /* DEBUG */ - update_comment(typedefnode, comment->last_child); mxmlAdd(description, MXML_ADD_AFTER, MXML_ADD_TO_PARENT, comment->last_child); + update_comment(typedefnode, comment->last_child); } description = mxmlNewElement(enumeration, "description"); #ifdef DEBUG fputs(" adding comment to enumeration...\n", stderr); #endif /* DEBUG */ - update_comment(enumeration, comment->last_child); mxmlAdd(description, MXML_ADD_AFTER, MXML_ADD_TO_PARENT, comment->last_child); + update_comment(enumeration, comment->last_child); } else if (type && type->child && !strcmp(type->child->value.text.string, "extern")) @@ -1100,8 +1101,6 @@ scan_file(const char *filename, /* I - Filename */ mxmlDelete(type); type = NULL; } - - typedefnode = NULL; break; case ':' : @@ -1224,8 +1223,11 @@ scan_file(const char *filename, /* I - Filename */ } #ifdef DEBUG - fprintf(stderr, " processing comment, variable=%p, constant=%p, tree=\"%s\"\n", - variable, constant, tree->value.element.name); + fprintf(stderr, + " processing comment, variable=%p, " + "constant=%p, typedefnode=%p, tree=\"%s\"\n", + variable, constant, typedefnode, + tree->value.element.name); #endif /* DEBUG */ if (variable) @@ -1325,6 +1327,14 @@ scan_file(const char *filename, /* I - Filename */ #endif /* DEBUG */ } +#ifdef DEBUG + fprintf(stderr, + " processing comment, variable=%p, " + "constant=%p, typedefnode=%p, tree=\"%s\"\n", + variable, constant, typedefnode, + tree->value.element.name); +#endif /* DEBUG */ + if (variable) { description = mxmlNewElement(variable, "description"); @@ -1630,9 +1640,9 @@ scan_file(const char *filename, /* I - Filename */ #ifdef DEBUG fputs(" adding comment to returnvalue...\n", stderr); #endif /* DEBUG */ - update_comment(returnvalue, comment->last_child); mxmlAdd(description, MXML_ADD_AFTER, MXML_ADD_TO_PARENT, comment->last_child); + update_comment(returnvalue, comment->last_child); } else mxmlDelete(type); @@ -1641,9 +1651,9 @@ scan_file(const char *filename, /* I - Filename */ #ifdef DEBUG fputs(" adding comment to function...\n", stderr); #endif /* DEBUG */ - update_comment(function, comment->last_child); mxmlAdd(description, MXML_ADD_AFTER, MXML_ADD_TO_PARENT, comment->last_child); + update_comment(function, comment->last_child); type = NULL; } @@ -2016,6 +2026,16 @@ update_comment(mxml_node_t *parent, /* I - Parent node */ for (; ptr > comment->value.text.string && isspace(*ptr & 255); ptr --) *ptr = '\0'; + /* + * Remove private types, variables, etc. + */ + + if (strstr(comment->value.text.string, "@private@")) + { + fputs("Deleting private node!\n", stderr); + mxmlDelete(parent); + } + #ifdef DEBUG fprintf(stderr, " updated comment = %s\n", comment->value.text.string); #endif /* DEBUG */