mirror of
https://github.com/michaelrsweet/mxml.git
synced 2024-11-24 11:25:30 +00:00
Fix C++ class/struct handling.
Move and separate test files for mxmldoc.
This commit is contained in:
parent
711796b7cf
commit
c00d7f55a2
4
CHANGES
4
CHANGES
@ -1,4 +1,4 @@
|
||||
README - 04/29/2004
|
||||
README - 04/30/2004
|
||||
-------------------
|
||||
|
||||
CHANGES IN Mini-XML 2.0
|
||||
@ -9,6 +9,8 @@ CHANGES IN Mini-XML 2.0
|
||||
between the destination path and install path. This
|
||||
caused problems when building and installing with
|
||||
MingW.
|
||||
- The mxmldoc utility is now capable of documenting C++
|
||||
structures and classes.
|
||||
|
||||
|
||||
CHANGES IN Mini-XML 1.3
|
||||
|
@ -1,5 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
rm -f testfile.xml
|
||||
valgrind --logfile-fd=3 --leak-check=yes ./mxmldoc testfile.xml testfile.cxx >testfile.html 2>testfile.log 3>testfile.valgrind
|
||||
|
55
mxmldoc.c
55
mxmldoc.c
@ -1,6 +1,5 @@
|
||||
#define DEBUG 2
|
||||
/*
|
||||
* "$Id: mxmldoc.c,v 1.29 2004/04/30 03:40:05 mike Exp $"
|
||||
* "$Id: mxmldoc.c,v 1.30 2004/05/01 04:30:42 mike Exp $"
|
||||
*
|
||||
* Documentation generator using mini-XML, a small XML-like file parsing
|
||||
* library.
|
||||
@ -386,21 +385,22 @@ scan_file(const char *filename, /* I - Filename */
|
||||
* Initialize the finite state machine...
|
||||
*/
|
||||
|
||||
state = STATE_NONE;
|
||||
braces = 0;
|
||||
parens = 0;
|
||||
bufptr = buffer;
|
||||
state = STATE_NONE;
|
||||
braces = 0;
|
||||
parens = 0;
|
||||
bufptr = buffer;
|
||||
|
||||
comment = mxmlNewElement(MXML_NO_PARENT, "temp");
|
||||
constant = NULL;
|
||||
enumeration = NULL;
|
||||
function = NULL;
|
||||
variable = NULL;
|
||||
returnvalue = NULL;
|
||||
type = NULL;
|
||||
description = NULL;
|
||||
typedefnode = NULL;
|
||||
structclass = NULL;
|
||||
comment = mxmlNewElement(MXML_NO_PARENT, "temp");
|
||||
constant = NULL;
|
||||
enumeration = NULL;
|
||||
function = NULL;
|
||||
variable = NULL;
|
||||
returnvalue = NULL;
|
||||
type = NULL;
|
||||
description = NULL;
|
||||
typedefnode = NULL;
|
||||
structclass = NULL;
|
||||
fstructclass = NULL;
|
||||
|
||||
/*
|
||||
* Read until end-of-file...
|
||||
@ -474,6 +474,8 @@ scan_file(const char *filename, /* I - Filename */
|
||||
}
|
||||
else
|
||||
sort_node(tree, function);
|
||||
|
||||
function = NULL;
|
||||
}
|
||||
else if (type && type->child &&
|
||||
((!strcmp(type->child->value.text.string, "typedef") &&
|
||||
@ -713,6 +715,7 @@ scan_file(const char *filename, /* I - Filename */
|
||||
{
|
||||
mxmlDelete(function);
|
||||
function = NULL;
|
||||
variable = NULL;
|
||||
}
|
||||
|
||||
if (type)
|
||||
@ -1645,9 +1648,9 @@ write_documentation(mxml_node_t *doc) /* I - XML documentation */
|
||||
|
||||
if (arg)
|
||||
{
|
||||
if (arg->child->value.text.string)
|
||||
write_element(doc, mxmlFindElement(arg, arg, "type", NULL,
|
||||
NULL, MXML_DESCEND_FIRST));
|
||||
write_element(doc, mxmlFindElement(arg, arg, "type", NULL,
|
||||
NULL, MXML_DESCEND_FIRST));
|
||||
putchar(' ');
|
||||
}
|
||||
else if (strcmp(cname, name) && strcmp(cname, name + 1))
|
||||
fputs("void ", stdout);
|
||||
@ -1947,9 +1950,9 @@ write_documentation(mxml_node_t *doc) /* I - XML documentation */
|
||||
scut = mxmlFindElement(scut, doc, "struct", NULL, NULL,
|
||||
MXML_NO_DESCEND))
|
||||
{
|
||||
name = mxmlElementGetAttr(scut, "name");
|
||||
cname = mxmlElementGetAttr(scut, "name");
|
||||
puts("<!-- NEW PAGE -->");
|
||||
printf("<h3><a name='%s'>%s</a></h3>\n", name, name);
|
||||
printf("<h3><a name='%s'>%s</a></h3>\n", cname, cname);
|
||||
puts("<hr noshade/>");
|
||||
|
||||
description = mxmlFindElement(scut, scut, "description", NULL,
|
||||
@ -1965,7 +1968,7 @@ write_documentation(mxml_node_t *doc) /* I - XML documentation */
|
||||
puts("<h4>Definition</h4>");
|
||||
puts("<pre>");
|
||||
|
||||
printf("struct %s\n{\n", name);
|
||||
printf("struct %s\n{\n", cname);
|
||||
for (arg = mxmlFindElement(scut, scut, "variable", NULL, NULL,
|
||||
MXML_DESCEND_FIRST);
|
||||
arg;
|
||||
@ -1993,9 +1996,9 @@ write_documentation(mxml_node_t *doc) /* I - XML documentation */
|
||||
|
||||
if (arg)
|
||||
{
|
||||
if (arg->child->value.text.string)
|
||||
write_element(doc, mxmlFindElement(arg, arg, "type", NULL,
|
||||
NULL, MXML_DESCEND_FIRST));
|
||||
write_element(doc, mxmlFindElement(arg, arg, "type", NULL,
|
||||
NULL, MXML_DESCEND_FIRST));
|
||||
putchar(' ');
|
||||
}
|
||||
else if (strcmp(cname, name) && strcmp(cname, name + 1))
|
||||
fputs("void ", stdout);
|
||||
@ -2409,5 +2412,5 @@ ws_cb(mxml_node_t *node, /* I - Element node */
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: mxmldoc.c,v 1.29 2004/04/30 03:40:05 mike Exp $".
|
||||
* End of "$Id: mxmldoc.c,v 1.30 2004/05/01 04:30:42 mike Exp $".
|
||||
*/
|
||||
|
50
test/class.cxx
Normal file
50
test/class.cxx
Normal file
@ -0,0 +1,50 @@
|
||||
class foo_c // Foo class
|
||||
{
|
||||
float foo; /* Real number */
|
||||
int bar; /* Integer */
|
||||
|
||||
public:
|
||||
|
||||
foo_c(float f, int b);
|
||||
~foo_c();
|
||||
|
||||
// 'get_bar()' - Get the value of bar.
|
||||
int // O - Value of bar
|
||||
get_bar()
|
||||
{
|
||||
return (bar);
|
||||
}
|
||||
|
||||
// 'get_foo()' - Get the value of foo.
|
||||
float // O - Value of foo
|
||||
get_foo()
|
||||
{
|
||||
return (foo);
|
||||
}
|
||||
|
||||
// 'set_bar()' - Set the value of bar.
|
||||
void
|
||||
set_bar(int b) // I - Value of bar
|
||||
{
|
||||
bar = b;
|
||||
}
|
||||
|
||||
// 'set_foo()' - Set the value of foo.
|
||||
void
|
||||
set_foo(float f) // I - Value of foo
|
||||
{
|
||||
foo = f;
|
||||
}
|
||||
}
|
||||
|
||||
// 'foo_c::foo_c()' - Create a foo_c class.
|
||||
foo_c::foo_c(float f, int b)
|
||||
{
|
||||
foo = f;
|
||||
bar = b;
|
||||
}
|
||||
|
||||
// 'foo_c::~foo_c()' - Destroy a foo_c class.
|
||||
foo_c::~foo_c()
|
||||
{
|
||||
}
|
12
test/dotest.sh
Executable file
12
test/dotest.sh
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
|
||||
if test $# -gt 0; then
|
||||
files=$*
|
||||
else
|
||||
files=*.cxx
|
||||
fi
|
||||
|
||||
rm -f test.xml
|
||||
valgrind --logfile-fd=3 --leak-check=yes ../mxmldoc test.xml \
|
||||
$files >test.html 2>test.log 3>test.valgrind
|
||||
|
7
test/enum.cxx
Normal file
7
test/enum.cxx
Normal file
@ -0,0 +1,7 @@
|
||||
typedef enum foo_enum_e /* Sample enumeration type */
|
||||
{
|
||||
FOO_ONE, /* One fish */
|
||||
FOO_TWO, /* Two fish */
|
||||
FOO_RED, /* Red fish */
|
||||
FOO_BLUE /* Blue fish */
|
||||
} foo_enum_t;
|
37
test/function.cxx
Normal file
37
test/function.cxx
Normal file
@ -0,0 +1,37 @@
|
||||
/*
|
||||
* 'foo_void_function()' - Do foo with bar.
|
||||
*/
|
||||
|
||||
void
|
||||
foo_void_function(int one, /* I - Integer */
|
||||
float *two, /* O - Real number */
|
||||
const char *three) /* I - String */
|
||||
{
|
||||
if (one)
|
||||
{
|
||||
puts("Hello, World!");
|
||||
}
|
||||
else
|
||||
puts(three);
|
||||
|
||||
*two = 2.0f;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'foo_float_function()' - Do foo with bar.
|
||||
*/
|
||||
|
||||
float /* O - Real number */
|
||||
foo_float_function(int one, /* I - Integer */
|
||||
const char *two) /* I - String */
|
||||
{
|
||||
if (one)
|
||||
{
|
||||
puts("Hello, World!");
|
||||
}
|
||||
else
|
||||
puts(two);
|
||||
|
||||
return (2.0f);
|
||||
}
|
48
test/struct.cxx
Normal file
48
test/struct.cxx
Normal file
@ -0,0 +1,48 @@
|
||||
typedef struct foo_s /* Foo structure */
|
||||
{
|
||||
float foo; /* Real number */
|
||||
int bar; /* Integer */
|
||||
|
||||
foo_s(float f, int b);
|
||||
~foo_s();
|
||||
|
||||
// 'get_bar()' - Get the value of bar.
|
||||
int // O - Value of bar
|
||||
get_bar()
|
||||
{
|
||||
return (bar);
|
||||
}
|
||||
|
||||
// 'get_foo()' - Get the value of foo.
|
||||
float // O - Value of foo
|
||||
get_foo()
|
||||
{
|
||||
return (foo);
|
||||
}
|
||||
|
||||
// 'set_bar()' - Set the value of bar.
|
||||
void
|
||||
set_bar(int b) // I - Value of bar
|
||||
{
|
||||
bar = b;
|
||||
}
|
||||
|
||||
// 'set_foo()' - Set the value of foo.
|
||||
void
|
||||
set_foo(float f) // I - Value of foo
|
||||
{
|
||||
foo = f;
|
||||
}
|
||||
} foo_t;
|
||||
|
||||
// 'foo_s::foo_s()' - Create a foo_s structure.
|
||||
foo_s::foo_s(float f, int b)
|
||||
{
|
||||
foo = f;
|
||||
bar = b;
|
||||
}
|
||||
|
||||
// 'foo_s::~foo_s()' - Destroy a foo_s structure.
|
||||
foo_s::~foo_s()
|
||||
{
|
||||
}
|
171
testfile.cxx
171
testfile.cxx
@ -1,171 +0,0 @@
|
||||
//
|
||||
// "$Id: testfile.cxx,v 1.2 2004/04/29 20:48:52 mike Exp $"
|
||||
//
|
||||
// Mxmldoc test file for mini-XML, a small XML-like file parsing library.
|
||||
//
|
||||
// Copyright 2003-2004 by Michael Sweet.
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Library General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
|
||||
|
||||
typedef enum foo_enum_e /* Sample enumeration type */
|
||||
{
|
||||
FOO_ONE, /* One fish */
|
||||
FOO_TWO, /* Two fish */
|
||||
FOO_RED, /* Red fish */
|
||||
FOO_BLUE /* Blue fish */
|
||||
} foo_enum_t;
|
||||
|
||||
|
||||
/*
|
||||
* 'foo_void_function()' - Do foo with bar.
|
||||
*/
|
||||
|
||||
void
|
||||
foo_void_function(int one, /* I - Integer */
|
||||
float *two, /* O - Real number */
|
||||
const char *three) /* I - String */
|
||||
{
|
||||
if (one)
|
||||
{
|
||||
puts("Hello, World!");
|
||||
}
|
||||
else
|
||||
puts(three);
|
||||
|
||||
*two = 2.0f;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'foo_float_function()' - Do foo with bar.
|
||||
*/
|
||||
|
||||
float /* O - Real number */
|
||||
foo_float_function(int one, /* I - Integer */
|
||||
const char *two) /* I - String */
|
||||
{
|
||||
if (one)
|
||||
{
|
||||
puts("Hello, World!");
|
||||
}
|
||||
else
|
||||
puts(two);
|
||||
|
||||
return (2.0f);
|
||||
}
|
||||
|
||||
|
||||
typedef struct foo_s /* Foo structure */
|
||||
{
|
||||
float foo; /* Real number */
|
||||
int bar; /* Integer */
|
||||
|
||||
foo_s(float f, int b);
|
||||
~foo_s();
|
||||
|
||||
// 'get_bar()' - Get the value of bar.
|
||||
int // O - Value of bar
|
||||
get_bar()
|
||||
{
|
||||
return (bar);
|
||||
}
|
||||
|
||||
// 'get_foo()' - Get the value of foo.
|
||||
float // O - Value of foo
|
||||
get_foo()
|
||||
{
|
||||
return (foo);
|
||||
}
|
||||
|
||||
// 'set_bar()' - Set the value of bar.
|
||||
void
|
||||
set_bar(int b) // I - Value of bar
|
||||
{
|
||||
bar = b;
|
||||
}
|
||||
|
||||
// 'set_foo()' - Set the value of foo.
|
||||
void
|
||||
set_foo(float f) // I - Value of foo
|
||||
{
|
||||
foo = f;
|
||||
}
|
||||
} foo_t;
|
||||
|
||||
// 'foo_s::foo_s()' - Create a foo_s structure.
|
||||
foo_s::foo_s(float f, int b)
|
||||
{
|
||||
foo = f;
|
||||
bar = b;
|
||||
}
|
||||
|
||||
// 'foo_s::~foo_s()' - Destroy a foo_s structure.
|
||||
foo_s::~foo_s()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
class foo_c // Foo class
|
||||
{
|
||||
float foo; /* Real number */
|
||||
int bar; /* Integer */
|
||||
|
||||
public:
|
||||
|
||||
foo_c(float f, int b);
|
||||
~foo_c();
|
||||
|
||||
// 'get_bar()' - Get the value of bar.
|
||||
int // O - Value of bar
|
||||
get_bar()
|
||||
{
|
||||
return (bar);
|
||||
}
|
||||
|
||||
// 'get_foo()' - Get the value of foo.
|
||||
float // O - Value of foo
|
||||
get_foo()
|
||||
{
|
||||
return (foo);
|
||||
}
|
||||
|
||||
// 'set_bar()' - Set the value of bar.
|
||||
void
|
||||
set_bar(int b) // I - Value of bar
|
||||
{
|
||||
bar = b;
|
||||
}
|
||||
|
||||
// 'set_foo()' - Set the value of foo.
|
||||
void
|
||||
set_foo(float f) // I - Value of foo
|
||||
{
|
||||
foo = f;
|
||||
}
|
||||
}
|
||||
|
||||
// 'foo_c::foo_c()' - Create a foo_c class.
|
||||
foo_c::foo_c(float f, int b)
|
||||
{
|
||||
foo = f;
|
||||
bar = b;
|
||||
}
|
||||
|
||||
// 'foo_c::~foo_c()' - Destroy a foo_c class.
|
||||
foo_c::~foo_c()
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
// End of "$Id: testfile.cxx,v 1.2 2004/04/29 20:48:52 mike Exp $".
|
||||
//
|
Loading…
Reference in New Issue
Block a user