From 735989840c5880d9446e31806753b1093c4ab0ba Mon Sep 17 00:00:00 2001 From: Michael R Sweet Date: Tue, 29 Nov 2005 20:43:30 +0000 Subject: [PATCH] Save work on adding @private@ comment support... mxml-file.c: - Change comment from @private to @private@. mxmldoc.c: - scan_file(): Changes to support @private@. - update_comment(): Remove node if the comment contains @private@. --- doc/reference.html | 103 +++++++++++++++++++++++---------------------- mxml-file.c | 2 +- mxml.xml | 103 +++++++++++++++++++++++---------------------- mxmldoc.c | 42 +++++++++++++----- 4 files changed, 136 insertions(+), 114 deletions(-) diff --git a/doc/reference.html b/doc/reference.html index fc47cd9..f5703e9 100644 --- a/doc/reference.html +++ b/doc/reference.html @@ -92,7 +92,7 @@

mxmlAdd()


Description

-

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(

mxmlDelete()


Description

-

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.

@@ -165,12 +165,12 @@ mxmlElementGetAttr( nameName of attribute

Returns

-

Attribute value or NULL

+

O - Attribute value or NULL

mxmlElementSetAttr()


Description

-

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);

Arguments

None.

Returns

-

0 on success, -1 on failure

+

O - 0 on success, -1 on failure

mxmlEntityGetName()


@@ -228,7 +228,7 @@ mxmlEntityGetName( valCharacter value

Returns

-

Entity name or NULL

+

O - Entity name or NULL

mxmlEntityGetValue()


@@ -250,12 +250,12 @@ mxmlEntityGetValue( nameEntity name

Returns

-

Character value or -1 on error

+

O - Character value or -1 on error

mxmlEntityRemoveCallback()


Description

-

Remove a callback.

+

'mxmlEntityRemoveCallback()' - Remove a callback.

Syntax

 void
@@ -302,12 +302,12 @@ mxmlFindElement(
 descendDescend 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(
 indIndex 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( valueAttribute value, if any

Returns

-

Node or NULL if none found

+

O - Node or NULL if none found

mxmlIndexNew()


@@ -399,7 +399,7 @@ mxmlIndexNew( attrAttribute to index or NULL for none

Returns

-

New index

+

O - New index

mxmlIndexReset()


@@ -422,7 +422,7 @@ mxmlIndexReset( indIndex 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( fdFile 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( fpFile 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( sString 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( dataData string

Returns

-

New node

+

O - New node

mxmlNewCustom()  Mini-XML 2.1 


@@ -574,7 +574,7 @@ mxmlNewCustom( dataPointer to data

Returns

-

New node

+

O - New node

mxmlNewElement()


@@ -599,7 +599,7 @@ mxmlNewElement( nameName of element

Returns

-

New node

+

O - New node

mxmlNewInteger()


@@ -624,7 +624,7 @@ mxmlNewInteger( integerInteger value

Returns

-

New node

+

O - New node

mxmlNewOpaque()


@@ -650,7 +650,7 @@ mxmlNewOpaque( opaqueOpaque string

Returns

-

New node

+

O - New node

mxmlNewReal()


@@ -675,7 +675,7 @@ mxmlNewReal( realReal number value

Returns

-

New node

+

O - New node

mxmlNewText()


@@ -704,7 +704,7 @@ mxmlNewText( stringString

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( nodeNode to write

Returns

-

Allocated string or NULL

+

O - Allocated string or NULL

mxmlSaveFd()


@@ -815,7 +815,7 @@ mxmlSaveFd( fdFile descriptor to write to

Returns

-

0 on success, -1 on error.

+

O - 0 on success, -1 on error.

mxmlSaveFile()


@@ -842,7 +842,7 @@ mxmlSaveFile( fpFile to write to

Returns

-

0 on success, -1 on error.

+

O - 0 on success, -1 on error.

mxmlSaveString()


@@ -875,7 +875,7 @@ mxmlSaveString( bufsizeSize of string buffer

Returns

-

Size of string

+

O - Size of string

mxmlSetCDATA()  Mini-XML 2.3 


@@ -900,7 +900,7 @@ mxmlSetCDATA( dataNew 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( dataNew 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(
 nameNew 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(
 integerInteger value
 

Returns

-

0 on success, -1 on failure

+

O - 0 on success, -1 on failure

mxmlSetOpaque()


@@ -1035,7 +1036,7 @@ mxmlSetOpaque( opaqueOpaque string

Returns

-

0 on success, -1 on failure

+

O - 0 on success, -1 on failure

mxmlSetReal()


@@ -1058,7 +1059,7 @@ mxmlSetReal( realReal number value

Returns

-

0 on success, -1 on failure

+

O - 0 on success, -1 on failure

mxmlSetText()


@@ -1083,7 +1084,7 @@ mxmlSetText( stringString

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( descendDescend 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( descendDescend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST

Returns

-

Previous node or NULL

+

O - Previous node or NULL

Structures

    @@ -1179,7 +1180,7 @@ mxmlWalkPrev(

    mxml_attr_s


    Description

    -

    An XML element attribute value.

    +

    Data types...

    Definition

     struct mxml_attr_s
    @@ -1328,7 +1329,7 @@ struct mxml_text_s
     

    mxml_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 */