Commit dc2968f7 authored by Dimitri van Heesch's avatar Dimitri van Heesch

mods for doxygen-0.49-991117

parent 916d6d5c
DOXYGEN Version 0.49-991106
DOXYGEN Version 0.49-991117
CONTENTS
--------
......@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
1. Unpack the archive, unless you already have:
gunzip doxygen-0.49-991106.src.tar.gz # uncompress the archive
tar xf doxygen-0.49-991106.src.tar # unpack it
gunzip doxygen-0.49-991117.src.tar.gz # uncompress the archive
tar xf doxygen-0.49-991117.src.tar # unpack it
2. Run the configure script:
......@@ -234,4 +234,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (06 November 1999)
Dimitri van Heesch (17 November 1999)
......@@ -21,7 +21,9 @@ install:
$(INSTTOOL) -d $(INSTALL)/bin
$(INSTTOOL) -d $(INSTALL)/doc/doxygen
$(INSTTOOL) -d $(INSTALL)/doc/doxygen
$(INSTTOOL) -m 755 bin/doxy* $(INSTALL)/bin
$(INSTTOOL) -m 755 bin/doxygen $(INSTALL)/bin
$(INSTTOOL) -m 755 bin/doxytag $(INSTALL)/bin
$(INSTTOOL) -m 755 bin/doxysearch $(INSTALL)/bin
cp -r doc $(INSTALL)/doc/doxygen
cp -r examples $(INSTALL)/doc/doxygen
echo "DOXYGEN = $(INSTALL)" > $(INSTALL)/doc/doxygen/doc/Makefile
......
DOXYGEN Version 0.49-991106
DOXYGEN Version 0.49-991117
Please read INSTALL for compilation instructions.
......@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (06 November 1999)
Dimitri van Heesch (17 November 1999)
0.49-991106
0.49-991117
......@@ -1057,10 +1057,8 @@ Doxygen. Unrecognized commands are treated as normal text.
The second argument specifies the file name of the image.
Doxygen will look for files in the paths (or files) that you specified
after the \ref cfg_image_path "IMAGE_PATH" tag and filter those files through the patterns
you specified after the \ref cfg_image_patterns "IMAGE_PATTERNS" tag.
If the image is found it
will be copied to the correct output directory.
after the \ref cfg_image_path "IMAGE_PATH" tag.
If the image is found it will be copied to the correct output directory.
If the image name contains spaces you'll have to put quotes (") around it.
The third argument can be used to specify the width or height of the
......@@ -1083,7 +1081,6 @@ Doxygen. Unrecognized commands are treated as normal text.
\verbatim
IMAGE_PATH = my_image_dir
IMAGE_PATTERNS = *.eps *.gif *.jpg
\endverbatim
\warning The image format for HTML is limited to what your
......
......@@ -88,7 +88,6 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_html_output HTML_OUTPUT
<li> \refitem cfg_html_stylesheet HTML_STYLESHEET
<li> \refitem cfg_image_path IMAGE_PATH
<li> \refitem cfg_image_patterns IMAGE_PATTERNS
<li> \refitem cfg_include_path INCLUDE_PATH
<li> \refitem cfg_inherit_docs INHERIT_DOCS
<li> \refitem cfg_inline_info INLINE_INFO
......@@ -115,6 +114,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_searchengine SEARCHENGINE
<li> \refitem cfg_source_browser SOURCE_BROWSER
<li> \refitem cfg_strip_from_path STRIP_FROM_PATH
<li> \refitem cfg_tab_size TAB_SIZE
<li> \refitem cfg_tagfiles TAGFILES
<li> \refitem cfg_verbatim_headers VERBATIM_HEADERS
<li> \refitem cfg_warnings WARNINGS
......@@ -314,6 +314,11 @@ followed by the descriptions of the tags grouped by category.
If the \c INLINE_INFO tag is set to \c YES (the default) then a tag [inline]
is inserted in the documentation for inline members.
\anchor cfg_tab_size
<dt>\c TAB_SIZE <dd>
the TAB_SIZE tag can be used to set the number of spaces in a tab.
Doxygen uses this value to replace tabs by spaces in code fragments.
</dl>
\subsection config_input Input related options
......@@ -382,14 +387,6 @@ followed by the descriptions of the tags grouped by category.
directories that contain images that are to be included in the
documentation (see the \ref cmdimage "\image" command).
\anchor cfg_image_patterns
<dt>\c IMAGE_PATTERNS <dd>
\addindex IMAGE_PATTERNS
If the value of the \c IMAGE_PATH tag contains directories, you can use the
\c IMAGE_PATTERNS tag to specify one or more wildcard pattern (like *.gif
and *.eps) to filter out the image files in the directories. If left
blank all files are included.
\anchor cfg_input_filter
<dt>\c INPUT_FILTER <dd>
\addindex INPUT_FILTER
......
......@@ -56,6 +56,25 @@ as <code>PREPROCESSING = YES</code>.
Look at section \ref preprocessing for the answer.
<li><b>How can I change what's after the <code>#include</code> in class documentation?</b>
You can document your class like
\verbatim
/*! \class MyClassName include.h path/include.h
*
* Docs for MyClassName
*/
\endverbatim
To make doxygen put <br><br>
<code>
#include <path/include.h>
</code>
in the documentation of the class MyClassName regardless of the name of the actual
header file in which the definition of MyClassName is contained.
</ol>
*/
......@@ -14,24 +14,8 @@
*
*/
/*! \page history Doxygen History
<h3>TODO/Wish list</h3>
<ul>
<li>Add support for grouping members, and document then as a group.
<li>Support for K&R-style function arguments.
<li>More ouput formats: suggested are info format and RTF format.
<li>Split long lists in an index to a set of smaller lists.
<li>Add a nice graphical front-end for creating and modifying the
configuration file (it should be flexible enough to quickly add new options).
<li>Improve the search index generation, so it uses less memory and
is easier to get running.
<li>Generate code metrics (Anyone know a good book about code metrics?)
<li>Add features that you think are missing... So if you know any that are
not yet listed here, please let me know.
</ul>
<h3>Features scheduled for version 1.0</h3>
<ul>
<li>Include LaTeX style formulas in LaTeX and HTML output (in HTML as a gif).
......
......@@ -184,6 +184,7 @@ Patrick Alberts,
Jacques Tremblay,
John Sturton,
Moshe Kruger,
David Wong,
and many others for suggestions, patches and bug reports.
</ul>
*/
......
......@@ -100,18 +100,6 @@ Here is a list of the languages and their current maintainers:
borco@NOSPAM.borco-ei.eng.hokudai.ac.jp</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>
Polish
</TD>
<TD>
Piotr Piatkowski
</TD>
<TD>
<a href="mailto:kompas@NOSPAM.ceti.com.pl">
kompas@NOSPAM.ceti.com.pl</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>
Italian
......@@ -209,8 +197,6 @@ Here is a list of the languages and their current maintainers:
\hline
Romanian & Ionutz Borcoman & {\tt borco@borco-ei.eng.hokudai.ac.jp} \\
\hline
Polish & Piotr Piatkowski & {\tt kompas@ceti.com.pl} \\
\hline
Italian & Ahmed Aldo Faisal & {\tt aaf23@cam.ac.uk} \\
& Alessandro Falappa & {\tt a.falappa@flashnet.it} \\
\hline
......
/******************************************************************************
*
* $Id$
*
* Copyright (C) 1997-1999 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* All output generated with Doxygen is not covered by this license.
*
*/
/*! \page todo Doxygen TODO's
<h3>TODO/Wish list</h3>
<ul>
<li>Expand namespaces in the file docs with the contents that are
specific to the file (maybe also expand the classes inside a namespace).
<li>Add support for grouping members, and document then as a group.
<li>Support for K&R-style function arguments.
<li>More output formats: suggested are info format and RTF format.
<li>Split long lists in an index to a set of smaller lists.
<li>Add a nice graphical front-end for creating and modifying the
configuration file (it should be flexible enough to quickly add new options).
<li>Improve the search index generation, so it uses less memory and
is easier to get running.
<li>Generate code metrics (Anyone know a good book about code metrics?)
<li>Add features that you think are missing... So if you know any that are
not yet listed here, please let me know.
</ul>
*/
This diff is collapsed.
......@@ -109,6 +109,97 @@ static int anchorCount;
static FileDef *sourceFileDef;
static QCString lastVariable;
// start a new line of code, inserting a line number if sourceFileDef
// is TRUE. If a definition starts at the current line, then the line
// number is linked to the documentation of that definition.
static void startCodeLine(OutputList &ol)
{
if (sourceFileDef)
{
QCString lineNumber,lineAnchor;
lineNumber.sprintf("%05d ",yyLineNr);
lineAnchor.sprintf("l%05d",yyLineNr);
Definition *d = sourceFileDef->getSourceDefinition(yyLineNr);
QCString anchor = sourceFileDef->getSourceAnchor(yyLineNr);
if (d && d->isLinkableInProject())
{
ol.startCodeAnchor(lineAnchor);
ol.writeCodeLink(d->getReference(),d->getOutputFileBase(),
anchor,lineNumber);
ol.endCodeAnchor();
}
else
{
ol.codify(lineNumber);
}
}
ol.startCodeLine();
}
// write a code fragment `text' that may span multiple lines, inserting
// line numbers for each line.
static void codifyLines(char *text)
{
char *p=text,*sp=p;
char c;
bool done=FALSE;
while (!done)
{
sp=p;
while ((c=*p++) && c!='\n');
if (c=='\n')
{
yyLineNr++;
*(p-1)='\0';
code->codify(sp);
code->endCodeLine();
if (yyLineNr<inputLines)
{
startCodeLine(*code);
}
}
else
{
code->codify(sp);
done=TRUE;
}
}
}
// writes a link to a fragment `text' that may span multiple lines, inserting
// line numbers for each line. If `text' contains newlines, the link will be
// split into multiple links with the same destination, one for each line.
static void writeMultiLineCodeLink(OutputList &ol,
const char *ref,const char *file,
const char *anchor,const char *text)
{
bool done=FALSE;
QCString ts = text;
char *p=ts.data();
while (!done)
{
char *sp=p;
char c;
while ((c=*p++) && c!='\n');
if (c=='\n')
{
yyLineNr++;
*(p-1)='\0';
ol.writeCodeLink(ref,file,anchor,sp);
ol.endCodeLine();
if (yyLineNr<inputLines)
{
startCodeLine(ol);
}
}
else
{
ol.writeCodeLink(ref,file,anchor,sp);
done=TRUE;
}
}
}
static void addType()
{
if (name=="const") { name.resize(0); return; }
......@@ -166,7 +257,7 @@ static void addParameter()
}
}
static void generateClassLink(OutputList &ol,const char *clName)
static void generateClassLink(OutputList &ol,char *clName)
{
QCString className=clName;
if (className.length()==0) return;
......@@ -188,11 +279,12 @@ static void generateClassLink(OutputList &ol,const char *clName)
anchorCount++;
}
}
ol.writeCodeLink(cd->getReference(),cd->getOutputFileBase(),0,className);
//ol.writeCodeLink(cd->getReference(),cd->getOutputFileBase(),0,className);
writeMultiLineCodeLink(ol,cd->getReference(),cd->getOutputFileBase(),0,className);
}
else
{
ol.codify(clName);
codifyLines(clName);
}
}
......@@ -231,8 +323,10 @@ static bool getLink(const char *className,
if (d)
{
//printf("d->getOutputBase()=`%s' name=`%s'\n",d->getOutputFileBase().data(),md->name().data());
result.writeCodeLink(d->getReference(),d->getOutputFileBase(),
md->anchor(),text ? text : memberName);
//result.writeCodeLink(d->getReference(),d->getOutputFileBase(),
// md->anchor(),text ? text : memberName);
writeMultiLineCodeLink(result,d->getReference(),d->getOutputFileBase(),
md->anchor(),text ? text : memberName);
return TRUE;
}
}
......@@ -254,7 +348,7 @@ static ClassDef *stripClassName(const char *s)
}
static void generateMemberLink(OutputList &ol,const char *varName,
const char *memName)
char *memName)
{
//printf("generateMemberLink(object=%s,mem=%s) classScope=%s\n",
// varName,memName,classScope.data());
......@@ -301,7 +395,7 @@ static void generateMemberLink(OutputList &ol,const char *varName,
}
else
{
ol.codify(memName);
codifyLines(memName);
}
return;
}
......@@ -328,34 +422,51 @@ static void generateMemberLink(OutputList &ol,const char *varName,
MemberName *mmn=memberNameDict[memName];
if (mmn)
{
MemberNameIterator mmni(*mmn);
MemberDef *mmd;
for (;(mmd=mmni.current());++mmni)
{
if (mmd->memberClass()==mcd)
MemberNameIterator mmni(*mmn);
MemberDef *mmd;
for (;(mmd=mmni.current());++mmni)
{
ol.writeCodeLink(mcd->getReference(),mcd->getOutputFileBase(),
mmd->anchor(),memName);
return;
if (mmd->memberClass()==mcd)
{
//ol.writeCodeLink(mcd->getReference(),mcd->getOutputFileBase(),
// mmd->anchor(),memName);
writeMultiLineCodeLink(ol,mcd->getReference(),
mcd->getOutputFileBase(),mmd->anchor(),memName);
return;
}
}
}
}
}
}
}
}
}
}
ol.codify(memName);
codifyLines(memName);
return;
}
static void generateFunctionLink(OutputList &ol,const char *funcName)
static QCString removeWhiteSpace(const char *s)
{
QCString result;
if (s)
{
const char *p=s;
int c;
while ((c=*p++))
{
if (c!=' ' && c!='\n' && c!='\r' && c!='\t') result+=c;
}
}
return result;
}
static void generateFunctionLink(OutputList &ol,char *funcName)
{
OutputList result(&ol);
CodeClassDef *ccd=0;
QCString locScope=classScope.copy();
QCString locFunc=funcName;
QCString locFunc=removeWhiteSpace(funcName);
int i=locFunc.findRev("::");
if (i>0)
{
......@@ -383,7 +494,7 @@ static void generateFunctionLink(OutputList &ol,const char *funcName)
}
else
{
ol.codify(funcName);
codifyLines(funcName);
}
return;
}
......@@ -398,66 +509,6 @@ static int countLines()
return count;
}
static void startCodeLine()
{
if (sourceFileDef)
{
QCString lineNumber,lineAnchor;
lineNumber.sprintf("%05d ",yyLineNr);
lineAnchor.sprintf("l%05d",yyLineNr);
//MemberDef *md = sourceFileDef->getSourceDefinition(yyLineNr);
//Definition *d=0;
//if (md)
//{
// d=md->memberClass();
// if (!d) d=md->getFileDef();
//}
//if (md && d)
Definition *d = sourceFileDef->getSourceDefinition(yyLineNr);
QCString anchor = sourceFileDef->getSourceAnchor(yyLineNr);
if (d && d->isLinkableInProject())
{
code->startCodeAnchor(lineAnchor);
code->writeCodeLink(d->getReference(),d->getOutputFileBase(),
anchor,lineNumber);
code->endCodeAnchor();
}
else
{
code->codify(lineNumber);
}
}
code->startCodeLine();
}
static void codifyLines(char *text)
{
char *p=text,*sp=p;
char c;
bool done=FALSE;
while (!done)
{
sp=p;
while ((c=*p++) && c!='\n');
if (c=='\n')
{
yyLineNr++;
*(p-1)='\0';
code->codify(sp);
code->endCodeLine();
if (yyLineNr<inputLines)
{
startCodeLine();
}
}
else
{
code->codify(sp);
done=TRUE;
}
}
}
/* -----------------------------------------------------------------
*/
#undef YY_INPUT
......@@ -812,7 +863,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
code->endCodeLine();
if (yyLineNr<inputLines)
{
startCodeLine();
startCodeLine(*code);
}
BEGIN(lastSpecialCContext);
}
......@@ -852,7 +903,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
code->endCodeLine();
if (yyLineNr<inputLines)
{
startCodeLine();
startCodeLine(*code);
}
}
<*>^{B}*"//"[!/][^\n]*\n { // remove special one-line comment
......@@ -860,7 +911,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
code->endCodeLine();
if (yyLineNr<inputLines)
{
startCodeLine();
startCodeLine(*code);
}
}
<*>"//"[!/][^\n]*\n { // strip special one-line comment
......@@ -928,7 +979,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s,
bool exBlock, const char *exName,FileDef *fd)
{
code = new OutputList(&ol);
if (s.length()==0) return;
if (s.isEmpty()) return;
inputString = s;
inputPosition = 0;
inputLines = countLines();
......@@ -941,7 +992,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s,
exampleName = exName;
sourceFileDef = fd;
exampleFile = convertSlashes(exampleName,TRUE)+"-example";
startCodeLine();
startCodeLine(*code);
type.resize(0);
name.resize(0);
args.resize(0);
......
......@@ -3170,7 +3170,7 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl)
{
t << "\n";
t << "# the TAB_SIZE tag can be used to set the number of spaces in a tab\n";
t << "# the TAB_SIZE tag can be used to set the number of spaces in a tab.\n";
t << "# Doxygen uses this value to replace tabs by spaces in code fragments.\n";
t << "\n";
}
......@@ -3259,16 +3259,6 @@ void writeTemplateConfig(QFile *f,bool sl)
}
t << "IMAGE_PATH =\n";
if (!sl)
{
t << "\n";
t << "# If the value of the IMAGE_PATH tag contains directories, you can use the\n";
t << "# IMAGE_PATTERNS tag to specify one or more wildcard pattern (like *.gif \n";
t << "# and *.eps) to filter out the image files in the directories. If left \n";
t << "# blank all files are included.\n";
t << "\n";
}
t << "IMAGE_PATTERNS =\n";
if (!sl)
{
t << "\n";
t << "# The INPUT_FILTER tag can be used to specify a program that doxygen should\n";
......
......@@ -707,7 +707,7 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl)
{
t << "\n";
t << "# the TAB_SIZE tag can be used to set the number of spaces in a tab\n";
t << "# the TAB_SIZE tag can be used to set the number of spaces in a tab.\n";
t << "# Doxygen uses this value to replace tabs by spaces in code fragments.\n";
t << "\n";
}
......@@ -796,16 +796,6 @@ void writeTemplateConfig(QFile *f,bool sl)
}
t << "IMAGE_PATH =\n";
if (!sl)
{
t << "\n";
t << "# If the value of the IMAGE_PATH tag contains directories, you can use the\n";
t << "# IMAGE_PATTERNS tag to specify one or more wildcard pattern (like *.gif \n";
t << "# and *.eps) to filter out the image files in the directories. If left \n";
t << "# blank all files are included.\n";
t << "\n";
}
t << "IMAGE_PATTERNS =\n";
if (!sl)
{
t << "\n";
t << "# The INPUT_FILTER tag can be used to specify a program that doxygen should\n";
......
......@@ -43,6 +43,8 @@ static int labelToEnumValue(const char *l)
return Debug::Functions;
else if (label=="Variables")
return Debug::Variables;
else if (label=="Preprocessor")
return Debug::Preprocessor;
else
return 0;
}
......@@ -61,3 +63,8 @@ void Debug::setPriority(int p)
{
curPrio = p;
}
bool Debug::isFlagSet(DebugMask mask)
{
return (curMask & mask)!=0;
}
......@@ -21,14 +21,16 @@
class Debug
{
public:
enum DebugMask { Quiet = 0x00000000,
FindMembers = 0x00000001,
Functions = 0x00000002,
Variables = 0x00000004
enum DebugMask { Quiet = 0x00000000,
FindMembers = 0x00000001,
Functions = 0x00000002,
Variables = 0x00000004,
Preprocessor = 0x00000008
};
static void print(DebugMask mask,int prio,const char *fmt,...);
static void setFlag(const char *label);
static void clearFlag(const char *label);
static bool isFlagSet(DebugMask mask);
static void setPriority(int p);
private:
......
This diff is collapsed.
......@@ -60,6 +60,7 @@ void FileName::generateDiskNames()
while (fd && fd->isReference()) fd=next();
char c=fd->path.at(i);
if (c=='/') j=i; // remember last position of dirname
fd=next();
while (fd && !found)
{
if (!fd->isReference())
......@@ -67,8 +68,8 @@ void FileName::generateDiskNames()
//printf("i=%d fd->path=`%s' fd->name=`%s'\n",i,fd->path.data(),fd->name().data());
if (i==(int)fd->path.length())
{
warning("Warning: Input file %s found multiple times!\n"
" The generated documentation for this file may not be correct!\n",fd->absFilePath().data());
//warning("Warning: Input file %s found multiple times!\n"
// " The generated documentation for this file may not be correct!\n",fd->absFilePath().data());
found=TRUE;
}
else if (fd->path[i]!=c)
......@@ -84,8 +85,11 @@ void FileName::generateDiskNames()
while (fd)
{
//printf("fd->setName(%s)\n",(fd->path.right(fd->path.length()-j-1)+name).data());
fd->setName(fd->path.right(fd->path.length()-j-1)+name);
fd->diskname=convertSlashes(fd->name());
if (!fd->isReference())
{
fd->setName(fd->path.right(fd->path.length()-j-1)+name);
fd->diskname=convertSlashes(fd->name());
}
fd=next();
}
}
......
......@@ -93,6 +93,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
ol.disable(OutputGenerator::Latex);
ol.startTextLink(0,"_details");
parseText(ol,theTranslator->trMore());
ol.endTextLink();
ol.enable(OutputGenerator::Latex);
}
if (fileList->count()>0)
......
......@@ -124,11 +124,14 @@ void HtmlGenerator::writeFooter(int part,bool external)
t << "<hr><address><small>";
else
t << substitute(
substitute(
substitute(footer,"$title",lastTitle),
"$datetime",dateToString(TRUE)
substitute(
substitute(
substitute(footer,"$title",lastTitle),
"$datetime",dateToString(TRUE)
),
"$date",dateToString(FALSE)
),
"$date",dateToString(FALSE)
"$doxygenversion",versionString
);
break;
case 1:
......@@ -663,7 +666,7 @@ void HtmlGenerator::endIndexList()
void HtmlGenerator::startAlphabeticalIndexList()
{
t << "<table width=95% border=0 cellspacing=0 cellpadding=0>" << endl;
t << "<table align=center width=95% border=0 cellspacing=0 cellpadding=0>" << endl;
}
void HtmlGenerator::endAlphabeticalIndexList()
......@@ -684,9 +687,9 @@ void HtmlGenerator::writeImage(const char *name,const char *,const char *)
int i;
if ((i=baseName.findRev('/'))!=-1 || (i=baseName.findRev('\\'))!=-1)
{
baseName=baseName.right(baseName.length()-i);
baseName=baseName.right(baseName.length()-i-1);
}
t << "<img src=" << name << " alt=\"" << baseName << "\">" << endl;
t << "<img src=\"" << name << "\" alt=\"" << baseName << "\">" << endl;
}
void HtmlGenerator::startMemberDoc(const char *,const char *,const char *,const char *)
......
......@@ -358,7 +358,7 @@ void writeFileIndex(OutputList &ol)
fd->name()
);
ol.docify(" (");
if (fd->briefDescription())
if (!fd->briefDescription().isEmpty())
{
OutputList briefOutput(&ol);
parseDoc(briefOutput,0,0,
......@@ -421,24 +421,27 @@ void writeSourceIndex(OutputList &ol)
FileDef *fd=fn->first();
while (fd)
{
if (!started)
{
started=TRUE;
ol.startItemList();
}
ol.writeListItem();
QCString path;
if (Config::fullPathNameFlag)
{
path=stripFromPath(fd->getPath().copy());
}
if (!path.isEmpty()) ol.docify(path);
ol.writeObjectLink(0,fd->sourceName(),0,fd->name());
ol.writeString("\n");
if (Config::generateHtml && Config::htmlHelpFlag)
if (!fd->isReference())
{
HtmlHelp::getInstance()->addContentsItem(
fd->name(),fd->sourceName());
if (!started)
{
started=TRUE;
ol.startItemList();
}
ol.writeListItem();
QCString path;
if (Config::fullPathNameFlag)
{
path=stripFromPath(fd->getPath().copy());
}
if (!path.isEmpty()) ol.docify(path);
ol.writeObjectLink(0,fd->sourceName(),0,fd->name());
ol.writeString("\n");
if (Config::generateHtml && Config::htmlHelpFlag)
{
HtmlHelp::getInstance()->addContentsItem(
fd->name(),fd->sourceName());
}
}
fd=fn->next();
}
......@@ -497,7 +500,7 @@ void writeNamespaceIndex(OutputList &ol)
{
ol.writeStartAnnoItem("namespace",nd->getOutputFileBase(),0,nd->name());
ol.docify(" (");
if (nd->briefDescription())
if (!nd->briefDescription().isEmpty())
{
OutputList briefOutput(&ol);
parseDoc(briefOutput,nd->name(),0,
......@@ -570,7 +573,7 @@ void writeAnnotatedClassList(OutputList &ol)
}
ol.writeStartAnnoItem(type,cd->getOutputFileBase(),0,cd->name());
ol.docify(" (");
if (cd->briefDescription())
if (!cd->briefDescription().isEmpty())
{
OutputList briefOutput(&ol);
parseDoc(briefOutput,cd->name(),0,
......
......@@ -991,8 +991,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
ol.disableAllBut(OutputGenerator::Man);
ol.writeString(" ");
ol.enableAll();
ol.endDescTableTitle();
ol.endDoxyAnchor();
ol.endDescTableTitle();
//ol.newParagraph();
ol.startDescTableData();
......
......@@ -73,7 +73,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
if (Config::genTagFile.length()>0) tagFile << "%" << name() << ":\n";
OutputList briefOutput(&ol);
if (briefDescription())
if (!briefDescription().isEmpty())
{
parseDoc(briefOutput,name(),0,briefDescription());
ol+=briefOutput;
......
This diff is collapsed.
......@@ -40,6 +40,7 @@
#include "message.h"
#include "util.h"
#include "defargs.h"
#include "debug.h"
#if defined(_MSC_VER) || defined(__BORLANDC__)
#define popen _popen
......@@ -48,7 +49,7 @@
#define YY_NEVER_INTERACTIVE 1
#define DUMP_OUTPUT 0 // set this to one to see what the preprocessor
#define DUMP_OUTPUT 1 // set this to one to see what the preprocessor
// produces.
#define SHOW_INCLUDES 0 // set this to one to list all parsed include files
......@@ -1627,9 +1628,9 @@ void cleanupPreprocessor()
void preprocessFile(const char *fileName,BufStr &output)
{
#if DUMP_OUTPUT
//#if DUMP_OUTPUT
uint orgOffset=output.curPos();
#endif
//#endif
outputBuf=&output;
includeStack.setAutoDelete(TRUE);
......@@ -1765,20 +1766,23 @@ void preprocessFile(const char *fileName,BufStr &output)
else
pclose(preYYin);
#if DUMP_OUTPUT
char *orgPos=output.data()+orgOffset;
char *newPos=output.data()+output.curPos();
printf("Resulting size: %d bytes\n",newPos-orgPos);
int line=1;
printf("---------\n00001 ");
while (orgPos<newPos)
//#if DUMP_OUTPUT
if (Debug::isFlagSet(Debug::Preprocessor))
{
putchar(*orgPos);
if (*orgPos=='\n') printf("%05d ",++line);
orgPos++;
char *orgPos=output.data()+orgOffset;
char *newPos=output.data()+output.curPos();
printf("Preprocessor output (size: %d bytes):\n",newPos-orgPos);
int line=1;
printf("---------\n00001 ");
while (orgPos<newPos)
{
putchar(*orgPos);
if (*orgPos=='\n') printf("%05d ",++line);
orgPos++;
}
printf("\n---------\n");
}
printf("\n---------\n");
#endif
//#endif
}
extern "C" { // some bogus code to keep the compiler happy
......
This diff is collapsed.
......@@ -127,7 +127,6 @@ static bool inBugBlock;
static bool inWarningBlock;
static bool inParBlock;
static bool firstSeeArg;
static bool javaDocSee;
static char afterDocTerminator;
static int tmpDocType;
static QCString sectionLabel;
......@@ -200,7 +199,6 @@ static void initParser()
inWarningBlock = FALSE;
inParBlock = FALSE;
firstSeeArg = FALSE;
javaDocSee = FALSE;
}
//-----------------------------------------------------------------------------
......@@ -707,8 +705,12 @@ static QCString findAndCopyImage(const char *fileName,ImageTypes type)
}
else
{
warn("Warning: image file %s is not found. ",fileName);
warn("Check your IMAGE_PATH\n");
result=fileName;
if (result.left(5)!="http:")
{
warn("Warning: image file %s is not found in IMAGE_PATH: "
"assuming external image. ",fileName);
}
}
return result;
}
......@@ -1243,7 +1245,6 @@ VAR [vV][aA][rR]
if (inBlock()) endBlock();
inSeeBlock=TRUE;
//firstSeeArg=TRUE;
//javaDocSee=!strcmp(yytext,"@see");
outDoc->startDescList();
//outDoc->writeBoldString("See also: ");
outDoc->startBold();
......@@ -1439,8 +1440,8 @@ VAR [vV][aA][rR]
<DocImage>[lL][aA][tT][eE][xX] {
BEGIN(DocLatexImageName);
}
<DocHtmlImageName>{FILE} {
curImageName = findAndCopyImage(yytext,IT_Html);
<DocHtmlImageName>{FILE}|{URLMASK} {
curImageName = findAndCopyImage(stripQuotes(yytext),IT_Html);
if (!curImageName.isEmpty())
{
storeOutputListState();
......@@ -1451,7 +1452,7 @@ VAR [vV][aA][rR]
BEGIN(DocScan);
}
<DocLatexImageName>{FILE} {
curImageName = findAndCopyImage(yytext,IT_Latex);
curImageName = findAndCopyImage(stripQuotes(yytext),IT_Latex);
if (curImageName.isEmpty())
BEGIN(DocScan);
else
......
......@@ -1939,7 +1939,11 @@ void parseTagFile(const char *fileName)
{
FILE *f=fopen(fileName,"r");
QFileInfo fi(fileName);
if (!f || !fi.exists());
if (!f || !fi.exists())
{
if (f) fclose(f);
return;
}
tagName = fi.fileName();
tagYYin = f;
......
......@@ -260,7 +260,11 @@ void parseTagFile(const char *fileName)
{
FILE *f=fopen(fileName,"r");
QFileInfo fi(fileName);
if (!f || !fi.exists());
if (!f || !fi.exists())
{
if (f) fclose(f);
return;
}
tagName = fi.fileName();
tagYYin = f;
......
......@@ -259,7 +259,7 @@ class TranslatorDutch : public Translator
// new since 0.49-990425
//////////////////////////////////////////////////////////////////////////
virtual QCString trCompoundReference(const char *clName,
QCString trCompoundReference(const char *clName,
ClassDef::CompoundType compType)
// used as the title of the HTML page of a class/struct/union
{
......@@ -274,14 +274,14 @@ class TranslatorDutch : public Translator
result+=" Referentie";
return result;
}
virtual QCString trFileReference(const char *fileName)
QCString trFileReference(const char *fileName)
// used as the title of the HTML page of a file
{
QCString result=fileName;
result+=" File Referentie";
return result;
}
virtual QCString trNamespaceReference(const char *namespaceName)
QCString trNamespaceReference(const char *namespaceName)
// used as the title of the HTML page of a namespace
{
QCString result=namespaceName;
......@@ -290,29 +290,29 @@ class TranslatorDutch : public Translator
}
// these are for the member sections of a class, struct or union
virtual QCString trPublicMembers()
QCString trPublicMembers()
{ return "Public Members"; }
virtual QCString trPublicSlots()
QCString trPublicSlots()
{ return "Public Slots"; }
virtual QCString trSignals()
QCString trSignals()
{ return "Signals"; }
virtual QCString trStaticPublicMembers()
QCString trStaticPublicMembers()
{ return "Static Public Members"; }
virtual QCString trProtectedMembers()
QCString trProtectedMembers()
{ return "Protected Members"; }
virtual QCString trProtectedSlots()
QCString trProtectedSlots()
{ return "Protected Slots"; }
virtual QCString trStaticProtectedMembers()
QCString trStaticProtectedMembers()
{ return "Static Protected Members"; }
virtual QCString trPrivateMembers()
QCString trPrivateMembers()
{ return "Private Members"; }
virtual QCString trPrivateSlots()
QCString trPrivateSlots()
{ return "Private Slots"; }
virtual QCString trStaticPrivateMembers()
QCString trStaticPrivateMembers()
{ return "Static Private Members"; }
// end of member sections
virtual QCString trWriteList(int numEntries)
QCString trWriteList(int numEntries)
{
// this function is used to produce a comma-separated list of items.
// use generateMarker(i) to indicate where item i should be put.
......@@ -336,35 +336,35 @@ class TranslatorDutch : public Translator
return result;
}
virtual QCString trInheritsList(int numEntries)
QCString trInheritsList(int numEntries)
// used in class documentation to produce a list of base classes,
// if class diagrams are disabled.
{
return "Erft over van "+trWriteList(numEntries)+".";
}
virtual QCString trInheritedByList(int numEntries)
QCString trInheritedByList(int numEntries)
// used in class documentation to produce a list of super classes,
// if class diagrams are disabled.
{
return "Wordt overge&euml;rfd door "+trWriteList(numEntries)+".";
}
virtual QCString trReimplementedFromList(int numEntries)
QCString trReimplementedFromList(int numEntries)
// used in member documentation blocks to produce a list of
// members that are hidden by this one.
{
return "Nieuwe implementatie van "+trWriteList(numEntries)+".";
}
virtual QCString trReimplementedInList(int numEntries)
QCString trReimplementedInList(int numEntries)
{
// used in member documentation blocks to produce a list of
// all member that overwrite the implementation of this member.
return "Opnieuw ge&iuml;mplementeerd in "+trWriteList(numEntries)+".";
}
virtual QCString trNamespaceMembers()
QCString trNamespaceMembers()
// This is put above each page as a link to all members of namespaces.
{ return "Namespace Members"; }
virtual QCString trNamespaceMemberDescription(bool extractAll)
QCString trNamespaceMemberDescription(bool extractAll)
// This is an introduction to the page with all namespace members
{
QCString result="Hier is een lijst van alle ";
......@@ -376,11 +376,11 @@ class TranslatorDutch : public Translator
result+="de namespaces waartoe ze behoren:";
return result;
}
virtual QCString trNamespaceIndex()
QCString trNamespaceIndex()
// This is used in LaTeX as the title of the chapter with the
// index of all namespaces.
{ return "Namespace Index"; }
virtual QCString trNamespaceDocumentation()
QCString trNamespaceDocumentation()
// This is used in LaTeX as the title of the chapter containing
// the documentation of all namespaces.
{ return "Namespace Documentatie"; }
......@@ -392,7 +392,7 @@ class TranslatorDutch : public Translator
/*! This is put at the bottom of a class documentation page and is
* followed by a list of files that were used to generate the page.
*/
virtual QCString trGeneratedFromFiles(ClassDef::CompoundType compType,
QCString trGeneratedFromFiles(ClassDef::CompoundType compType,
bool single)
{ // here s is one of " Class", " Struct" or " Union"
// single is true implies a single file
......@@ -412,7 +412,7 @@ class TranslatorDutch : public Translator
/*! This is in the (quick) index as a link to the alphabetical compound
* list.
*/
virtual QCString trAlphabeticalList()
QCString trAlphabeticalList()
{ return "Alphabetical List"; }
//////////////////////////////////////////////////////////////////////////
......@@ -420,19 +420,36 @@ class TranslatorDutch : public Translator
//////////////////////////////////////////////////////////////////////////
/*! This is used as the heading text for the retval command. */
virtual QCString trReturnValues()
QCString trReturnValues()
{ return "Retour waarden"; }
/*! This is in the (quick) index as a link to the main page (index.html)
*/
virtual QCString trMainPage()
QCString trMainPage()
{ return "Hoofd Pagina"; }
/*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page.
*/
virtual QCString trPageAbbreviation()
QCString trPageAbbreviation()
{ return "p."; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-991106
//////////////////////////////////////////////////////////////////////////
QCString trSources()
{
return "Sources";
}
QCString trDefinedAtLineInSourceFile()
{
return "De definitie bevindt zich op regel @0 in de file @1.";
}
QCString trDefinedInSourceFile()
{
return "De definitie bevindt zich in de file @0.";
}
};
#endif
......@@ -53,7 +53,7 @@ Problem!
===================================================================================
1999/09/01
* Det verkar som om "namnrymd" r en hyggligt vedertagen svensk versttning
av "namnepace", s jag kr med det frn och med nu.
av "namespace", s jag kr med det frn och med nu.
* "interface" heter numera "grnssnitt"
*/
......@@ -538,6 +538,41 @@ class TranslatorSwedish : public Translator
{
return "Alfabetisk lista";
}
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990901
//////////////////////////////////////////////////////////////////////////
/*! This is used as the heading text for the retval command. */
virtual QCString trReturnValues()
{ return "Returvrden"; }
/*! This is in the (quick) index as a link to the main page (index.html)
*/
virtual QCString trMainPage()
{ return "Huvudsida"; }
/*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page.
*/
virtual QCString trPageAbbreviation()
{ return "s."; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-991003
//////////////////////////////////////////////////////////////////////////
virtual QCString trSources()
{
return "Kllor";
}
virtual QCString trDefinedAtLineInSourceFile()
{
return "Definition p rad @0 i filen @1.";
}
virtual QCString trDefinedInSourceFile()
{
return "Definition i filen @0.";
}
};
#endif
......@@ -320,8 +320,8 @@ void writeExample(OutputList &ol,ExampleList *el)
QCString exampleLine=theTranslator->trWriteList(el->count());
bool latexEnabled = ol.isEnabled(OutputGenerator::Latex);
bool manEnabled = ol.isEnabled(OutputGenerator::Html);
bool htmlEnabled = ol.isEnabled(OutputGenerator::Man);
bool manEnabled = ol.isEnabled(OutputGenerator::Man);
bool htmlEnabled = ol.isEnabled(OutputGenerator::Html);
QRegExp marker("@[0-9]+");
int index=0,newIndex,matchLen;
// now replace all markers in inheritLine with links to the classes
......@@ -624,21 +624,25 @@ QCString fileToString(const char *name)
QFileInfo fi(name);
if (!fi.exists() || !fi.isFile())
{
err("Error: file `%s' not found\n",name);
exit(1);
warn("Error: file `%s' not found\n",name);
return "";
}
f.setName(name);
fileOpened=f.open(IO_ReadOnly);
}
if (!fileOpened)
{
err("Error: cannot open file `%s' for reading\n",name);
exit(1);
warn("Error: cannot open file `%s' for reading\n",name);
return "";
}
int fsize=f.size();
QCString contents(fsize+1);
QCString contents(fsize+2);
f.readBlock(contents.data(),fsize);
contents[fsize]='\0';
if (fsize==0 || contents[fsize-1]=='\n')
contents[fsize]='\0';
else
contents[fsize]='\n';
contents[fsize+1]='\0';
f.close();
return contents;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment