Bump version to 2.3.

Add @since ...@ comments.

Fix parsing of @...@ comments.

Add comments to end of each list item.

Use "-Os -g" as the default optimization with GCC.

Change string functions to use _mxml prefix instead.
This commit is contained in:
Michael R Sweet 2005-10-13 18:27:00 +00:00
parent 62376c5156
commit a5ea819842
13 changed files with 398 additions and 310 deletions

View File

@ -1,8 +1,10 @@
CHANGES - 09/28/2005
CHANGES - 10/13/2005
--------------------
CHANGES IN Mini-XML 2.2.3
CHANGES IN Mini-XML 2.3
- The mxmldoc program now supports "@since version@" and
"@deprecated@" comments.
- Fixed function and enumeraion type bugs in mxmldoc.
- Fixed XML schema for mxmldoc.
- The mxmldoc program now supports --title and --intro

View File

@ -148,13 +148,13 @@ install-libmxml.a:
$(INSTALL_DIR) $(BUILDROOT)$(libdir)
$(INSTALL_LIB) libmxml.a $(BUILDROOT)$(libdir)
install-libmxml.so.1.1:
install-libmxml.so.1.2:
$(INSTALL_DIR) $(BUILDROOT)$(libdir)
$(INSTALL_LIB) libmxml.so.1.1 $(BUILDROOT)$(libdir)
$(INSTALL_LIB) libmxml.so.1.2 $(BUILDROOT)$(libdir)
$(RM) $(BUILDROOT)$(libdir)/libmxml.so
$(LN) libmxml.so.1.1 $(BUILDROOT)$(libdir)/libmxml.so
$(LN) libmxml.so.1.2 $(BUILDROOT)$(libdir)/libmxml.so
$(RM) $(BUILDROOT)$(libdir)/libmxml.so.1
$(LN) libmxml.so.1.1 $(BUILDROOT)$(libdir)/libmxml.so.1
$(LN) libmxml.so.1.2 $(BUILDROOT)$(libdir)/libmxml.so.1
install-libmxml.sl.1:
$(INSTALL_DIR) $(BUILDROOT)$(libdir)
@ -186,10 +186,10 @@ uninstall: uninstall-$(LIBMXML) uninstall-libmxml.a
uninstall-libmxml.a:
$(RM) $(BUILDROOT)$(libdir)/libmxml.a
uninstall-libmxml.so.1.1:
uninstall-libmxml.so.1.2:
$(RM) $(BUILDROOT)$(libdir)/libmxml.so
$(RM) $(BUILDROOT)$(libdir)/libmxml.so.1
$(RM) $(BUILDROOT)$(libdir)/libmxml.so.1.1
$(RM) $(BUILDROOT)$(libdir)/libmxml.so.1.2
uninstall-libmxml.sl.1:
$(RM) $(BUILDROOT)$(libdir)/libmxml.sl
@ -258,14 +258,14 @@ $(LIBOBJS): mxml.h
#
# libmxml.so.1.1
# libmxml.so.1.2
#
libmxml.so.1.1: $(LIBOBJS)
$(DSO) $(DSOFLAGS) -o libmxml.so.1.1 $(LIBOBJS)
libmxml.so.1.2: $(LIBOBJS)
$(DSO) $(DSOFLAGS) -o libmxml.so.1.2 $(LIBOBJS)
$(RM) libmxml.so libmxml.so.1
$(LN) libmxml.so.1.1 libmxml.so
$(LN) libmxml.so.1.1 libmxml.so.1
$(LN) libmxml.so.1.2 libmxml.so
$(LN) libmxml.so.1.2 libmxml.so.1
#
@ -285,7 +285,7 @@ libmxml.sl.1: $(LIBOBJS)
libmxml.1.dylib: $(LIBOBJS)
$(DSO) $(DSOFLAGS) -o libmxml.1.dylib \
-install_name $(libdir)/libmxml.dylib \
-current_version 1.1.0 \
-current_version 1.2.0 \
-compatibility_version 1.0.0 \
$(LIBOBJS)
$(RM) libmxml.dylib libmxml.1.dylib

View File

@ -53,16 +53,16 @@
*/
# ifndef HAVE_STRDUP
extern char *mxml_strdup(const char *);
# define strdup mxml_strdup
extern char *_mxml_strdup(const char *);
# define strdup _mxml_strdup
# endif /* !HAVE_STRDUP */
extern char *mxml_strdupf(const char *, ...);
extern char *mxml_vstrdupf(const char *, va_list);
extern char *_mxml_strdupf(const char *, ...);
extern char *_mxml_vstrdupf(const char *, va_list);
# ifndef HAVE_VSNPRINTF
extern int mxml_vsnprintf(char *, size_t, const char *, va_list);
# define vsnprintf mxml_vsnprintf
extern int _mxml_vsnprintf(char *, size_t, const char *, va_list);
# define vsnprintf _mxml_vsnprintf
# endif /* !HAVE_VSNPRINTF */
/*

35
configure vendored
View File

@ -1236,7 +1236,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_config_headers="$ac_config_headers config.h"
VERSION=2.2.3
VERSION=2.3
cat >>confdefs.h <<_ACEOF
#define MXML_VERSION "Mini-XML v$VERSION"
@ -1247,7 +1247,7 @@ CFLAGS="${CFLAGS:=}"
CXXFLAGS="${CXXFLAGS:=}"
LDFLAGS="${LDFLAGS:=}"
OPTIM="-O"
OPTIM=""
@ -1264,8 +1264,6 @@ if test "${enable_debug+set}" = set; then
enableval="$enable_debug"
if eval "test x$enable_debug = xyes"; then
OPTIM="-g"
else
LDFLAGS="$LDFLAGS -s"
fi
fi;
@ -3154,7 +3152,7 @@ echo $ECHO_N "checking for shared library support... $ECHO_C" >&6
SunOS* | UNIX_S*)
echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6
LIBMXML="libmxml.so.1.1"
LIBMXML="libmxml.so.1.2"
DSO="\$(CC)"
DSOFLAGS="$DSOFLAGS -Wl,-h,libmxml.so.1 -G -R\$(libdir) \$(OPTIM)"
LDFLAGS="$LDFLAGS -R\$(libdir)"
@ -3163,7 +3161,7 @@ echo "${ECHO_T}yes" >&6
HP-UX*)
echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6
LIBMXML="libmxml.sl.1"
LIBMXML="libmxml.sl.2"
DSO="ld"
DSOFLAGS="$DSOFLAGS -b -z +h libmxml.sl.1 +s +b \$(libdir)"
LDFLAGS="$LDFLAGS -Wl,+s,+b,\$(libdir)"
@ -3172,7 +3170,7 @@ echo "${ECHO_T}yes" >&6
IRIX)
echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6
LIBMXML="libmxml.so.1.1"
LIBMXML="libmxml.so.1.2"
DSO="\$(CC)"
DSOFLAGS="$DSOFLAGS -Wl,-rpath,\$(libdir),-set_version,sgi1.0,-soname,libmxml.so.1 -shared \$(OPTIM)"
;;
@ -3180,7 +3178,7 @@ echo "${ECHO_T}yes" >&6
OSF1* | Linux | GNU)
echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6
LIBMXML="libmxml.so.1.1"
LIBMXML="libmxml.so.1.2"
DSO="\$(CC)"
DSOFLAGS="$DSOFLAGS -Wl,-soname,libmxml.so.1,-rpath,\$(libdir) -shared \$(OPTIM)"
LDFLAGS="$LDFLAGS -Wl,-rpath,\$(libdir)"
@ -3189,7 +3187,7 @@ echo "${ECHO_T}yes" >&6
*BSD*)
echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6
LIBMXML="libmxml.so.1.1"
LIBMXML="libmxml.so.1.2"
DSO="\$(CC)"
DSOFLAGS="$DSOFLAGS -Wl,-soname,libmxml.so.1,-R\$(libdir) -shared \$(OPTIM)"
LDFLAGS="$LDFLAGS -Wl,-R\$(libdir)"
@ -3225,6 +3223,10 @@ fi
if test -n "$GCC"; then
CFLAGS="-Wall $CFLAGS"
if test "x$OPTIM" = x; then
OPTIM="-Os -g"
fi
if test "x$use_ansi" = xyes; then
CFLAGS="-ansi -pedantic $CFLAGS"
fi
@ -3236,6 +3238,11 @@ else
case $uname in
HP-UX*)
CFLAGS="-Ae $CFLAGS"
if test "x$OPTIM" = x; then
OPTIM="-O2"
fi
OPTIM="+DAportable $OPTIM"
if test $PICFLAG = 1; then
@ -3244,10 +3251,20 @@ else
;;
UNIX_SVR* | SunOS*)
if test "x$OPTIM" = x; then
OPTIM="-O2"
fi
if test $PICFLAG = 1; then
OPTIM="-KPIC $OPTIM"
fi
;;
*)
if test "x$OPTIM" = x; then
OPTIM="-O2"
fi
;;
esac
fi

View File

@ -23,7 +23,7 @@ dnl Set the name of the config header file...
AC_CONFIG_HEADER(config.h)
dnl Version number...
VERSION=2.2.3
VERSION=2.3
AC_SUBST(VERSION)
AC_DEFINE_UNQUOTED(MXML_VERSION, "Mini-XML v$VERSION")
@ -33,7 +33,7 @@ CFLAGS="${CFLAGS:=}"
CXXFLAGS="${CXXFLAGS:=}"
LDFLAGS="${LDFLAGS:=}"
AC_SUBST(LDFLAGS)
OPTIM="-O"
OPTIM=""
AC_SUBST(OPTIM)
AC_ARG_WITH(ansi, [ --with-ansi set full ANSI C mode, default=no],
@ -43,8 +43,6 @@ AC_ARG_WITH(ansi, [ --with-ansi set full ANSI C mode, default=no],
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging, default=no],
if eval "test x$enable_debug = xyes"; then
OPTIM="-g"
else
LDFLAGS="$LDFLAGS -s"
fi)
AC_ARG_WITH(docdir, [ --with-docdir set directory for documentation, default=${prefix}/share/doc/mxml],
@ -122,7 +120,7 @@ if test x$enable_shared = xyes; then
case "$uname" in
SunOS* | UNIX_S*)
AC_MSG_RESULT(yes)
LIBMXML="libmxml.so.1.1"
LIBMXML="libmxml.so.1.2"
DSO="\$(CC)"
DSOFLAGS="$DSOFLAGS -Wl,-h,libmxml.so.1 -G -R\$(libdir) \$(OPTIM)"
LDFLAGS="$LDFLAGS -R\$(libdir)"
@ -130,7 +128,7 @@ if test x$enable_shared = xyes; then
HP-UX*)
AC_MSG_RESULT(yes)
LIBMXML="libmxml.sl.1"
LIBMXML="libmxml.sl.2"
DSO="ld"
DSOFLAGS="$DSOFLAGS -b -z +h libmxml.sl.1 +s +b \$(libdir)"
LDFLAGS="$LDFLAGS -Wl,+s,+b,\$(libdir)"
@ -138,14 +136,14 @@ if test x$enable_shared = xyes; then
IRIX)
AC_MSG_RESULT(yes)
LIBMXML="libmxml.so.1.1"
LIBMXML="libmxml.so.1.2"
DSO="\$(CC)"
DSOFLAGS="$DSOFLAGS -Wl,-rpath,\$(libdir),-set_version,sgi1.0,-soname,libmxml.so.1 -shared \$(OPTIM)"
;;
OSF1* | Linux | GNU)
AC_MSG_RESULT(yes)
LIBMXML="libmxml.so.1.1"
LIBMXML="libmxml.so.1.2"
DSO="\$(CC)"
DSOFLAGS="$DSOFLAGS -Wl,-soname,libmxml.so.1,-rpath,\$(libdir) -shared \$(OPTIM)"
LDFLAGS="$LDFLAGS -Wl,-rpath,\$(libdir)"
@ -153,7 +151,7 @@ if test x$enable_shared = xyes; then
*BSD*)
AC_MSG_RESULT(yes)
LIBMXML="libmxml.so.1.1"
LIBMXML="libmxml.so.1.2"
DSO="\$(CC)"
DSOFLAGS="$DSOFLAGS -Wl,-soname,libmxml.so.1,-R\$(libdir) -shared \$(OPTIM)"
LDFLAGS="$LDFLAGS -Wl,-R\$(libdir)"
@ -187,6 +185,10 @@ dnl Add -Wall for GCC...
if test -n "$GCC"; then
CFLAGS="-Wall $CFLAGS"
if test "x$OPTIM" = x; then
OPTIM="-Os -g"
fi
if test "x$use_ansi" = xyes; then
CFLAGS="-ansi -pedantic $CFLAGS"
fi
@ -198,6 +200,11 @@ else
case $uname in
HP-UX*)
CFLAGS="-Ae $CFLAGS"
if test "x$OPTIM" = x; then
OPTIM="-O2"
fi
OPTIM="+DAportable $OPTIM"
if test $PICFLAG = 1; then
@ -206,10 +213,20 @@ else
;;
UNIX_SVR* | SunOS*)
if test "x$OPTIM" = x; then
OPTIM="-O2"
fi
if test $PICFLAG = 1; then
OPTIM="-KPIC $OPTIM"
fi
;;
*)
if test "x$OPTIM" = x; then
OPTIM="-O2"
fi
;;
esac
fi

View File

@ -2,12 +2,13 @@
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
<head>
<title>Documentation</title>
<meta name='creator' content='Mini-XML v2.2.3'/>
<meta name='creator' content='Mini-XML v2.3'/>
<style><!--
h1, h2, h3, p { font-family: sans-serif; text-align: justify; }
tt, pre a:link, pre a:visited, tt a:link, tt a:visited { font-weight: bold; color: #7f0000; }
pre { font-weight: bold; color: #7f0000; margin-left: 2em; }
span.info { font-weight: bold; padding: 2; color: #ffffff; background: #000000; float: right; }
span.info { font-weight: bold; font-style: italic; color: #ffffff; background: #000000; }
h3 span.info { float: right; }
--></style>
</head>
<body>
@ -22,10 +23,10 @@
<!-- NEW PAGE -->
<h2><a name='_enumerations'>Enumerations</a></h2>
<ul>
<li><a href='#mxml_type_e'><tt>mxml_type_e</tt></a></li>
<li><a href='#mxml_type_e'><tt>mxml_type_e</tt></a> </li>
</ul>
<!-- NEW PAGE -->
<h3><a name='mxml_type_e'>mxml_type_e</a></h3>
<h3><a name='mxml_type_e'>mxml_type_e</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>The XML node type.</p>
@ -33,62 +34,62 @@
<p class='table'><table align='center' border='1' width='80%'>
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>MXML_CUSTOM</tt></td><td>Custom data</td></tr>
<tr><td><tt>MXML_ELEMENT</tt></td><td>XML element with attributes</td></tr>
<tr><td><tt>MXML_IGNORE</tt></td><td>Ignore/throw away node</td></tr>
<tr><td><tt>MXML_INTEGER</tt></td><td>Integer value</td></tr>
<tr><td><tt>MXML_OPAQUE</tt></td><td>Opaque string</td></tr>
<tr><td><tt>MXML_REAL</tt></td><td>Real value</td></tr>
<tr><td><tt>MXML_TEXT</tt></td><td>Text fragment</td></tr>
<tr><td><tt>MXML_CUSTOM</tt> <span class='info'>&nbsp;Mini-XML 2.1&nbsp;</span></td><td>Custom data </td></tr>
<tr><td><tt>MXML_ELEMENT</tt> </td><td>XML element with attributes</td></tr>
<tr><td><tt>MXML_IGNORE</tt> <span class='info'>&nbsp;Mini-XML 2.3&nbsp;</span></td><td>Ignore/throw away node </td></tr>
<tr><td><tt>MXML_INTEGER</tt> </td><td>Integer value</td></tr>
<tr><td><tt>MXML_OPAQUE</tt> </td><td>Opaque string</td></tr>
<tr><td><tt>MXML_REAL</tt> </td><td>Real value</td></tr>
<tr><td><tt>MXML_TEXT</tt> </td><td>Text fragment</td></tr>
</tbody></table></p>
<!-- NEW PAGE -->
<h2><a name='_functions'>Functions</a></h2>
<ul>
<li><a href='#mxmlAdd'><tt>mxmlAdd()</tt></a></li>
<li><a href='#mxmlDelete'><tt>mxmlDelete()</tt></a></li>
<li><a href='#mxmlElementGetAttr'><tt>mxmlElementGetAttr()</tt></a></li>
<li><a href='#mxmlElementSetAttr'><tt>mxmlElementSetAttr()</tt></a></li>
<li><a href='#mxmlEntityAddCallback'><tt>mxmlEntityAddCallback()</tt></a></li>
<li><a href='#mxmlEntityGetName'><tt>mxmlEntityGetName()</tt></a></li>
<li><a href='#mxmlEntityGetValue'><tt>mxmlEntityGetValue()</tt></a></li>
<li><a href='#mxmlEntityRemoveCallback'><tt>mxmlEntityRemoveCallback()</tt></a></li>
<li><a href='#mxmlFindElement'><tt>mxmlFindElement()</tt></a></li>
<li><a href='#mxmlIndexDelete'><tt>mxmlIndexDelete()</tt></a></li>
<li><a href='#mxmlIndexEnum'><tt>mxmlIndexEnum()</tt></a></li>
<li><a href='#mxmlIndexFind'><tt>mxmlIndexFind()</tt></a></li>
<li><a href='#mxmlIndexNew'><tt>mxmlIndexNew()</tt></a></li>
<li><a href='#mxmlIndexReset'><tt>mxmlIndexReset()</tt></a></li>
<li><a href='#mxmlLoadFd'><tt>mxmlLoadFd()</tt></a></li>
<li><a href='#mxmlLoadFile'><tt>mxmlLoadFile()</tt></a></li>
<li><a href='#mxmlLoadString'><tt>mxmlLoadString()</tt></a></li>
<li><a href='#mxmlNewCDATA'><tt>mxmlNewCDATA()</tt></a></li>
<li><a href='#mxmlNewCustom'><tt>mxmlNewCustom()</tt></a></li>
<li><a href='#mxmlNewElement'><tt>mxmlNewElement()</tt></a></li>
<li><a href='#mxmlNewInteger'><tt>mxmlNewInteger()</tt></a></li>
<li><a href='#mxmlNewOpaque'><tt>mxmlNewOpaque()</tt></a></li>
<li><a href='#mxmlNewReal'><tt>mxmlNewReal()</tt></a></li>
<li><a href='#mxmlNewText'><tt>mxmlNewText()</tt></a></li>
<li><a href='#mxmlNewTextf'><tt>mxmlNewTextf()</tt></a></li>
<li><a href='#mxmlRemove'><tt>mxmlRemove()</tt></a></li>
<li><a href='#mxmlSaveAllocString'><tt>mxmlSaveAllocString()</tt></a></li>
<li><a href='#mxmlSaveFd'><tt>mxmlSaveFd()</tt></a></li>
<li><a href='#mxmlSaveFile'><tt>mxmlSaveFile()</tt></a></li>
<li><a href='#mxmlSaveString'><tt>mxmlSaveString()</tt></a></li>
<li><a href='#mxmlSetCDATA'><tt>mxmlSetCDATA()</tt></a></li>
<li><a href='#mxmlSetCustom'><tt>mxmlSetCustom()</tt></a></li>
<li><a href='#mxmlSetCustomHandlers'><tt>mxmlSetCustomHandlers()</tt></a></li>
<li><a href='#mxmlSetElement'><tt>mxmlSetElement()</tt></a></li>
<li><a href='#mxmlSetErrorCallback'><tt>mxmlSetErrorCallback()</tt></a></li>
<li><a href='#mxmlSetInteger'><tt>mxmlSetInteger()</tt></a></li>
<li><a href='#mxmlSetOpaque'><tt>mxmlSetOpaque()</tt></a></li>
<li><a href='#mxmlSetReal'><tt>mxmlSetReal()</tt></a></li>
<li><a href='#mxmlSetText'><tt>mxmlSetText()</tt></a></li>
<li><a href='#mxmlSetTextf'><tt>mxmlSetTextf()</tt></a></li>
<li><a href='#mxmlWalkNext'><tt>mxmlWalkNext()</tt></a></li>
<li><a href='#mxmlWalkPrev'><tt>mxmlWalkPrev()</tt></a></li>
<li><a href='#mxmlAdd'><tt>mxmlAdd()</tt></a> </li>
<li><a href='#mxmlDelete'><tt>mxmlDelete()</tt></a> </li>
<li><a href='#mxmlElementGetAttr'><tt>mxmlElementGetAttr()</tt></a> </li>
<li><a href='#mxmlElementSetAttr'><tt>mxmlElementSetAttr()</tt></a> </li>
<li><a href='#mxmlEntityAddCallback'><tt>mxmlEntityAddCallback()</tt></a> </li>
<li><a href='#mxmlEntityGetName'><tt>mxmlEntityGetName()</tt></a> </li>
<li><a href='#mxmlEntityGetValue'><tt>mxmlEntityGetValue()</tt></a> </li>
<li><a href='#mxmlEntityRemoveCallback'><tt>mxmlEntityRemoveCallback()</tt></a> </li>
<li><a href='#mxmlFindElement'><tt>mxmlFindElement()</tt></a> </li>
<li><a href='#mxmlIndexDelete'><tt>mxmlIndexDelete()</tt></a> </li>
<li><a href='#mxmlIndexEnum'><tt>mxmlIndexEnum()</tt></a> </li>
<li><a href='#mxmlIndexFind'><tt>mxmlIndexFind()</tt></a> </li>
<li><a href='#mxmlIndexNew'><tt>mxmlIndexNew()</tt></a> </li>
<li><a href='#mxmlIndexReset'><tt>mxmlIndexReset()</tt></a> </li>
<li><a href='#mxmlLoadFd'><tt>mxmlLoadFd()</tt></a> </li>
<li><a href='#mxmlLoadFile'><tt>mxmlLoadFile()</tt></a> </li>
<li><a href='#mxmlLoadString'><tt>mxmlLoadString()</tt></a> </li>
<li><a href='#mxmlNewCDATA'><tt>mxmlNewCDATA()</tt></a> <span class='info'>&nbsp;Mini-XML 2.3&nbsp;</span></li>
<li><a href='#mxmlNewCustom'><tt>mxmlNewCustom()</tt></a> <span class='info'>&nbsp;Mini-XML 2.1&nbsp;</span></li>
<li><a href='#mxmlNewElement'><tt>mxmlNewElement()</tt></a> </li>
<li><a href='#mxmlNewInteger'><tt>mxmlNewInteger()</tt></a> </li>
<li><a href='#mxmlNewOpaque'><tt>mxmlNewOpaque()</tt></a> </li>
<li><a href='#mxmlNewReal'><tt>mxmlNewReal()</tt></a> </li>
<li><a href='#mxmlNewText'><tt>mxmlNewText()</tt></a> </li>
<li><a href='#mxmlNewTextf'><tt>mxmlNewTextf()</tt></a> </li>
<li><a href='#mxmlRemove'><tt>mxmlRemove()</tt></a> </li>
<li><a href='#mxmlSaveAllocString'><tt>mxmlSaveAllocString()</tt></a> </li>
<li><a href='#mxmlSaveFd'><tt>mxmlSaveFd()</tt></a> </li>
<li><a href='#mxmlSaveFile'><tt>mxmlSaveFile()</tt></a> </li>
<li><a href='#mxmlSaveString'><tt>mxmlSaveString()</tt></a> </li>
<li><a href='#mxmlSetCDATA'><tt>mxmlSetCDATA()</tt></a> <span class='info'>&nbsp;Mini-XML 2.3&nbsp;</span></li>
<li><a href='#mxmlSetCustom'><tt>mxmlSetCustom()</tt></a> <span class='info'>&nbsp;Mini-XML 2.1&nbsp;</span></li>
<li><a href='#mxmlSetCustomHandlers'><tt>mxmlSetCustomHandlers()</tt></a> </li>
<li><a href='#mxmlSetElement'><tt>mxmlSetElement()</tt></a> </li>
<li><a href='#mxmlSetErrorCallback'><tt>mxmlSetErrorCallback()</tt></a> </li>
<li><a href='#mxmlSetInteger'><tt>mxmlSetInteger()</tt></a> </li>
<li><a href='#mxmlSetOpaque'><tt>mxmlSetOpaque()</tt></a> </li>
<li><a href='#mxmlSetReal'><tt>mxmlSetReal()</tt></a> </li>
<li><a href='#mxmlSetText'><tt>mxmlSetText()</tt></a> </li>
<li><a href='#mxmlSetTextf'><tt>mxmlSetTextf()</tt></a> </li>
<li><a href='#mxmlWalkNext'><tt>mxmlWalkNext()</tt></a> </li>
<li><a href='#mxmlWalkPrev'><tt>mxmlWalkPrev()</tt></a> </li>
</ul>
<!-- NEW PAGE -->
<h3><a name='mxmlAdd'>mxmlAdd()</a></h3>
<h3><a name='mxmlAdd'>mxmlAdd()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Add a node to a tree.
@ -120,7 +121,7 @@ mxmlAdd(
<h4>Returns</h4>
<p>Nothing.</p>
<!-- NEW PAGE -->
<h3><a name='mxmlDelete'>mxmlDelete()</a></h3>
<h3><a name='mxmlDelete'>mxmlDelete()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Delete a node and all of its children.
@ -142,7 +143,7 @@ mxmlDelete(
<h4>Returns</h4>
<p>Nothing.</p>
<!-- NEW PAGE -->
<h3><a name='mxmlElementGetAttr'>mxmlElementGetAttr()</a></h3>
<h3><a name='mxmlElementGetAttr'>mxmlElementGetAttr()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Get an attribute.
@ -166,7 +167,7 @@ mxmlElementGetAttr(
<h4>Returns</h4>
<p>Attribute value or NULL</p>
<!-- NEW PAGE -->
<h3><a name='mxmlElementSetAttr'>mxmlElementSetAttr()</a></h3>
<h3><a name='mxmlElementSetAttr'>mxmlElementSetAttr()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Set an attribute.
@ -194,7 +195,7 @@ mxmlElementSetAttr(
<h4>Returns</h4>
<p>Nothing.</p>
<!-- NEW PAGE -->
<h3><a name='mxmlEntityAddCallback'>mxmlEntityAddCallback()</a></h3>
<h3><a name='mxmlEntityAddCallback'>mxmlEntityAddCallback()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Add a callback to convert entities to Unicode.</p>
@ -208,7 +209,7 @@ mxmlEntityAddCallback(void);
<h4>Returns</h4>
<p>0 on success, -1 on failure</p>
<!-- NEW PAGE -->
<h3><a name='mxmlEntityGetName'>mxmlEntityGetName()</a></h3>
<h3><a name='mxmlEntityGetName'>mxmlEntityGetName()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Get the name that corresponds to the character value.
@ -229,7 +230,7 @@ mxmlEntityGetName(
<h4>Returns</h4>
<p>Entity name or NULL</p>
<!-- NEW PAGE -->
<h3><a name='mxmlEntityGetValue'>mxmlEntityGetValue()</a></h3>
<h3><a name='mxmlEntityGetValue'>mxmlEntityGetValue()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Get the character corresponding to a named entity.
@ -251,7 +252,7 @@ mxmlEntityGetValue(
<h4>Returns</h4>
<p>Character value or -1 on error</p>
<!-- NEW PAGE -->
<h3><a name='mxmlEntityRemoveCallback'>mxmlEntityRemoveCallback()</a></h3>
<h3><a name='mxmlEntityRemoveCallback'>mxmlEntityRemoveCallback()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Remove a callback.</p>
@ -265,7 +266,7 @@ mxmlEntityRemoveCallback(void);
<h4>Returns</h4>
<p>Nothing.</p>
<!-- NEW PAGE -->
<h3><a name='mxmlFindElement'>mxmlFindElement()</a></h3>
<h3><a name='mxmlFindElement'>mxmlFindElement()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Find the named element.
@ -303,7 +304,7 @@ mxmlFindElement(
<h4>Returns</h4>
<p>Element node or NULL</p>
<!-- NEW PAGE -->
<h3><a name='mxmlIndexDelete'>mxmlIndexDelete()</a></h3>
<h3><a name='mxmlIndexDelete'>mxmlIndexDelete()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Delete an index.</p>
@ -322,7 +323,7 @@ mxmlIndexDelete(
<h4>Returns</h4>
<p>Nothing.</p>
<!-- NEW PAGE -->
<h3><a name='mxmlIndexEnum'>mxmlIndexEnum()</a></h3>
<h3><a name='mxmlIndexEnum'>mxmlIndexEnum()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Return the next node in the index.
@ -343,7 +344,7 @@ mxmlIndexEnum(
<h4>Returns</h4>
<p>Next node or NULL if there is none</p>
<!-- NEW PAGE -->
<h3><a name='mxmlIndexFind'>mxmlIndexFind()</a></h3>
<h3><a name='mxmlIndexFind'>mxmlIndexFind()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Find the next matching node.
@ -371,7 +372,7 @@ mxmlIndexFind(
<h4>Returns</h4>
<p>Node or NULL if none found</p>
<!-- NEW PAGE -->
<h3><a name='mxmlIndexNew'>mxmlIndexNew()</a></h3>
<h3><a name='mxmlIndexNew'>mxmlIndexNew()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Create a new index.
@ -400,7 +401,7 @@ mxmlIndexNew(
<h4>Returns</h4>
<p>New index</p>
<!-- NEW PAGE -->
<h3><a name='mxmlIndexReset'>mxmlIndexReset()</a></h3>
<h3><a name='mxmlIndexReset'>mxmlIndexReset()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Reset the enumeration/find pointer in the index and
@ -423,7 +424,7 @@ mxmlIndexReset(
<h4>Returns</h4>
<p>First node or NULL if there is none</p>
<!-- NEW PAGE -->
<h3><a name='mxmlLoadFd'>mxmlLoadFd()</a></h3>
<h3><a name='mxmlLoadFd'>mxmlLoadFd()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Load a file descriptor into an XML node tree.
@ -455,7 +456,7 @@ mxmlLoadFd(
<h4>Returns</h4>
<p>First node or NULL if the file could not be read.</p>
<!-- NEW PAGE -->
<h3><a name='mxmlLoadFile'>mxmlLoadFile()</a></h3>
<h3><a name='mxmlLoadFile'>mxmlLoadFile()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Load a file into an XML node tree.
@ -487,7 +488,7 @@ mxmlLoadFile(
<h4>Returns</h4>
<p>First node or NULL if the file could not be read.</p>
<!-- NEW PAGE -->
<h3><a name='mxmlLoadString'>mxmlLoadString()</a></h3>
<h3><a name='mxmlLoadString'>mxmlLoadString()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Load a string into an XML node tree.
@ -519,7 +520,7 @@ mxmlLoadString(
<h4>Returns</h4>
<p>First node or NULL if the string has errors.</p>
<!-- NEW PAGE -->
<h3><a name='mxmlNewCDATA'>mxmlNewCDATA()</a></h3>
<h3><a name='mxmlNewCDATA'>mxmlNewCDATA()</a> <span class='info'>&nbsp;Mini-XML 2.3&nbsp;</span></h3>
<hr noshade/>
<h4>Description</h4>
<p>Create a new CDATA node.
@ -527,7 +528,9 @@ mxmlLoadString(
The new CDATA node is added to the end of the specified parent's child
list. The constant MXML_NO_PARENT can be used to specify that the new
CDATA node has no parent. The data string must be nul-terminated and
is copied into the new node. CDATA nodes use the MXML_ELEMENT type.</p>
is copied into the new node. CDATA nodes use the MXML_ELEMENT type.
</p>
<h4>Syntax</h4>
<pre>
<a href='#mxml_node_t'>mxml_node_t</a> *
@ -545,7 +548,7 @@ mxmlNewCDATA(
<h4>Returns</h4>
<p>New node</p>
<!-- NEW PAGE -->
<h3><a name='mxmlNewCustom'>mxmlNewCustom()</a></h3>
<h3><a name='mxmlNewCustom'>mxmlNewCustom()</a> <span class='info'>&nbsp;Mini-XML 2.1&nbsp;</span></h3>
<hr noshade/>
<h4>Description</h4>
<p>Create a new custom data node.
@ -553,7 +556,9 @@ mxmlNewCDATA(
The new custom node is added to the end of the specified parent's child
list. The constant MXML_NO_PARENT can be used to specify that the new
element node has no parent. NULL can be passed when the data in the
node is not dynamically allocated or is separately managed.</p>
node is not dynamically allocated or is separately managed.
</p>
<h4>Syntax</h4>
<pre>
<a href='#mxml_node_t'>mxml_node_t</a> *
@ -571,7 +576,7 @@ mxmlNewCustom(
<h4>Returns</h4>
<p>New node</p>
<!-- NEW PAGE -->
<h3><a name='mxmlNewElement'>mxmlNewElement()</a></h3>
<h3><a name='mxmlNewElement'>mxmlNewElement()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Create a new element node.
@ -596,7 +601,7 @@ mxmlNewElement(
<h4>Returns</h4>
<p>New node</p>
<!-- NEW PAGE -->
<h3><a name='mxmlNewInteger'>mxmlNewInteger()</a></h3>
<h3><a name='mxmlNewInteger'>mxmlNewInteger()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Create a new integer node.
@ -621,7 +626,7 @@ mxmlNewInteger(
<h4>Returns</h4>
<p>New node</p>
<!-- NEW PAGE -->
<h3><a name='mxmlNewOpaque'>mxmlNewOpaque()</a></h3>
<h3><a name='mxmlNewOpaque'>mxmlNewOpaque()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Create a new opaque string.
@ -647,7 +652,7 @@ mxmlNewOpaque(
<h4>Returns</h4>
<p>New node</p>
<!-- NEW PAGE -->
<h3><a name='mxmlNewReal'>mxmlNewReal()</a></h3>
<h3><a name='mxmlNewReal'>mxmlNewReal()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Create a new real number node.
@ -672,7 +677,7 @@ mxmlNewReal(
<h4>Returns</h4>
<p>New node</p>
<!-- NEW PAGE -->
<h3><a name='mxmlNewText'>mxmlNewText()</a></h3>
<h3><a name='mxmlNewText'>mxmlNewText()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Create a new text fragment node.
@ -701,7 +706,7 @@ mxmlNewText(
<h4>Returns</h4>
<p>New node</p>
<!-- NEW PAGE -->
<h3><a name='mxmlNewTextf'>mxmlNewTextf()</a></h3>
<h3><a name='mxmlNewTextf'>mxmlNewTextf()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Create a new formatted text fragment node.
@ -732,7 +737,7 @@ mxmlNewTextf(
<h4>Returns</h4>
<p>New node</p>
<!-- NEW PAGE -->
<h3><a name='mxmlRemove'>mxmlRemove()</a></h3>
<h3><a name='mxmlRemove'>mxmlRemove()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Remove a node from its parent.
@ -754,7 +759,7 @@ mxmlRemove(
<h4>Returns</h4>
<p>Nothing.</p>
<!-- NEW PAGE -->
<h3><a name='mxmlSaveAllocString'>mxmlSaveAllocString()</a></h3>
<h3><a name='mxmlSaveAllocString'>mxmlSaveAllocString()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Save an XML node tree to an allocated string.
@ -785,7 +790,7 @@ mxmlSaveAllocString(
<h4>Returns</h4>
<p>Allocated string or NULL</p>
<!-- NEW PAGE -->
<h3><a name='mxmlSaveFd'>mxmlSaveFd()</a></h3>
<h3><a name='mxmlSaveFd'>mxmlSaveFd()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Save an XML tree to a file descriptor.
@ -812,7 +817,7 @@ mxmlSaveFd(
<h4>Returns</h4>
<p>0 on success, -1 on error.</p>
<!-- NEW PAGE -->
<h3><a name='mxmlSaveFile'>mxmlSaveFile()</a></h3>
<h3><a name='mxmlSaveFile'>mxmlSaveFile()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Save an XML tree to a file.
@ -839,7 +844,7 @@ mxmlSaveFile(
<h4>Returns</h4>
<p>0 on success, -1 on error.</p>
<!-- NEW PAGE -->
<h3><a name='mxmlSaveString'>mxmlSaveString()</a></h3>
<h3><a name='mxmlSaveString'>mxmlSaveString()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Save an XML node tree to a string.
@ -872,12 +877,14 @@ mxmlSaveString(
<h4>Returns</h4>
<p>Size of string</p>
<!-- NEW PAGE -->
<h3><a name='mxmlSetCDATA'>mxmlSetCDATA()</a></h3>
<h3><a name='mxmlSetCDATA'>mxmlSetCDATA()</a> <span class='info'>&nbsp;Mini-XML 2.3&nbsp;</span></h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the element name of a CDATA node.
The node is not changed if it is not a CDATA element node.</p>
The node is not changed if it is not a CDATA element node.
</p>
<h4>Syntax</h4>
<pre>
int
@ -895,12 +902,14 @@ mxmlSetCDATA(
<h4>Returns</h4>
<p>0 on success, -1 on failure</p>
<!-- NEW PAGE -->
<h3><a name='mxmlSetCustom'>mxmlSetCustom()</a></h3>
<h3><a name='mxmlSetCustom'>mxmlSetCustom()</a> <span class='info'>&nbsp;Mini-XML 2.1&nbsp;</span></h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the data and destructor of a custom data node.
The node is not changed if it is not a custom node.</p>
The node is not changed if it is not a custom node.
</p>
<h4>Syntax</h4>
<pre>
int
@ -918,7 +927,7 @@ mxmlSetCustom(
<h4>Returns</h4>
<p>0 on success, -1 on failure</p>
<!-- NEW PAGE -->
<h3><a name='mxmlSetCustomHandlers'>mxmlSetCustomHandlers()</a></h3>
<h3><a name='mxmlSetCustomHandlers'>mxmlSetCustomHandlers()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the handling functions for custom data.
@ -945,7 +954,7 @@ mxmlSetCustomHandlers(
<h4>Returns</h4>
<p>Nothing.</p>
<!-- NEW PAGE -->
<h3><a name='mxmlSetElement'>mxmlSetElement()</a></h3>
<h3><a name='mxmlSetElement'>mxmlSetElement()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the name of an element node.
@ -968,7 +977,7 @@ mxmlSetElement(
<h4>Returns</h4>
<p>0 on success, -1 on failure</p>
<!-- NEW PAGE -->
<h3><a name='mxmlSetErrorCallback'>mxmlSetErrorCallback()</a></h3>
<h3><a name='mxmlSetErrorCallback'>mxmlSetErrorCallback()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the error message callback.</p>
@ -982,7 +991,7 @@ mxmlSetErrorCallback(void);
<h4>Returns</h4>
<p>Nothing.</p>
<!-- NEW PAGE -->
<h3><a name='mxmlSetInteger'>mxmlSetInteger()</a></h3>
<h3><a name='mxmlSetInteger'>mxmlSetInteger()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the value of an integer node.
@ -1005,7 +1014,7 @@ mxmlSetInteger(
<h4>Returns</h4>
<p>0 on success, -1 on failure</p>
<!-- NEW PAGE -->
<h3><a name='mxmlSetOpaque'>mxmlSetOpaque()</a></h3>
<h3><a name='mxmlSetOpaque'>mxmlSetOpaque()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the value of an opaque node.
@ -1028,7 +1037,7 @@ mxmlSetOpaque(
<h4>Returns</h4>
<p>0 on success, -1 on failure</p>
<!-- NEW PAGE -->
<h3><a name='mxmlSetReal'>mxmlSetReal()</a></h3>
<h3><a name='mxmlSetReal'>mxmlSetReal()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the value of a real number node.
@ -1051,7 +1060,7 @@ mxmlSetReal(
<h4>Returns</h4>
<p>0 on success, -1 on failure</p>
<!-- NEW PAGE -->
<h3><a name='mxmlSetText'>mxmlSetText()</a></h3>
<h3><a name='mxmlSetText'>mxmlSetText()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the value of a text node.
@ -1076,7 +1085,7 @@ mxmlSetText(
<h4>Returns</h4>
<p>0 on success, -1 on failure</p>
<!-- NEW PAGE -->
<h3><a name='mxmlSetTextf'>mxmlSetTextf()</a></h3>
<h3><a name='mxmlSetTextf'>mxmlSetTextf()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the value of a text node to a formatted string.
@ -1103,7 +1112,7 @@ mxmlSetTextf(
<h4>Returns</h4>
<p>0 on success, -1 on failure</p>
<!-- NEW PAGE -->
<h3><a name='mxmlWalkNext'>mxmlWalkNext()</a></h3>
<h3><a name='mxmlWalkNext'>mxmlWalkNext()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Walk to the next logical node in the tree.
@ -1130,7 +1139,7 @@ mxmlWalkNext(
<h4>Returns</h4>
<p>Next node or NULL</p>
<!-- NEW PAGE -->
<h3><a name='mxmlWalkPrev'>mxmlWalkPrev()</a></h3>
<h3><a name='mxmlWalkPrev'>mxmlWalkPrev()</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Walk to the previous logical node in the tree.
@ -1159,15 +1168,15 @@ mxmlWalkPrev(
<!-- NEW PAGE -->
<h2><a name='_structures'>Structures</a></h2>
<ul>
<li><a href='#mxml_attr_s'><tt>mxml_attr_s</tt></a></li>
<li><a href='#mxml_custom_s'><tt>mxml_custom_s</tt></a></li>
<li><a href='#mxml_index_s'><tt>mxml_index_s</tt></a></li>
<li><a href='#mxml_node_s'><tt>mxml_node_s</tt></a></li>
<li><a href='#mxml_text_s'><tt>mxml_text_s</tt></a></li>
<li><a href='#mxml_value_s'><tt>mxml_value_s</tt></a></li>
<li><a href='#mxml_attr_s'><tt>mxml_attr_s</tt></a> </li>
<li><a href='#mxml_custom_s'><tt>mxml_custom_s</tt></a> <span class='info'>&nbsp;Mini-XML 2.1&nbsp;</span></li>
<li><a href='#mxml_element_s'><tt>mxml_element_s</tt></a> </li>
<li><a href='#mxml_index_s'><tt>mxml_index_s</tt></a> </li>
<li><a href='#mxml_node_s'><tt>mxml_node_s</tt></a> </li>
<li><a href='#mxml_text_s'><tt>mxml_text_s</tt></a> </li>
</ul>
<!-- NEW PAGE -->
<h3><a name='mxml_attr_s'>mxml_attr_s</a></h3>
<h3><a name='mxml_attr_s'>mxml_attr_s</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML element attribute value.</p>
@ -1183,14 +1192,14 @@ struct mxml_attr_s
<p class='table'><table align='center' border='1' width='80%'>
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>name</tt></td><td>Attribute name</td></tr>
<tr><td><tt>value</tt></td><td>Attribute value</td></tr>
<tr><td><tt>name</tt> </td><td>Attribute name</td></tr>
<tr><td><tt>value</tt> </td><td>Attribute value</td></tr>
</tbody></table></p>
<!-- NEW PAGE -->
<h3><a name='mxml_custom_s'>mxml_custom_s</a></h3>
<h3><a name='mxml_custom_s'>mxml_custom_s</a> <span class='info'>&nbsp;Mini-XML 2.1&nbsp;</span></h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML custom value.</p>
<p>An XML custom value. </p>
<h4>Definition</h4>
<pre>
struct mxml_custom_s
@ -1202,10 +1211,32 @@ struct mxml_custom_s
<p class='table'><table align='center' border='1' width='80%'>
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>data</tt></td><td>Pointer to (allocated) custom data</td></tr>
<tr><td><tt>data</tt> </td><td>Pointer to (allocated) custom data</td></tr>
</tbody></table></p>
<!-- NEW PAGE -->
<h3><a name='mxml_index_s'>mxml_index_s</a></h3>
<h3><a name='mxml_element_s'>mxml_element_s</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML element value.</p>
<h4>Definition</h4>
<pre>
struct mxml_element_s
{
<a href='#mxml_attr_t'>mxml_attr_t</a> * attrs;
char * name;
int num_attrs;
};
</pre>
<h4>Members</h4>
<p class='table'><table align='center' border='1' width='80%'>
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>attrs</tt> </td><td>Attributes</td></tr>
<tr><td><tt>name</tt> </td><td>Name of element</td></tr>
<tr><td><tt>num_attrs</tt> </td><td>Number of attributes</td></tr>
</tbody></table></p>
<!-- NEW PAGE -->
<h3><a name='mxml_index_s'>mxml_index_s</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML node index.</p>
@ -1224,14 +1255,14 @@ struct mxml_index_s
<p class='table'><table align='center' border='1' width='80%'>
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>alloc_nodes</tt></td><td>Allocated nodes in index</td></tr>
<tr><td><tt>attr</tt></td><td>Attribute used for indexing or NULL</td></tr>
<tr><td><tt>cur_node</tt></td><td>Current node</td></tr>
<tr><td><tt>nodes</tt></td><td>Node array</td></tr>
<tr><td><tt>num_nodes</tt></td><td>Number of nodes in index</td></tr>
<tr><td><tt>alloc_nodes</tt> </td><td>Allocated nodes in index</td></tr>
<tr><td><tt>attr</tt> </td><td>Attribute used for indexing or NULL</td></tr>
<tr><td><tt>cur_node</tt> </td><td>Current node</td></tr>
<tr><td><tt>nodes</tt> </td><td>Node array</td></tr>
<tr><td><tt>num_nodes</tt> </td><td>Number of nodes in index</td></tr>
</tbody></table></p>
<!-- NEW PAGE -->
<h3><a name='mxml_node_s'>mxml_node_s</a></h3>
<h3><a name='mxml_node_s'>mxml_node_s</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML node.</p>
@ -1252,16 +1283,16 @@ struct mxml_node_s
<p class='table'><table align='center' border='1' width='80%'>
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>child</tt></td><td>First child node</td></tr>
<tr><td><tt>last_child</tt></td><td>Last child node</td></tr>
<tr><td><tt>next</tt></td><td>Next node under same parent</td></tr>
<tr><td><tt>parent</tt></td><td>Parent node</td></tr>
<tr><td><tt>prev</tt></td><td>Previous node under same parent</td></tr>
<tr><td><tt>type</tt></td><td>Node type</td></tr>
<tr><td><tt>value</tt></td><td>Node value</td></tr>
<tr><td><tt>child</tt> </td><td>First child node</td></tr>
<tr><td><tt>last_child</tt> </td><td>Last child node</td></tr>
<tr><td><tt>next</tt> </td><td>Next node under same parent</td></tr>
<tr><td><tt>parent</tt> </td><td>Parent node</td></tr>
<tr><td><tt>prev</tt> </td><td>Previous node under same parent</td></tr>
<tr><td><tt>type</tt> </td><td>Node type</td></tr>
<tr><td><tt>value</tt> </td><td>Node value</td></tr>
</tbody></table></p>
<!-- NEW PAGE -->
<h3><a name='mxml_text_s'>mxml_text_s</a></h3>
<h3><a name='mxml_text_s'>mxml_text_s</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML text value.</p>
@ -1277,46 +1308,24 @@ struct mxml_text_s
<p class='table'><table align='center' border='1' width='80%'>
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>string</tt></td><td>Fragment string</td></tr>
<tr><td><tt>whitespace</tt></td><td>Leading whitespace?</td></tr>
</tbody></table></p>
<!-- NEW PAGE -->
<h3><a name='mxml_value_s'>mxml_value_s</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML element value.</p>
<h4>Definition</h4>
<pre>
struct mxml_value_s
{
<a href='#mxml_attr_t'>mxml_attr_t</a> * attrs;
char * name;
int num_attrs;
};
</pre>
<h4>Members</h4>
<p class='table'><table align='center' border='1' width='80%'>
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>attrs</tt></td><td>Attributes</td></tr>
<tr><td><tt>name</tt></td><td>Name of element</td></tr>
<tr><td><tt>num_attrs</tt></td><td>Number of attributes</td></tr>
<tr><td><tt>string</tt> </td><td>Fragment string</td></tr>
<tr><td><tt>whitespace</tt> </td><td>Leading whitespace?</td></tr>
</tbody></table></p>
<!-- NEW PAGE -->
<h2><a name='_types'>Types</a></h2>
<ul>
<li><a href='#mxml_attr_t'><tt>mxml_attr_t</tt></a></li>
<li><a href='#mxml_custom_load_cb_t'><tt>mxml_custom_load_cb_t</tt></a></li>
<li><a href='#mxml_custom_save_cb_t'><tt>mxml_custom_save_cb_t</tt></a></li>
<li><a href='#mxml_custom_t'><tt>mxml_custom_t</tt></a></li>
<li><a href='#mxml_element_t'><tt>mxml_element_t</tt></a></li>
<li><a href='#mxml_index_t'><tt>mxml_index_t</tt></a></li>
<li><a href='#mxml_node_t'><tt>mxml_node_t</tt></a></li>
<li><a href='#mxml_text_t'><tt>mxml_text_t</tt></a></li>
<li><a href='#mxml_value_t'><tt>mxml_value_t</tt></a></li>
<li><a href='#mxml_attr_t'><tt>mxml_attr_t</tt></a> </li>
<li><a href='#mxml_custom_load_cb_t'><tt>mxml_custom_load_cb_t</tt></a> </li>
<li><a href='#mxml_custom_save_cb_t'><tt>mxml_custom_save_cb_t</tt></a> </li>
<li><a href='#mxml_custom_t'><tt>mxml_custom_t</tt></a> <span class='info'>&nbsp;Mini-XML 2.1&nbsp;</span></li>
<li><a href='#mxml_element_t'><tt>mxml_element_t</tt></a> </li>
<li><a href='#mxml_index_t'><tt>mxml_index_t</tt></a> </li>
<li><a href='#mxml_node_t'><tt>mxml_node_t</tt></a> </li>
<li><a href='#mxml_text_t'><tt>mxml_text_t</tt></a> </li>
<li><a href='#mxml_value_t'><tt>mxml_value_t</tt></a> </li>
</ul>
<!-- NEW PAGE -->
<h3><a name='mxml_attr_t'>mxml_attr_t</a></h3>
<h3><a name='mxml_attr_t'>mxml_attr_t</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML element attribute value.</p>
@ -1325,7 +1334,7 @@ struct mxml_value_s
typedef struct <a href='#mxml_attr_s'>mxml_attr_s</a> mxml_attr_t;
</pre>
<!-- NEW PAGE -->
<h3><a name='mxml_custom_load_cb_t'>mxml_custom_load_cb_t</a></h3>
<h3><a name='mxml_custom_load_cb_t'>mxml_custom_load_cb_t</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Custom data load callback function</p>
@ -1334,7 +1343,7 @@ typedef struct <a href='#mxml_attr_s'>mxml_attr_s</a> mxml_attr_t;
typedef int (*mxml_custom_load_cb_t)(<a href='#mxml_node_t'>mxml_node_t</a> *, const char *);
</pre>
<!-- NEW PAGE -->
<h3><a name='mxml_custom_save_cb_t'>mxml_custom_save_cb_t</a></h3>
<h3><a name='mxml_custom_save_cb_t'>mxml_custom_save_cb_t</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>Custom data save callback function</p>
@ -1343,25 +1352,25 @@ typedef int (*mxml_custom_load_cb_t)(<a href='#mxml_node_t'>mxml_node_t</a> *, c
typedef char * (*mxml_custom_save_cb_t)(<a href='#mxml_node_t'>mxml_node_t</a> *);
</pre>
<!-- NEW PAGE -->
<h3><a name='mxml_custom_t'>mxml_custom_t</a></h3>
<h3><a name='mxml_custom_t'>mxml_custom_t</a> <span class='info'>&nbsp;Mini-XML 2.1&nbsp;</span></h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML custom value.</p>
<p>An XML custom value. </p>
<h4>Definition</h4>
<pre>
typedef struct <a href='#mxml_custom_s'>mxml_custom_s</a> mxml_custom_t;
</pre>
<!-- NEW PAGE -->
<h3><a name='mxml_element_t'>mxml_element_t</a></h3>
<h3><a name='mxml_element_t'>mxml_element_t</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML element value.</p>
<h4>Definition</h4>
<pre>
typedef struct <a href='#mxml_value_s'>mxml_value_s</a> mxml_element_t;
typedef struct <a href='#mxml_element_s'>mxml_element_s</a> mxml_element_t;
</pre>
<!-- NEW PAGE -->
<h3><a name='mxml_index_t'>mxml_index_t</a></h3>
<h3><a name='mxml_index_t'>mxml_index_t</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML node index.</p>
@ -1370,7 +1379,7 @@ typedef struct <a href='#mxml_value_s'>mxml_value_s</a> mxml_element_t;
typedef struct <a href='#mxml_index_s'>mxml_index_s</a> mxml_index_t;
</pre>
<!-- NEW PAGE -->
<h3><a name='mxml_node_t'>mxml_node_t</a></h3>
<h3><a name='mxml_node_t'>mxml_node_t</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML node.</p>
@ -1379,7 +1388,7 @@ typedef struct <a href='#mxml_index_s'>mxml_index_s</a> mxml_index_t;
typedef struct <a href='#mxml_node_s'>mxml_node_s</a> mxml_node_t;
</pre>
<!-- NEW PAGE -->
<h3><a name='mxml_text_t'>mxml_text_t</a></h3>
<h3><a name='mxml_text_t'>mxml_text_t</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML text value.</p>
@ -1388,7 +1397,7 @@ typedef struct <a href='#mxml_node_s'>mxml_node_s</a> mxml_node_t;
typedef struct <a href='#mxml_text_s'>mxml_text_s</a> mxml_text_t;
</pre>
<!-- NEW PAGE -->
<h3><a name='mxml_value_t'>mxml_value_t</a></h3>
<h3><a name='mxml_value_t'>mxml_value_t</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML node value.</p>
@ -1399,10 +1408,10 @@ typedef union <a href='#mxml_value_u'>mxml_value_u</a> mxml_value_t;
<!-- NEW PAGE -->
<h2><a name='_unions'>Unions</a></h2>
<ul>
<li><a href='#mxml_value_u'><tt>mxml_value_u</tt></a></li>
<li><a href='#mxml_value_u'><tt>mxml_value_u</tt></a> </li>
</ul>
<!-- NEW PAGE -->
<h3><a name='mxml_value_u'>mxml_value_u</a></h3>
<h3><a name='mxml_value_u'>mxml_value_u</a> </h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML node value.</p>
@ -1422,12 +1431,12 @@ union mxml_value_u
<p class='table'><table align='center' border='1' width='80%'>
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>custom</tt></td><td>Custom data</td></tr>
<tr><td><tt>element</tt></td><td>Element</td></tr>
<tr><td><tt>integer</tt></td><td>Integer number</td></tr>
<tr><td><tt>opaque</tt></td><td>Opaque string</td></tr>
<tr><td><tt>real</tt></td><td>Real number</td></tr>
<tr><td><tt>text</tt></td><td>Text fragment</td></tr>
<tr><td><tt>custom</tt> <span class='info'>&nbsp;Mini-XML 2.1&nbsp;</span></td><td>Custom data </td></tr>
<tr><td><tt>element</tt> </td><td>Element</td></tr>
<tr><td><tt>integer</tt> </td><td>Integer number</td></tr>
<tr><td><tt>opaque</tt> </td><td>Opaque string</td></tr>
<tr><td><tt>real</tt> </td><td>Real number</td></tr>
<tr><td><tt>text</tt> </td><td>Text fragment</td></tr>
</tbody></table></p>
</body>
</html>

View File

@ -3,10 +3,13 @@
<h1 align='right'><a name='RELNOTES'>B - Release Notes</a></h1>
<h2>Changes in Mini-XML 2.2.3</h2>
<h2>Changes in Mini-XML 2.3</h2>
<ul>
<li>The mxmldoc program now supports "@since version@"
and "@deprecated@" comments.</li>
<li>Fixed function and enumeraion type bugs in
mxmldoc.</li>

View File

@ -19,6 +19,8 @@
*
* mxmlAdd() - Add a node to a tree.
* mxmlDelete() - Delete a node and all of its children.
* mxmlNewCDATA() - Create a new CDATA node.
* mxmlNewCustom() - Create a new custom data node.
* mxmlNewElement() - Create a new element node.
* mxmlNewInteger() - Create a new integer node.
* mxmlNewOpaque() - Create a new opaque string.
@ -280,6 +282,8 @@ mxmlDelete(mxml_node_t *node) /* I - Node to delete */
* list. The constant MXML_NO_PARENT can be used to specify that the new
* CDATA node has no parent. The data string must be nul-terminated and
* is copied into the new node. CDATA nodes use the MXML_ELEMENT type.
*
* @since Mini-XML 2.3@
*/
mxml_node_t * /* O - New node */
@ -306,7 +310,7 @@ mxmlNewCDATA(mxml_node_t *parent, /* I - Parent node or MXML_NO_PARENT */
*/
if ((node = mxml_new(parent, MXML_ELEMENT)) != NULL)
node->value.element.name = mxml_strdupf("![CDATA[%s]]", data);
node->value.element.name = _mxml_strdupf("![CDATA[%s]]", data);
return (node);
}
@ -319,6 +323,8 @@ mxmlNewCDATA(mxml_node_t *parent, /* I - Parent node or MXML_NO_PARENT */
* list. The constant MXML_NO_PARENT can be used to specify that the new
* element node has no parent. NULL can be passed when the data in the
* node is not dynamically allocated or is separately managed.
*
* @since Mini-XML 2.1@
*/
mxml_node_t * /* O - New node */
@ -571,7 +577,7 @@ mxmlNewTextf(mxml_node_t *parent, /* I - Parent node or MXML_NO_PARENT */
va_start(ap, format);
node->value.text.whitespace = whitespace;
node->value.text.string = mxml_vstrdupf(format, ap);
node->value.text.string = _mxml_vstrdupf(format, ap);
va_end(ap);
}

View File

@ -39,6 +39,8 @@
* 'mxmlSetCustom()' - Set the data and destructor of a custom data node.
*
* The node is not changed if it is not a custom node.
*
* @since Mini-XML 2.1@
*/
int /* O - 0 on success, -1 on failure */
@ -72,6 +74,8 @@ mxmlSetCustom(mxml_node_t *node, /* I - Node to set */
* 'mxmlSetCDATA()' - Set the element name of a CDATA node.
*
* The node is not changed if it is not a CDATA element node.
*
* @since Mini-XML 2.3@
*/
int /* O - 0 on success, -1 on failure */
@ -93,7 +97,7 @@ mxmlSetCDATA(mxml_node_t *node, /* I - Node to set */
if (node->value.element.name)
free(node->value.element.name);
node->value.element.name = mxml_strdupf("![CDATA[%s]]", data);
node->value.element.name = _mxml_strdupf("![CDATA[%s]]", data);
return (0);
}
@ -277,7 +281,7 @@ mxmlSetTextf(mxml_node_t *node, /* I - Node to set */
va_start(ap, format);
node->value.text.whitespace = whitespace;
node->value.text.string = mxml_strdupf(format, ap);
node->value.text.string = _mxml_strdupf(format, ap);
va_end(ap);

View File

@ -17,10 +17,10 @@
*
* Contents:
*
* mxml_strdup() - Duplicate a string.
* mxml_strdupf() - Format and duplicate a string.
* mxml_vstrdupf() - Format and duplicate a string.
* mxml_vsnprintf() - Format a string into a fixed size buffer.
* _mxml_strdup() - Duplicate a string.
* _mxml_strdupf() - Format and duplicate a string.
* _mxml_vstrdupf() - Format and duplicate a string.
* _mxml_vsnprintf() - Format a string into a fixed size buffer.
*/
/*
@ -31,12 +31,12 @@
/*
* 'mxml_strdup()' - Duplicate a string.
* '_mxml_strdup()' - Duplicate a string.
*/
#ifndef HAVE_STRDUP
char * /* O - New string pointer */
mxml_strdup(const char *s) /* I - String to duplicate */
_mxml_strdup(const char *s) /* I - String to duplicate */
{
char *t; /* New string pointer */
@ -53,12 +53,12 @@ mxml_strdup(const char *s) /* I - String to duplicate */
/*
* 'mxml_strdupf()' - Format and duplicate a string.
* '_mxml_strdupf()' - Format and duplicate a string.
*/
char * /* O - New string pointer */
mxml_strdupf(const char *format, /* I - Printf-style format string */
...) /* I - Additional arguments as needed */
_mxml_strdupf(const char *format, /* I - Printf-style format string */
...) /* I - Additional arguments as needed */
{
va_list ap; /* Pointer to additional arguments */
char *s; /* Pointer to formatted string */
@ -70,7 +70,7 @@ mxml_strdupf(const char *format, /* I - Printf-style format string */
*/
va_start(ap, format);
s = mxml_vstrdupf(format, ap);
s = _mxml_vstrdupf(format, ap);
va_end(ap);
return (s);
@ -78,12 +78,12 @@ mxml_strdupf(const char *format, /* I - Printf-style format string */
/*
* 'mxml_vstrdupf()' - Format and duplicate a string.
* '_mxml_vstrdupf()' - Format and duplicate a string.
*/
char * /* O - New string pointer */
mxml_vstrdupf(const char *format, /* I - Printf-style format string */
va_list ap) /* I - Pointer to additional arguments */
_mxml_vstrdupf(const char *format, /* I - Printf-style format string */
va_list ap) /* I - Pointer to additional arguments */
{
int bytes; /* Number of bytes required */
char *buffer, /* String buffer */
@ -124,14 +124,14 @@ mxml_vstrdupf(const char *format, /* I - Printf-style format string */
#ifndef HAVE_VSNPRINTF
/*
* 'mxml_vsnprintf()' - Format a string into a fixed size buffer.
* '_mxml_vsnprintf()' - Format a string into a fixed size buffer.
*/
int /* O - Number of bytes formatted */
mxml_vsnprintf(char *buffer, /* O - Output buffer */
size_t bufsize, /* O - Size of output buffer */
const char *format, /* I - Printf-style format string */
va_list ap) /* I - Pointer to additional arguments */
_mxml_vsnprintf(char *buffer, /* O - Output buffer */
size_t bufsize, /* O - Size of output buffer */
const char *format, /* I - Printf-style format string */
va_list ap) /* I - Pointer to additional arguments */
{
char *bufptr, /* Pointer to position in buffer */
*bufend, /* Pointer to end of buffer */
@ -180,7 +180,10 @@ mxml_vsnprintf(char *buffer, /* O - Output buffer */
if (*format == '*')
{
// Get width from argument...
/*
* Get width from argument...
*/
format ++;
width = va_arg(ap, int);
@ -209,7 +212,10 @@ mxml_vsnprintf(char *buffer, /* O - Output buffer */
if (*format == '*')
{
// Get precision from argument...
/*
* Get precision from argument...
*/
format ++;
prec = va_arg(ap, int);

12
mxml.h
View File

@ -74,13 +74,13 @@
typedef enum mxml_type_e /**** The XML node type. ****/
{
MXML_IGNORE = -1, /* Ignore/throw away node */
MXML_IGNORE = -1, /* Ignore/throw away node @since Mini-XML 2.3@ */
MXML_ELEMENT, /* XML element with attributes */
MXML_INTEGER, /* Integer value */
MXML_OPAQUE, /* Opaque string */
MXML_REAL, /* Real value */
MXML_TEXT, /* Text fragment */
MXML_CUSTOM /* Custom data */
MXML_CUSTOM /* Custom data @since Mini-XML 2.1@ */
} mxml_type_t;
typedef struct mxml_attr_s /**** An XML element attribute value. ****/
@ -89,7 +89,7 @@ typedef struct mxml_attr_s /**** An XML element attribute value. ****/
char *value; /* Attribute value */
} mxml_attr_t;
typedef struct mxml_value_s /**** An XML element value. ****/
typedef struct mxml_element_s /**** An XML element value. ****/
{
char *name; /* Name of element */
int num_attrs; /* Number of attributes */
@ -102,7 +102,7 @@ typedef struct mxml_text_s /**** An XML text value. ****/
char *string; /* Fragment string */
} mxml_text_t;
typedef struct mxml_custom_s /**** An XML custom value. ****/
typedef struct mxml_custom_s /**** An XML custom value. @since Mini-XML 2.1@ ****/
{
void *data; /* Pointer to (allocated) custom data */
void (*destroy)(void *);
@ -116,7 +116,7 @@ typedef union mxml_value_u /**** An XML node value. ****/
char *opaque; /* Opaque string */
double real; /* Real number */
mxml_text_t text; /* Text fragment */
mxml_custom_t custom; /* Custom data */
mxml_custom_t custom; /* Custom data @since Mini-XML 2.1@ */
} mxml_value_t;
typedef struct mxml_node_s /**** An XML node. ****/
@ -235,7 +235,7 @@ extern mxml_node_t *mxmlWalkPrev(mxml_node_t *node, mxml_node_t *top,
/*
* Private functions...
* Semi-private functions...
*/
extern void mxml_error(const char *format, ...);

View File

@ -325,7 +325,9 @@ child nodes of the specified type.</description>
The new CDATA node is added to the end of the specified parent's child
list. The constant MXML_NO_PARENT can be used to specify that the new
CDATA node has no parent. The data string must be nul-terminated and
is copied into the new node. CDATA nodes use the MXML_ELEMENT type.</description>
is copied into the new node. CDATA nodes use the MXML_ELEMENT type.
@since Mini-XML 2.3@</description>
<argument name="parent" direction="I">
<type>mxml_node_t *</type>
<description>Parent node or MXML_NO_PARENT</description>
@ -345,7 +347,9 @@ is copied into the new node. CDATA nodes use the MXML_ELEMENT type.</description
The new custom node is added to the end of the specified parent's child
list. The constant MXML_NO_PARENT can be used to specify that the new
element node has no parent. NULL can be passed when the data in the
node is not dynamically allocated or is separately managed.</description>
node is not dynamically allocated or is separately managed.
@since Mini-XML 2.1@</description>
<argument name="parent" direction="I">
<type>mxml_node_t *</type>
<description>Parent node or MXML_NO_PARENT</description>
@ -596,7 +600,9 @@ element tags.</description>
</returnvalue>
<description>Set the element name of a CDATA node.
The node is not changed if it is not a CDATA element node.</description>
The node is not changed if it is not a CDATA element node.
@since Mini-XML 2.3@</description>
<argument name="node" direction="I">
<type>mxml_node_t *</type>
<description>Node to set</description>
@ -613,7 +619,9 @@ The node is not changed if it is not a CDATA element node.</description>
</returnvalue>
<description>Set the data and destructor of a custom data node.
The node is not changed if it is not a custom node.</description>
The node is not changed if it is not a custom node.
@since Mini-XML 2.1@</description>
<argument name="node" direction="I">
<type>mxml_node_t *</type>
<description>Node to set</description>
@ -822,7 +830,7 @@ the walk to the node's children.</description>
<description>Custom data load callback function</description>
</typedef>
<struct name="mxml_custom_s">
<description>An XML custom value.</description>
<description>An XML custom value. @since Mini-XML 2.1@</description>
<variable name="data">
<type>void *</type>
<description>Pointer to (allocated) custom data</description>
@ -836,10 +844,25 @@ the walk to the node's children.</description>
</typedef>
<typedef name="mxml_custom_t">
<type>struct mxml_custom_s</type>
<description>An XML custom value.</description>
<description>An XML custom value. @since Mini-XML 2.1@</description>
</typedef>
<struct name="mxml_element_s">
<description>An XML element value.</description>
<variable name="attrs">
<type>mxml_attr_t *</type>
<description>Attributes</description>
</variable>
<variable name="name">
<type>char *</type>
<description>Name of element</description>
</variable>
<variable name="num_attrs">
<type>int</type>
<description>Number of attributes</description>
</variable>
</struct>
<typedef name="mxml_element_t">
<type>struct mxml_value_s</type>
<type>struct mxml_element_s</type>
<description>An XML element value.</description>
</typedef>
<struct name="mxml_index_s">
@ -922,13 +945,13 @@ the walk to the node's children.</description>
<enumeration name="mxml_type_e">
<description>The XML node type.</description>
<constant name="MXML_CUSTOM">
<description>Custom data</description>
<description>Custom data @since Mini-XML 2.1@</description>
</constant>
<constant name="MXML_ELEMENT">
<description>XML element with attributes</description>
</constant>
<constant name="MXML_IGNORE">
<description>Ignore/throw away node</description>
<description>Ignore/throw away node @since Mini-XML 2.3@</description>
</constant>
<constant name="MXML_INTEGER">
<description>Integer value</description>
@ -943,21 +966,6 @@ the walk to the node's children.</description>
<description>Text fragment</description>
</constant>
</enumeration>
<struct name="mxml_value_s">
<description>An XML element value.</description>
<variable name="attrs">
<type>mxml_attr_t *</type>
<description>Attributes</description>
</variable>
<variable name="name">
<type>char *</type>
<description>Name of element</description>
</variable>
<variable name="num_attrs">
<type>int</type>
<description>Number of attributes</description>
</variable>
</struct>
<typedef name="mxml_value_t">
<type>union mxml_value_u</type>
<description>An XML node value.</description>
@ -966,7 +974,7 @@ the walk to the node's children.</description>
<description>An XML node value.</description>
<variable name="custom">
<type>mxml_custom_t</type>
<description>Custom data</description>
<description>Custom data @since Mini-XML 2.1@</description>
</variable>
<variable name="element">
<type>mxml_element_t</type>

View File

@ -494,7 +494,7 @@ get_comment_info(
for (ptr = strchr(text, '@'); ptr; ptr = strchr(ptr, '@'))
{
if (!strncmp(ptr, "@deprecated@", 12))
return ("<span class='info'>DEPRECATED</span>");
return ("<span class='info'>&nbsp;DEPRECATED&nbsp;</span>");
else if (!strncmp(ptr, "@since ", 7))
{
strncpy(since, ptr + 7, sizeof(since) - 1);
@ -503,7 +503,7 @@ get_comment_info(
if ((ptr = strchr(since, '@')) != NULL)
*ptr = '\0';
snprintf(info, sizeof(info), "<span class='info'>%s</span>", since);
snprintf(info, sizeof(info), "<span class='info'>&nbsp;%s&nbsp;</span>", since);
return (info);
}
}
@ -2059,8 +2059,9 @@ write_description(
for (ptr = text; *ptr; ptr ++)
{
if (*ptr == '@' && !strncmp(ptr + 1, "deprecated@", 11) &&
!strncmp(ptr + 1, "since ", 6))
if (*ptr == '@' &&
(!strncmp(ptr + 1, "deprecated@", 11) ||
!strncmp(ptr + 1, "since ", 6)))
{
ptr ++;
while (*ptr && *ptr != '@')
@ -2162,7 +2163,8 @@ write_documentation(
"\th1, h2, h3, p { font-family: sans-serif; text-align: justify; }\n"
"\ttt, pre a:link, pre a:visited, tt a:link, tt a:visited { font-weight: bold; color: #7f0000; }\n"
"\tpre { font-weight: bold; color: #7f0000; margin-left: 2em; }\n"
"\tspan.info { font-weight: bold; padding: 2; color: #ffffff; background: #000000; float: right; }\n"
"\tspan.info { font-weight: bold; font-style: italic; color: #ffffff; background: #000000; }\n"
"\th3 span.info { float: right; }\n"
"\t--></style>\n"
"</head>\n"
"<body>\n", title);
@ -2222,7 +2224,9 @@ write_documentation(
MXML_NO_DESCEND))
{
name = mxmlElementGetAttr(scut, "name");
printf("\t<li><a href='#%s'><tt>%s</tt></a></li>\n", name, name);
printf("\t<li><a href='#%s'><tt>%s</tt></a> %s</li>\n", name, name,
get_comment_info(mxmlFindElement(scut, scut, "description",
NULL, NULL, MXML_DESCEND_FIRST)));
}
puts("</ul>");
@ -2237,8 +2241,8 @@ write_documentation(
description = mxmlFindElement(scut, scut, "description", NULL,
NULL, MXML_DESCEND_FIRST);
printf("<!-- NEW PAGE -->\n"
"<h3>%s<a name='%s'>%s</a></h3>\n"
"<hr noshade/>\n", get_comment_info(description), cname, cname);
"<h3><a name='%s'>%s</a> %s</h3>\n"
"<hr noshade/>\n", cname, cname, get_comment_info(description));
if (description)
{
@ -2352,8 +2356,8 @@ write_documentation(
description = mxmlFindElement(arg, arg, "description", NULL,
NULL, MXML_DESCEND_FIRST);
printf("<tr><td>%s<tt>%s</tt></td><td>", get_comment_info(description),
mxmlElementGetAttr(arg, "name"));
printf("<tr><td><tt>%s</tt> %s</td><td>",
mxmlElementGetAttr(arg, "name"), get_comment_info(description));
write_description(description);
@ -2370,8 +2374,8 @@ write_documentation(
description = mxmlFindElement(function, function, "description", NULL,
NULL, MXML_DESCEND_FIRST);
printf("<tr><td>%s<tt><a name='%s.%s'>%s()</a></tt></td><td>",
get_comment_info(description), cname, name, name);
printf("<tr><td><tt><a name='%s.%s'>%s()</a></tt> %s</td><td>",
cname, name, name, get_comment_info(description));
write_description(description);
@ -2409,7 +2413,9 @@ write_documentation(
MXML_NO_DESCEND))
{
name = mxmlElementGetAttr(scut, "name");
printf("\t<li><a href='#%s'><tt>%s</tt></a></li>\n", name, name);
printf("\t<li><a href='#%s'><tt>%s</tt></a> %s</li>\n", name, name,
get_comment_info(mxmlFindElement(scut, scut, "description",
NULL, NULL, MXML_DESCEND_FIRST)));
}
puts("</ul>");
@ -2424,8 +2430,8 @@ write_documentation(
description = mxmlFindElement(scut, scut, "description", NULL,
NULL, MXML_DESCEND_FIRST);
printf("<!-- NEW PAGE -->\n"
"<h3>%s<a name='%s'>%s</a></h3>\n"
"<hr noshade/>\n", get_comment_info(description), name, name);
"<h3><a name='%s'>%s</a> %s</h3>\n"
"<hr noshade/>\n", name, name, get_comment_info(description));
if (description)
{
@ -2448,8 +2454,8 @@ write_documentation(
{
description = mxmlFindElement(arg, arg, "description", NULL,
NULL, MXML_DESCEND_FIRST);
printf("<tr><td>%s<tt>%s</tt></td><td>", get_comment_info(description),
mxmlElementGetAttr(arg, "name"));
printf("<tr><td><tt>%s</tt> %s</td><td>",
mxmlElementGetAttr(arg, "name"), get_comment_info(description));
write_description(description);
@ -2477,7 +2483,9 @@ write_documentation(
MXML_NO_DESCEND))
{
name = mxmlElementGetAttr(function, "name");
printf("\t<li><a href='#%s'><tt>%s()</tt></a></li>\n", name, name);
printf("\t<li><a href='#%s'><tt>%s()</tt></a> %s</li>\n", name, name,
get_comment_info(mxmlFindElement(function, function, "description",
NULL, NULL, MXML_DESCEND_FIRST)));
}
puts("</ul>");
@ -2492,8 +2500,8 @@ write_documentation(
description = mxmlFindElement(function, function, "description", NULL,
NULL, MXML_DESCEND_FIRST);
printf("<!-- NEW PAGE -->\n"
"<h3>%s<a name='%s'>%s()</a></h3>\n"
"<hr noshade/>\n", get_comment_info(description), name, name);
"<h3><a name='%s'>%s()</a> %s</h3>\n"
"<hr noshade/>\n", name, name, get_comment_info(description));
if (description)
{
@ -2603,7 +2611,9 @@ write_documentation(
MXML_NO_DESCEND))
{
name = mxmlElementGetAttr(scut, "name");
printf("\t<li><a href='#%s'><tt>%s</tt></a></li>\n", name, name);
printf("\t<li><a href='#%s'><tt>%s</tt></a> %s</li>\n", name, name,
get_comment_info(mxmlFindElement(scut, scut, "description",
NULL, NULL, MXML_DESCEND_FIRST)));
}
puts("</ul>");
@ -2618,8 +2628,8 @@ write_documentation(
description = mxmlFindElement(scut, scut, "description", NULL,
NULL, MXML_DESCEND_FIRST);
printf("<!-- NEW PAGE -->\n"
"<h3>%s<a name='%s'>%s</a></h3>\n"
"<hr noshade/>\n", get_comment_info(description), cname, cname);
"<h3><a name='%s'>%s</a> %s</h3>\n"
"<hr noshade/>\n", cname, cname, get_comment_info(description));
if (description)
{
@ -2711,8 +2721,8 @@ write_documentation(
{
description = mxmlFindElement(arg, arg, "description", NULL,
NULL, MXML_DESCEND_FIRST);
printf("<tr><td>%s<tt>%s</tt></td><td>", get_comment_info(description),
mxmlElementGetAttr(arg, "name"));
printf("<tr><td><tt>%s</tt> %s</td><td>",
mxmlElementGetAttr(arg, "name"), get_comment_info(description));
write_description(description);
@ -2729,8 +2739,8 @@ write_documentation(
description = mxmlFindElement(function, function, "description", NULL,
NULL, MXML_DESCEND_FIRST);
printf("<tr><td>%s<tt><a name='%s.%s'>%s()</a></tt></td><td>",
get_comment_info(description), cname, name, name);
printf("<tr><td><tt><a name='%s.%s'>%s()</a></tt> %s</td><td>",
cname, name, name, get_comment_info(description));
write_description(description);
@ -2768,7 +2778,9 @@ write_documentation(
MXML_NO_DESCEND))
{
name = mxmlElementGetAttr(scut, "name");
printf("\t<li><a href='#%s'><tt>%s</tt></a></li>\n", name, name);
printf("\t<li><a href='#%s'><tt>%s</tt></a> %s</li>\n", name, name,
get_comment_info(mxmlFindElement(scut, scut, "description",
NULL, NULL, MXML_DESCEND_FIRST)));
}
puts("</ul>");
@ -2783,8 +2795,8 @@ write_documentation(
description = mxmlFindElement(scut, scut, "description", NULL,
NULL, MXML_DESCEND_FIRST);
printf("<!-- NEW PAGE -->\n"
"<h3>%s<a name='%s'>%s</a></h3>\n"
"<hr noshade/>\n", get_comment_info(description), name, name);
"<h3><a name='%s'>%s</a> %s</h3>\n"
"<hr noshade/>\n", name, name, get_comment_info(description));
if (description)
{
@ -2890,7 +2902,9 @@ write_documentation(
MXML_NO_DESCEND))
{
name = mxmlElementGetAttr(scut, "name");
printf("\t<li><a href='#%s'><tt>%s</tt></a></li>\n", name, name);
printf("\t<li><a href='#%s'><tt>%s</tt></a> %s</li>\n", name, name,
get_comment_info(mxmlFindElement(scut, scut, "description",
NULL, NULL, MXML_DESCEND_FIRST)));
}
puts("</ul>");
@ -2905,8 +2919,8 @@ write_documentation(
description = mxmlFindElement(scut, scut, "description", NULL,
NULL, MXML_DESCEND_FIRST);
printf("<!-- NEW PAGE -->\n"
"<h3>%s<a name='%s'>%s</a></h3>\n"
"<hr noshade/>\n", get_comment_info(description), name, name);
"<h3><a name='%s'>%s</a> %s</h3>\n"
"<hr noshade/>\n", name, name, get_comment_info(description));
if (description)
{
@ -2945,8 +2959,8 @@ write_documentation(
{
description = mxmlFindElement(arg, arg, "description", NULL,
NULL, MXML_DESCEND_FIRST);
printf("<tr><td>%s<tt>%s</tt></td><td>", get_comment_info(description),
mxmlElementGetAttr(arg, "name"));
printf("<tr><td><tt>%s</tt> %s</td><td>",
mxmlElementGetAttr(arg, "name"), get_comment_info(description));
write_description(description);
@ -2974,7 +2988,9 @@ write_documentation(
MXML_NO_DESCEND))
{
name = mxmlElementGetAttr(arg, "name");
printf("\t<li><a href='#%s'><tt>%s</tt></a></li>\n", name, name);
printf("\t<li><a href='#%s'><tt>%s</tt></a> %s</li>\n", name, name,
get_comment_info(mxmlFindElement(arg, arg, "description",
NULL, NULL, MXML_DESCEND_FIRST)));
}
puts("</ul>");
@ -2989,8 +3005,8 @@ write_documentation(
description = mxmlFindElement(arg, arg, "description", NULL,
NULL, MXML_DESCEND_FIRST);
printf("<!-- NEW PAGE -->\n"
"<h3>%s<a name='%s'>%s</a></h3>\n"
"<hr noshade/>", get_comment_info(description), name, name);
"<h3><a name='%s'>%s</a> %s</h3>\n"
"<hr noshade/>", name, name, get_comment_info(description));
if (description)
{