Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

193 lines
5.0 KiB

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "vtkParse.h"
/* print the parsed structures */
void vtkParseOutput(FILE *fp, FileInfo *data)
{
int i,closed,no_methods;
fprintf(fp,"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n");
fprintf(fp,"<!-- manual pages generated by vtkHTML -->\n\n");
fprintf(fp,"<HTML><HEADER>\n<TITLE>Documentation for %s</TITLE></HEADER>\n",
data->ClassName);
fprintf(fp,"<body bgcolor=\"#FFFFFF\">\n");
fprintf(fp,"<hr>\n");
if (data->NameComment)
{
fprintf(fp,"<p>%s</p>\n\n",data->NameComment);
}
else
{
fprintf(fp,"<p>%s - no description provided.</p>\n\n",data->ClassName);
}
fprintf(fp,"<hr>\n");
if (data->NumberOfSuperClasses > 0)
{
fprintf(fp,"<p>Super Class: <A HREF=\"%s.html\">%s</a></p>\n",
data->SuperClasses[0], data->SuperClasses[0]);
}
fprintf(fp,"<p>Description:</p>\n\n<blockquote>\n");
fprintf(fp," <p>%s</p>\n</blockquote>\n\n",
data->Description ? data->Description : "None provided.");
if (data->Caveats)
{
fprintf(fp,"<p>Caveats:</p>\n\n<blockquote>\n");
fprintf(fp," <p>%s</p>\n</blockquote>\n\n", data->Caveats);
}
if (data->SeeAlso)
{
char *dup, *tok;
fprintf(fp,"<p>See Also:</p>\n\n<blockquote>\n");
fprintf(fp," <p>");
/* change simple see also into html references */
dup = strdup(data->SeeAlso);
tok = strtok(dup," ");
while (tok)
{
if (!strncmp("vtk",tok,3))
{
fprintf(fp,"<a href=\"%s.html\">%s</a> ",tok, tok);
}
else
{
fprintf(fp,"%s ",tok);
}
tok = strtok(NULL," ");
}
fprintf(fp,"</p>\n</blockquote>\n\n");
free(dup);
}
fprintf(fp,"<p>&nbsp;</p>\n\n");
fprintf(fp,"<hr>\n");
no_methods = 1;
fprintf(fp,"<p>Public Methods:</p>\n\n<ul>\n\n");
for (i = 0; i < data->NumberOfFunctions; i++)
{
if (data->Functions[i].Name && data->Functions[i].IsPublic)
{
no_methods = 0;
if (data->Functions[i].Comment)
{
fprintf(fp," <li><a href=\"#method%i\">%s</a></li>", i,
data->Functions[i].Signature);
}
else
{
fprintf(fp," <li>%s</li>", data->Functions[i].Signature);
}
}
}
if (no_methods)
{
fprintf(fp," <li>%s</li>","[no public methods]");
}
fprintf(fp,"</ul>\n\n");
fprintf(fp,"<p>&nbsp;</p>\n\n");
no_methods = 1;
fprintf(fp,"<p>Protected Methods:</p>\n\n<ul>\n\n");
for (i = 0; i < data->NumberOfFunctions; i++)
{
if (data->Functions[i].Name && data->Functions[i].IsProtected)
{
no_methods = 0;
if (data->Functions[i].Comment)
{
fprintf(fp," <li><a href=\"#method%i\">%s</a></li>", i,
data->Functions[i].Signature);
}
else
{
fprintf(fp," <li>%s</li>", data->Functions[i].Signature);
}
}
}
if (no_methods)
{
fprintf(fp," <li>%s</li>","[no protected methods]");
}
fprintf(fp,"</ul>\n\n");
fprintf(fp,"<p>&nbsp;</p>\n\n");
no_methods = 1;
fprintf(fp,"<p>Private Methods:</p>\n\n<ul>\n\n");
for (i = 0; i < data->NumberOfFunctions; i++)
{
if (data->Functions[i].Name && !(data->Functions[i].IsProtected ||
data->Functions[i].IsPublic))
{
no_methods = 0;
if (data->Functions[i].Comment)
{
fprintf(fp," <li><a href=\"#method%i\">%s</a></li>", i,
data->Functions[i].Signature);
}
else
{
fprintf(fp," <li>%s</li>", data->Functions[i].Signature);
}
}
}
if (no_methods)
{
fprintf(fp," <li>%s</li>","[no private methods]");
}
fprintf(fp,"</ul>\n\n");
fprintf(fp,"<p>&nbsp;</p>\n\n");
fprintf(fp,"<hr>\n");
fprintf(fp,"<p>Detailed Method Descriptions:</p><hr>\n");
closed = 1;
for (i = 0; i < data->NumberOfFunctions; i++)
{
if (data->Functions[i].Name && data->Functions[i].Comment)
{
if (closed)
{
fprintf(fp,"<ul>\n");
closed = 0;
}
fprintf(fp," <li><a name=\"method%i\">%s%s</a></li>\n", i,
data->Functions[i].Signature,
((data->Functions[i].IsPublic) ? "" :
(data->Functions[i].IsProtected) ? " [protected]" :
" [private]"));
/* if we have a comment */
if (data->Functions[i].Comment)
{
/* and this is the last method */
if (i == (data->NumberOfFunctions - 1) ||
/* or it isn't the last */
(i < (data->NumberOfFunctions - 1) &&
/* and the next comment either doesn't exist */
(!data->Functions[i+1].Comment ||
/* or it does exist but is different */
(data->Functions[i+1].Comment &&
strcmp(data->Functions[i].Comment,
data->Functions[i+1].Comment)))))
{
closed = 1;
fprintf(fp,"<blockquote>");
fprintf(fp," <p>%s</p>\n</blockquote></ul><hr>\n\n",
data->Functions[i].Comment);
}
}
}
}
fprintf(fp,"<p>&nbsp;</p>\n</body>\n</html>\n");
}