Commit 9d98e802 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.2.4-20010128

parent cbf50dc7
DOXYGEN Version 1.2.4-20010121 DOXYGEN Version 1.2.4-20010128
Please read the installation section of the manual for instructions. Please read the installation section of the manual for instructions.
-------- --------
Dimitri van Heesch (21 January 2001) Dimitri van Heesch (28 January 2001)
DOXYGEN Version 1.2.4-20010121 DOXYGEN Version 1.2.4-20010128
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at ...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy, Enjoy,
Dimitri van Heesch (21 January 2001) Dimitri van Heesch (28 January 2001)
1.2.4-20010121 1.2.4-20010128
...@@ -950,9 +950,13 @@ void checkConfig() ...@@ -950,9 +950,13 @@ void checkConfig()
} }
} }
#undef PUTENV
#if defined(_WIN32) #if defined(_WIN32)
if (Config::haveDotFlag) _putenv("DOTFONTPATH=."); #define PUTENV _putenv
#else
#define PUTENV putenv
#endif #endif
if (Config::haveDotFlag) PUTENV("DOTFONTPATH=.");
} }
......
...@@ -1046,6 +1046,15 @@ void init() ...@@ -1046,6 +1046,15 @@ void init()
"will result in a user defined paragraph with heading \"Side Effects:\". \n" "will result in a user defined paragraph with heading \"Side Effects:\". \n"
"You can put \\n's in the value part of an alias to insert newlines. \n" "You can put \\n's in the value part of an alias to insert newlines. \n"
); );
ConfigBool::add( "optimizeForCFlag",
"OPTIMIZE_OUTPUT_FOR_C",
"FALSE",
"do we parse C code?",
"Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources \n"
"only. Doxygen will then generate output that is more tailored for C. \n"
"For instance some of the names that are used will be different. The list \n"
"of all members will be omitted, etc. \n"
);
//----------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------
ConfigInfo::add( "Messages","configuration options related to warning and progress messages"); ConfigInfo::add( "Messages","configuration options related to warning and progress messages");
//----------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------
...@@ -1306,7 +1315,7 @@ void init() ...@@ -1306,7 +1315,7 @@ void init()
"GENERATE_TREEVIEW", "GENERATE_TREEVIEW",
"FALSE", "FALSE",
"should a folder tree view be generated?", "should a folder tree view be generated?",
"If the GENERATE_TREEVIEW tag is set to YES, a side pannel will be\n" "If the GENERATE_TREEVIEW tag is set to YES, a side panel will be\n"
"generated containing a tree-like index structure (just like the one that \n" "generated containing a tree-like index structure (just like the one that \n"
"is generated for HTML Help). For this to work a browser that supports \n" "is generated for HTML Help). For this to work a browser that supports \n"
"JavaScript and frames is required (for instance Netscape 4.0+ \n" "JavaScript and frames is required (for instance Netscape 4.0+ \n"
......
...@@ -5,8 +5,8 @@ distclean: clean ...@@ -5,8 +5,8 @@ distclean: clean
$(RM) -f Makefile.xmlgen $(RM) -f Makefile.xmlgen
tmake: tmake:
export TMAKEPATH=$(TMAKEPATH) ; $(PERL) $(TMAKE) xmlgen.pro >Makefile.xmlgen $(ENV) $(PERL) $(TMAKE) xmlgen.pro >Makefile.xmlgen
Makefile.xmlgen: xmlgen.pro Makefile.xmlgen: xmlgen.pro
export TMAKEPATH=$(TMAKEPATH) ; $(PERL) $(TMAKE) xmlgen.pro >Makefile.xmlgen $(ENV) $(PERL) $(TMAKE) xmlgen.pro >Makefile.xmlgen
...@@ -140,6 +140,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -140,6 +140,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_man_output MAN_OUTPUT <li> \refitem cfg_man_output MAN_OUTPUT
<li> \refitem cfg_max_dot_graph_height MAX_DOT_GRAPH_HEIGHT <li> \refitem cfg_max_dot_graph_height MAX_DOT_GRAPH_HEIGHT
<li> \refitem cfg_max_dot_graph_width MAX_DOT_GRAPH_WIDTH <li> \refitem cfg_max_dot_graph_width MAX_DOT_GRAPH_WIDTH
<li> \refitem cfg_optimize_output_for_c OPTIMIZE_OUTPUT_FOR_C
<li> \refitem cfg_output_directory OUTPUT_DIRECTORY <li> \refitem cfg_output_directory OUTPUT_DIRECTORY
<li> \refitem cfg_output_language OUTPUT_LANGUAGE <li> \refitem cfg_output_language OUTPUT_LANGUAGE
<li> \refitem cfg_paper_type PAPER_TYPE <li> \refitem cfg_paper_type PAPER_TYPE
...@@ -445,6 +446,14 @@ followed by the descriptions of the tags grouped by category. ...@@ -445,6 +446,14 @@ followed by the descriptions of the tags grouped by category.
will result in a user defined paragraph with heading "Side Effects:". will result in a user defined paragraph with heading "Side Effects:".
You can put \\n's in the value part of an alias to insert newlines. You can put \\n's in the value part of an alias to insert newlines.
\anchor cfg_optimize_output_for_c
<dt>\c OPTIMIZE_OUTPUT_FOR_C
\addindex OPTIMIZE_OUTPUT_FOR_C
Set the \c OPTIMIZE_OUTPUT_FOR_C tag to \c YES if your project consists
of C sources only. Doxygen will then generate output that is more tailored
for C. For instance some of the names that are used will be different.
The list of all members will be omitted, etc.
</dl> </dl>
\subsection messages_input Options related to warning and progress messages \subsection messages_input Options related to warning and progress messages
......
Name: doxygen Name: doxygen
Version: 1.2.4-20010121 Version: 1.2.4-20010128
Summary: documentation system for C, C++ and IDL Summary: documentation system for C, C++ and IDL
Release: 1 Release: 1
Source0: doxygen-%{version}.src.tar.gz Source0: doxygen-%{version}.src.tar.gz
......
...@@ -897,7 +897,7 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -897,7 +897,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
} }
// write link to list of all members (HTML only) // write link to list of all members (HTML only)
if (allMemberNameInfoList->count()>0 /*&& compType==Class*/) if (allMemberNameInfoList->count()>0 && !Config::optimizeForCFlag)
{ {
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
ol.startTextLink(memListFileName,0); ol.startTextLink(memListFileName,0);
...@@ -1179,7 +1179,7 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -1179,7 +1179,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
// write the list of all (inherited) members for this class // write the list of all (inherited) members for this class
void ClassDef::writeMemberList(OutputList &ol) void ClassDef::writeMemberList(OutputList &ol)
{ {
if (allMemberNameInfoList->count()==0) return; if (allMemberNameInfoList->count()==0 || Config::optimizeForCFlag) return;
// only for HTML // only for HTML
ol.pushGeneratorState(); ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
...@@ -1208,7 +1208,6 @@ void ClassDef::writeMemberList(OutputList &ol) ...@@ -1208,7 +1208,6 @@ void ClassDef::writeMemberList(OutputList &ol)
if (mi->prot==Protected) // inherited protection if (mi->prot==Protected) // inherited protection
{ {
if (protect==Public) protect=Protected; if (protect==Public) protect=Protected;
else if (protect==Protected) protect=Private;
} }
//printf("Member %s of class %s mi->prot=%d prot=%d\n", //printf("Member %s of class %s mi->prot=%d prot=%d\n",
...@@ -1646,11 +1645,25 @@ void ClassDef::mergeMembers() ...@@ -1646,11 +1645,25 @@ void ClassDef::mergeMembers()
MemberInfo *mi; MemberInfo *mi;
for (;(mi=mnii.current());++mnii) for (;(mi=mnii.current());++mnii)
{ {
if (mi->memberDef->protection()!=Private) Protection prot = mi->memberDef->protection();
if (bcd->prot==Protected)
{
if (prot==Public) prot=Protected;
}
else if (bcd->prot==Private)
{
prot=Private;
}
//printf("%s::%s: prot=%d bcd->prot=%d result=%d\n",
// name().data(),mi->memberDef->name().data(),mi->memberDef->protection(),
// bcd->prot,prot);
if (prot!=Private)
{ {
Specifier virt=mi->virt; Specifier virt=mi->virt;
if (mi->virt==Normal && bcd->virt!=Normal) virt=bcd->virt; if (mi->virt==Normal && bcd->virt!=Normal) virt=bcd->virt;
MemberInfo *newMi=new MemberInfo(mi->memberDef,bcd->prot,virt);
MemberInfo *newMi=new MemberInfo(mi->memberDef,prot,virt);
newMi->scopePath=bClass->name()+"::"+mi->scopePath; newMi->scopePath=bClass->name()+"::"+mi->scopePath;
newMi->ambigClass=mi->ambigClass; newMi->ambigClass=mi->ambigClass;
newMi->ambiguityResolutionScope=mi->ambiguityResolutionScope.copy(); newMi->ambiguityResolutionScope=mi->ambiguityResolutionScope.copy();
......
/* This file was generated by configgen on Sun Jan 14 14:24:47 2001 /* This file was generated by configgen on Sat Jan 27 18:27:32 2001
* from config_templ.h * from config_templ.h
* *
* DO NOT EDIT! * DO NOT EDIT!
...@@ -70,6 +70,7 @@ struct Config ...@@ -70,6 +70,7 @@ struct Config
static bool generateTodoList; // do we want a todo list? static bool generateTodoList; // do we want a todo list?
static bool generateTestList; // do we want a test list? static bool generateTestList; // do we want a test list?
static QStrList aliasList; // list of aliases static QStrList aliasList; // list of aliases
static bool optimizeForCFlag; // do we parse C code?
static bool quietFlag; // generate progress messages flag static bool quietFlag; // generate progress messages flag
static bool warningFlag; // generate warnings flag static bool warningFlag; // generate warnings flag
static bool warningUndocFlag; // generate undocumented warnings static bool warningUndocFlag; // generate undocumented warnings
...@@ -116,7 +117,6 @@ struct Config ...@@ -116,7 +117,6 @@ struct Config
static bool generateMan; // generate Man pages static bool generateMan; // generate Man pages
static QCString manOutputDir; // the directory to put the man pages static QCString manOutputDir; // the directory to put the man pages
static QCString manExtension; // extension the man page files static QCString manExtension; // extension the man page files
static bool generateXML; // generate XML output
static bool preprocessingFlag; // enable preprocessing static bool preprocessingFlag; // enable preprocessing
static bool macroExpansionFlag; // expand macros in the source. static bool macroExpansionFlag; // expand macros in the source.
static bool onlyPredefinedFlag; // expand only predefined macros static bool onlyPredefinedFlag; // expand only predefined macros
......
/* This file was generated by configgen on Sun Jan 14 14:24:47 2001 /* This file was generated by configgen on Sat Jan 27 18:27:33 2001
* from config_templ.l * from config_templ.l
* *
* DO NOT EDIT! * DO NOT EDIT!
...@@ -107,6 +107,7 @@ QStrList Config::sectionFilterList; ...@@ -107,6 +107,7 @@ QStrList Config::sectionFilterList;
bool Config::generateTodoList = TRUE; bool Config::generateTodoList = TRUE;
bool Config::generateTestList = TRUE; bool Config::generateTestList = TRUE;
QStrList Config::aliasList; QStrList Config::aliasList;
bool Config::optimizeForCFlag = FALSE;
bool Config::quietFlag = FALSE; bool Config::quietFlag = FALSE;
bool Config::warningFlag = TRUE; bool Config::warningFlag = TRUE;
bool Config::warningUndocFlag = TRUE; bool Config::warningUndocFlag = TRUE;
...@@ -153,7 +154,6 @@ QCString Config::rtfStylesheetFile; ...@@ -153,7 +154,6 @@ QCString Config::rtfStylesheetFile;
bool Config::generateMan = TRUE; bool Config::generateMan = TRUE;
QCString Config::manOutputDir = "man"; QCString Config::manOutputDir = "man";
QCString Config::manExtension = ".3"; QCString Config::manExtension = ".3";
bool Config::generateXML = FALSE;
bool Config::preprocessingFlag = TRUE; bool Config::preprocessingFlag = TRUE;
bool Config::macroExpansionFlag = FALSE; bool Config::macroExpansionFlag = FALSE;
bool Config::onlyPredefinedFlag = FALSE; bool Config::onlyPredefinedFlag = FALSE;
...@@ -379,6 +379,7 @@ static void readIncludeFile(const char *incName) ...@@ -379,6 +379,7 @@ static void readIncludeFile(const char *incName)
<Start>"GENERATE_TESTLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateTestList; } <Start>"GENERATE_TESTLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateTestList; }
<Start>"ALIASES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::aliasList; l->clear(); elemStr=""; } <Start>"ALIASES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::aliasList; l->clear(); elemStr=""; }
<Start>"ALIASES"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::aliasList; elemStr=""; } <Start>"ALIASES"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::aliasList; elemStr=""; }
<Start>"OPTIMIZE_OUTPUT_FOR_C"[ \t]*"=" { BEGIN(GetBool); b=&Config::optimizeForCFlag; }
<Start>"QUIET"[ \t]*"=" { BEGIN(GetBool); b=&Config::quietFlag; } <Start>"QUIET"[ \t]*"=" { BEGIN(GetBool); b=&Config::quietFlag; }
<Start>"WARNINGS"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningFlag; } <Start>"WARNINGS"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningFlag; }
<Start>"WARN_IF_UNDOCUMENTED"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningUndocFlag; } <Start>"WARN_IF_UNDOCUMENTED"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningUndocFlag; }
...@@ -434,7 +435,6 @@ static void readIncludeFile(const char *incName) ...@@ -434,7 +435,6 @@ static void readIncludeFile(const char *incName)
<Start>"GENERATE_MAN"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateMan; } <Start>"GENERATE_MAN"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateMan; }
<Start>"MAN_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::manOutputDir; s->resize(0); } <Start>"MAN_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::manOutputDir; s->resize(0); }
<Start>"MAN_EXTENSION"[ \t]*"=" { BEGIN(GetString); s=&Config::manExtension; s->resize(0); } <Start>"MAN_EXTENSION"[ \t]*"=" { BEGIN(GetString); s=&Config::manExtension; s->resize(0); }
<Start>"GENERATE_XML"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateXML; }
<Start>"ENABLE_PREPROCESSING"[ \t]*"=" { BEGIN(GetBool); b=&Config::preprocessingFlag; } <Start>"ENABLE_PREPROCESSING"[ \t]*"=" { BEGIN(GetBool); b=&Config::preprocessingFlag; }
<Start>"MACRO_EXPANSION"[ \t]*"=" { BEGIN(GetBool); b=&Config::macroExpansionFlag; } <Start>"MACRO_EXPANSION"[ \t]*"=" { BEGIN(GetBool); b=&Config::macroExpansionFlag; }
<Start>"EXPAND_ONLY_PREDEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::onlyPredefinedFlag; } <Start>"EXPAND_ONLY_PREDEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::onlyPredefinedFlag; }
...@@ -628,6 +628,7 @@ void dumpConfig() ...@@ -628,6 +628,7 @@ void dumpConfig()
is=Config::aliasList.next(); is=Config::aliasList.next();
} }
} }
printf("optimizeForCFlag=`%d'\n",Config::optimizeForCFlag);
printf("# configuration options related to warning and progress messages\n"); printf("# configuration options related to warning and progress messages\n");
printf("quietFlag=`%d'\n",Config::quietFlag); printf("quietFlag=`%d'\n",Config::quietFlag);
printf("warningFlag=`%d'\n",Config::warningFlag); printf("warningFlag=`%d'\n",Config::warningFlag);
...@@ -744,8 +745,6 @@ void dumpConfig() ...@@ -744,8 +745,6 @@ void dumpConfig()
printf("generateMan=`%d'\n",Config::generateMan); printf("generateMan=`%d'\n",Config::generateMan);
printf("manOutputDir=`%s'\n",Config::manOutputDir.data()); printf("manOutputDir=`%s'\n",Config::manOutputDir.data());
printf("manExtension=`%s'\n",Config::manExtension.data()); printf("manExtension=`%s'\n",Config::manExtension.data());
printf("# configuration options related to the XML output\n");
printf("generateXML=`%d'\n",Config::generateXML);
printf("# Configuration options related to the preprocessor \n"); printf("# Configuration options related to the preprocessor \n");
printf("preprocessingFlag=`%d'\n",Config::preprocessingFlag); printf("preprocessingFlag=`%d'\n",Config::preprocessingFlag);
printf("macroExpansionFlag=`%d'\n",Config::macroExpansionFlag); printf("macroExpansionFlag=`%d'\n",Config::macroExpansionFlag);
...@@ -858,6 +857,7 @@ void Config::init() ...@@ -858,6 +857,7 @@ void Config::init()
Config::generateTodoList = TRUE; Config::generateTodoList = TRUE;
Config::generateTestList = TRUE; Config::generateTestList = TRUE;
Config::aliasList.clear(); Config::aliasList.clear();
Config::optimizeForCFlag = FALSE;
Config::quietFlag = FALSE; Config::quietFlag = FALSE;
Config::warningFlag = TRUE; Config::warningFlag = TRUE;
Config::warningUndocFlag = TRUE; Config::warningUndocFlag = TRUE;
...@@ -904,7 +904,6 @@ void Config::init() ...@@ -904,7 +904,6 @@ void Config::init()
Config::generateMan = TRUE; Config::generateMan = TRUE;
Config::manOutputDir = "man"; Config::manOutputDir = "man";
Config::manExtension = ".3"; Config::manExtension = ".3";
Config::generateXML = FALSE;
Config::preprocessingFlag = TRUE; Config::preprocessingFlag = TRUE;
Config::macroExpansionFlag = FALSE; Config::macroExpansionFlag = FALSE;
Config::onlyPredefinedFlag = FALSE; Config::onlyPredefinedFlag = FALSE;
...@@ -1383,6 +1382,18 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -1383,6 +1382,18 @@ void writeTemplateConfig(QFile *f,bool sl)
writeStringList(t,Config::aliasList); writeStringList(t,Config::aliasList);
t << "\n"; t << "\n";
if (!sl) if (!sl)
{
t << "\n";
t << "# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources \n";
t << "# only. Doxygen will then generate output that is more tailored for C. \n";
t << "# For instance some of the names that are used will be different. The list \n";
t << "# of all members will be omitted, etc. \n";
t << "\n";
}
t << "OPTIMIZE_OUTPUT_FOR_C = ";
writeBoolValue(t,Config::optimizeForCFlag);
t << "\n";
if (!sl)
{ {
t << "\n"; t << "\n";
} }
...@@ -1717,7 +1728,7 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -1717,7 +1728,7 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl) if (!sl)
{ {
t << "\n"; t << "\n";
t << "# If the GENERATE_TREEVIEW tag is set to YES, a side pannel will be\n"; t << "# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be\n";
t << "# generated containing a tree-like index structure (just like the one that \n"; t << "# generated containing a tree-like index structure (just like the one that \n";
t << "# is generated for HTML Help). For this to work a browser that supports \n"; t << "# is generated for HTML Help). For this to work a browser that supports \n";
t << "# JavaScript and frames is required (for instance Netscape 4.0+ \n"; t << "# JavaScript and frames is required (for instance Netscape 4.0+ \n";
...@@ -1953,25 +1964,6 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -1953,25 +1964,6 @@ void writeTemplateConfig(QFile *f,bool sl)
t << "\n"; t << "\n";
} }
t << "#---------------------------------------------------------------------------\n"; t << "#---------------------------------------------------------------------------\n";
t << "# configuration options related to the XML output\n";
t << "#---------------------------------------------------------------------------\n";
if (!sl)
{
t << "\n";
t << "# If the GENERATE_XML tag is set to YES Doxygen will \n";
t << "# generate an XML file that captures the structure of \n";
t << "# the code including all documentation. Warning: This feature \n";
t << "# is still experimental and very incomplete.\n";
t << "\n";
}
t << "GENERATE_XML = ";
writeBoolValue(t,Config::generateXML);
t << "\n";
if (!sl)
{
t << "\n";
}
t << "#---------------------------------------------------------------------------\n";
t << "# Configuration options related to the preprocessor \n"; t << "# Configuration options related to the preprocessor \n";
t << "#---------------------------------------------------------------------------\n"; t << "#---------------------------------------------------------------------------\n";
if (!sl) if (!sl)
...@@ -2912,9 +2904,13 @@ void checkConfig() ...@@ -2912,9 +2904,13 @@ void checkConfig()
} }
} }
#undef PUTENV
#if defined(_WIN32) #if defined(_WIN32)
if (Config::haveDotFlag) _putenv("DOTFONTPATH=."); #define PUTENV _putenv
#else
#define PUTENV putenv
#endif #endif
if (Config::haveDotFlag) PUTENV("DOTFONTPATH=.");
} }
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
int cppExpYYerror(const char *s) int cppExpYYerror(const char *s)
{ {
printf("ERROR: %s\n",s); printf("Error in constant expression evaluation: %s\n",s);
return 0; return 0;
} }
......
...@@ -116,8 +116,11 @@ void Definition::writeDocAnchorsToTagFile() ...@@ -116,8 +116,11 @@ void Definition::writeDocAnchorsToTagFile()
SectionInfo *si; SectionInfo *si;
for (;(si=sdi.current());++sdi) for (;(si=sdi.current());++sdi)
{ {
if (definitionType()==TypeMember) Doxygen::tagFile << " "; if (!si->generated)
Doxygen::tagFile << " <docanchor>" << si->label << "</docanchor>" << endl; {
if (definitionType()==TypeMember) Doxygen::tagFile << " ";
Doxygen::tagFile << " <docanchor>" << si->label << "</docanchor>" << endl;
}
} }
} }
} }
......
...@@ -1514,6 +1514,10 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1514,6 +1514,10 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
outDoc->endSection(sec->label, outDoc->endSection(sec->label,
sec->type==SectionInfo::Subsection); sec->type==SectionInfo::Subsection);
} }
else
{
warn(yyFileName,yyLineNr,"Warning: reference to unknown section %s in the documentation of this entity!",yytext);
}
} }
<DocScan>{CMD}"anchor "{ID}"\n" { <DocScan>{CMD}"anchor "{ID}"\n" {
QCString secName=&yytext[8]; QCString secName=&yytext[8];
...@@ -1580,8 +1584,10 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1580,8 +1584,10 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
<DocRefName>{SCOPENAME}|{FILE} { <DocRefName>{SCOPENAME}|{FILE} {
QCString ref=yytext; QCString ref=yytext;
SectionInfo *sec; SectionInfo *sec;
//printf(">>> ref `%s'\n",yytext);
if ((sec=Doxygen::sectionDict[ref])) if ((sec=Doxygen::sectionDict[ref]))
{ {
//printf("Is a section!\n");
QCString text; QCString text;
if (sec->title.isEmpty()) if (sec->title.isEmpty())
text=sec->label; text=sec->label;
...@@ -1598,7 +1604,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1598,7 +1604,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
else else
{ {
//printf(" ref sec=%p sec->fileName=%s text=%s\n",sec,sec->fileName.data(),text.data()); //printf(" ref sec=%p sec->fileName=%s text=%s\n",sec,sec->fileName.data(),text.data());
outDoc->writeSectionRef(sec->fileName,sec->label,text,sec->ref); outDoc->writeSectionRef(sec->ref,sec->fileName,sec->label,text);
} }
} }
else if (!generateLink(*outDoc,className,yytext,TRUE,0)) else if (!generateLink(*outDoc,className,yytext,TRUE,0))
...@@ -1631,7 +1637,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1631,7 +1637,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
} }
else else
{ {
outDoc->writeSectionRef(sec->fileName,sec->label,text,sec->ref); outDoc->writeSectionRef(sec->ref,sec->fileName,sec->label,text);
} }
} }
else if (!generateLink(*outDoc,className,sectionRef,TRUE,text)) else if (!generateLink(*outDoc,className,sectionRef,TRUE,text))
...@@ -1744,18 +1750,12 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1744,18 +1750,12 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
generateRef(*outDoc,className,yytext,inSeeBlock); generateRef(*outDoc,className,yytext,inSeeBlock);
BEGIN(DocScan); BEGIN(DocScan);
} }
<DocScan,DocRefName>({SCOPEMASK}"::")?"operator()"("("[a-z_A-Z0-9,\<\> \t\*\&]*")")? { <DocScan,DocRefName>({SCOPEMASK}"::")?"operator"{OPMASK} {
QCString oName=yytext; QCString oName=yytext;
generateRef(*outDoc,className, generateRef(*outDoc,className,
removeRedundantWhiteSpace(oName),inSeeBlock); removeRedundantWhiteSpace(oName),inSeeBlock);
BEGIN(DocScan); BEGIN(DocScan);
} }
<DocScan,DocRefName>({SCOPEMASK}"::")?"operator"[^(\r\n.,]+("("[a-z_A-Z0-9,\<\> \t\*\&]*")")? {
QCString oName=yytext;
generateRef(*outDoc,className,
removeRedundantWhiteSpace(oName),inSeeBlock);
BEGIN(DocScan);
}
<DocScan>("http:"|"https:"|"ftp:"|"file:"){URLMASK} { outDoc->writeHtmlLink(yytext,yytext); } <DocScan>("http:"|"https:"|"ftp:"|"file:"){URLMASK} { outDoc->writeHtmlLink(yytext,yytext); }
<DocScan>[a-zA-Z_0-9\.\-]+"@"[0-9a-z_A-Z\.\-]+ { outDoc->writeMailLink(yytext); } <DocScan>[a-zA-Z_0-9\.\-]+"@"[0-9a-z_A-Z\.\-]+ { outDoc->writeMailLink(yytext); }
<DocScan>{FILEMASK} { <DocScan>{FILEMASK} {
......
...@@ -2522,7 +2522,7 @@ static void addTodoTestReferences() ...@@ -2522,7 +2522,7 @@ static void addTodoTestReferences()
GroupDef *gd=Doxygen::groupList.first(); GroupDef *gd=Doxygen::groupList.first();
while (gd) while (gd)
{ {
addRefItem(gd->todoId(),gd->testId(),"group",gd->getOutputFileBase(),gd->name()); addRefItem(gd->todoId(),gd->testId(),"group",gd->getOutputFileBase(),gd->groupTitle());
gd=Doxygen::groupList.next(); gd=Doxygen::groupList.next();
} }
PageSDictIterator pdi(*Doxygen::pageSDict); PageSDictIterator pdi(*Doxygen::pageSDict);
...@@ -4798,6 +4798,7 @@ static void resolveUserReferences() ...@@ -4798,6 +4798,7 @@ static void resolveUserReferences()
if (si->label.left(5)=="_todo" || si->label.left(5)=="_test") if (si->label.left(5)=="_todo" || si->label.left(5)=="_test")
{ {
si->fileName=si->label.mid(1,4); // extract "todo" or "test" si->fileName=si->label.mid(1,4); // extract "todo" or "test"
si->generated=TRUE;
} }
} }
} }
...@@ -4839,7 +4840,7 @@ static void generatePageDocs() ...@@ -4839,7 +4840,7 @@ static void generatePageDocs()
endFile(*outputList); endFile(*outputList);
outputList->enable(OutputGenerator::Man); outputList->enable(OutputGenerator::Man);
if (!Config::genTagFile.isEmpty()) if (!Config::genTagFile.isEmpty() && pi->name!="todo" && pi->name!="test")
{ {
Doxygen::tagFile << " <compound kind=\"page\">" << endl; Doxygen::tagFile << " <compound kind=\"page\">" << endl;
Doxygen::tagFile << " <name>" << pi->name << "</name>" << endl; Doxygen::tagFile << " <name>" << pi->name << "</name>" << endl;
......
...@@ -42,7 +42,7 @@ GroupDef::GroupDef(const char *df,int dl,const char *na,const char *t) : ...@@ -42,7 +42,7 @@ GroupDef::GroupDef(const char *df,int dl,const char *na,const char *t) :
pageDict = new PageSDict(257); pageDict = new PageSDict(257);
exampleDict = new PageSDict(257); exampleDict = new PageSDict(257);
allMemberList = new MemberList; allMemberList = new MemberList;
allMemberDict = new QDict<MemberDef>; allMemberNameInfoDict = new MemberNameInfoDict(1009);
if (t) if (t)
title = t; title = t;
else else
...@@ -67,7 +67,7 @@ GroupDef::~GroupDef() ...@@ -67,7 +67,7 @@ GroupDef::~GroupDef()
delete pageDict; delete pageDict;
delete exampleDict; delete exampleDict;
delete allMemberList; delete allMemberList;
delete allMemberDict; delete allMemberNameInfoDict;
delete memberGroupList; delete memberGroupList;
delete memberGroupDict; delete memberGroupDict;
} }
...@@ -161,60 +161,77 @@ void GroupDef::addMembersToMemberGroup() ...@@ -161,60 +161,77 @@ void GroupDef::addMembersToMemberGroup()
void GroupDef::insertMember(MemberDef *md) void GroupDef::insertMember(MemberDef *md)
{ {
QCString funcDecl=md->name()+md->argsString(); //printf("GroupDef::insertMember(%s)\n",md->name().data());
if (allMemberDict->find(funcDecl)==0) MemberNameInfo *mni=0;
{ if ((mni=(*allMemberNameInfoDict)[md->name()]))
allMemberList->append(md); { // member with this name already found
allMemberDict->insert(funcDecl,md); MemberNameInfoIterator srcMnii(*mni);
switch(md->memberType()) MemberInfo *srcMi;
for ( ; (srcMi=srcMnii.current()) ; ++srcMnii )
{ {
case MemberDef::Variable: MemberDef *srcMd = srcMi->memberDef;
if (Config::sortMembersFlag) if (matchArguments(srcMd->argumentList(),md->argumentList()))
varMembers.inSort(md); {
else return; // member already added
varMembers.append(md); }
break;
case MemberDef::Function:
if (Config::sortMembersFlag)
funcMembers.inSort(md);
else
funcMembers.append(md);
break;
case MemberDef::Typedef:
if (Config::sortMembersFlag)
typedefMembers.inSort(md);
else
typedefMembers.append(md);
break;
case MemberDef::Enumeration:
if (Config::sortMembersFlag)
enumMembers.inSort(md);
else
enumMembers.append(md);
break;
case MemberDef::EnumValue:
if (Config::sortMembersFlag)
enumValMembers.inSort(md);
else
enumValMembers.append(md);
break;
case MemberDef::Prototype:
if (Config::sortMembersFlag)
protoMembers.inSort(md);
else
protoMembers.append(md);
break;
case MemberDef::Define:
if (Config::sortMembersFlag)
defineMembers.inSort(md);
else
defineMembers.append(md);
break;
default:
err("FileDef::insertMembers(): unexpected member insert in file!\n");
} }
//addMemberToGroup(md,groupId); mni->append(new MemberInfo(md,Public,Normal));
}
else
{
mni = new MemberNameInfo(md->name());
mni->append(new MemberInfo(md,Public,Normal));
allMemberNameInfoDict->insert(mni->memberName(),mni);
}
allMemberList->append(md);
switch(md->memberType())
{
case MemberDef::Variable:
if (Config::sortMembersFlag)
varMembers.inSort(md);
else
varMembers.append(md);
break;
case MemberDef::Function:
if (Config::sortMembersFlag)
funcMembers.inSort(md);
else
funcMembers.append(md);
break;
case MemberDef::Typedef:
if (Config::sortMembersFlag)
typedefMembers.inSort(md);
else
typedefMembers.append(md);
break;
case MemberDef::Enumeration:
if (Config::sortMembersFlag)
enumMembers.inSort(md);
else
enumMembers.append(md);
break;
case MemberDef::EnumValue:
if (Config::sortMembersFlag)
enumValMembers.inSort(md);
else
enumValMembers.append(md);
break;
case MemberDef::Prototype:
if (Config::sortMembersFlag)
protoMembers.inSort(md);
else
protoMembers.append(md);
break;
case MemberDef::Define:
if (Config::sortMembersFlag)
defineMembers.inSort(md);
else
defineMembers.append(md);
break;
default:
err("FileDef::insertMembers(): unexpected member insert in file!\n");
} }
//addMemberToGroup(md,groupId);
} }
void GroupDef::addGroup(const GroupDef *def) void GroupDef::addGroup(const GroupDef *def)
......
...@@ -36,6 +36,7 @@ class OutputList; ...@@ -36,6 +36,7 @@ class OutputList;
class NamespaceList; class NamespaceList;
class MemberGroupList; class MemberGroupList;
class MemberGroupDict; class MemberGroupDict;
class MemberNameInfoDict;
class PageSDict; class PageSDict;
class PageInfo; class PageInfo;
...@@ -86,8 +87,8 @@ class GroupDef : public Definition ...@@ -86,8 +87,8 @@ class GroupDef : public Definition
PageSDict *pageDict; // list of pages in the group PageSDict *pageDict; // list of pages in the group
PageSDict *exampleDict; // list of examples in the group PageSDict *exampleDict; // list of examples in the group
MemberList *allMemberList; // list of all members in the group MemberList *allMemberList;
QDict<MemberDef> *allMemberDict; MemberNameInfoDict *allMemberNameInfoDict;
// members sorted by type // members sorted by type
MemberList defineMembers; MemberList defineMembers;
......
...@@ -49,6 +49,7 @@ int documentedNamespaces; ...@@ -49,6 +49,7 @@ int documentedNamespaces;
int documentedNamespaceMembers; int documentedNamespaceMembers;
int documentedIncludeFiles; int documentedIncludeFiles;
int documentedPages; int documentedPages;
int indexedPages;
int documentedPackages; int documentedPackages;
int countClassHierarchy(); int countClassHierarchy();
...@@ -60,7 +61,7 @@ int countNamespaces(); ...@@ -60,7 +61,7 @@ int countNamespaces();
int countAnnotatedClasses(); int countAnnotatedClasses();
int countNamespaceMembers(); int countNamespaceMembers();
int countIncludeFiles(); int countIncludeFiles();
int countRelatedPages(); void countRelatedPages(int &docPages,int &indexPages);
int countPackages(); int countPackages();
void countDataStructures() void countDataStructures()
...@@ -70,10 +71,10 @@ void countDataStructures() ...@@ -70,10 +71,10 @@ void countDataStructures()
documentedMembers = countClassMembers(); documentedMembers = countClassMembers();
documentedFunctions = countFileMembers(); documentedFunctions = countFileMembers();
countFiles(documentedHtmlFiles,documentedFiles); countFiles(documentedHtmlFiles,documentedFiles);
countRelatedPages(documentedPages,indexedPages);
documentedGroups = countGroups(); documentedGroups = countGroups();
documentedNamespaces = countNamespaces(); documentedNamespaces = countNamespaces();
documentedNamespaceMembers = countNamespaceMembers(); documentedNamespaceMembers = countNamespaceMembers();
documentedPages = countRelatedPages();
documentedPackages = countPackages(); documentedPackages = countPackages();
} }
...@@ -249,7 +250,7 @@ void writeQuickLinks(OutputList &ol,bool compact ,bool ext=FALSE) ...@@ -249,7 +250,7 @@ void writeQuickLinks(OutputList &ol,bool compact ,bool ext=FALSE)
parseText(ol,theTranslator->trFileMembers()); parseText(ol,theTranslator->trFileMembers());
ol.endQuickIndexItem(); ol.endQuickIndexItem();
} }
if (documentedPages>0) if (indexedPages>0)
{ {
if (!compact) ol.writeListItem(); if (!compact) ol.writeListItem();
ol.startQuickIndexItem(extLink,"pages.html"); ol.startQuickIndexItem(extLink,"pages.html");
...@@ -780,36 +781,47 @@ void writeFileIndex(OutputList &ol) ...@@ -780,36 +781,47 @@ void writeFileIndex(OutputList &ol)
OutputNameList outputNameList; OutputNameList outputNameList;
outputNameList.setAutoDelete(TRUE); outputNameList.setAutoDelete(TRUE);
// re-sort input files in (dir,file) output order instead of (file,dir) input order if (Config::fullPathNameFlag)
FileName *fn=Doxygen::inputNameList.first();
while (fn)
{ {
FileDef *fd=fn->first(); // re-sort input files in (dir,file) output order instead of (file,dir) input order
while (fd) FileName *fn=Doxygen::inputNameList.first();
while (fn)
{ {
QCString path=fd->getPath(); FileDef *fd=fn->first();
if (path.isEmpty()) path="[external]"; while (fd)
FileList *fl = outputNameDict.find(path);
if (fl)
{ {
fl->inSort(fd); QCString path=fd->getPath();
//printf("+ inserting %s---%s\n",fd->getPath().data(),fd->name().data()); if (path.isEmpty()) path="[external]";
} FileList *fl = outputNameDict.find(path);
else if (fl)
{ {
//printf("o inserting %s---%s\n",fd->getPath().data(),fd->name().data()); fl->inSort(fd);
fl = new FileList(path); //printf("+ inserting %s---%s\n",fd->getPath().data(),fd->name().data());
fl->inSort(fd); }
outputNameList.inSort(fl); else
outputNameDict.insert(path,fl); {
//printf("o inserting %s---%s\n",fd->getPath().data(),fd->name().data());
fl = new FileList(path);
fl->inSort(fd);
outputNameList.inSort(fl);
outputNameDict.insert(path,fl);
}
fd=fn->next();
} }
fd=fn->next(); fn=Doxygen::inputNameList.next();
} }
fn=Doxygen::inputNameList.next();
} }
ol.startIndexList(); ol.startIndexList();
FileList *fl=outputNameList.first(); FileList *fl=0;
if (Config::fullPathNameFlag)
{
fl = outputNameList.first();
}
else
{
fl = Doxygen::inputNameList.first();
}
while (fl) while (fl)
{ {
FileDef *fd=fl->first(); FileDef *fd=fl->first();
...@@ -910,7 +922,14 @@ void writeFileIndex(OutputList &ol) ...@@ -910,7 +922,14 @@ void writeFileIndex(OutputList &ol)
} }
fd=fl->next(); fd=fl->next();
} }
fl=outputNameList.next(); if (Config::fullPathNameFlag)
{
fl=outputNameList.next();
}
else
{
fl=Doxygen::inputNameList.next();
}
} }
ol.endIndexList(); ol.endIndexList();
if (hasHtmlHelp) if (hasHtmlHelp)
...@@ -1944,16 +1963,19 @@ void writeExampleIndex(OutputList &ol) ...@@ -1944,16 +1963,19 @@ void writeExampleIndex(OutputList &ol)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
int countRelatedPages() void countRelatedPages(int &docPages,int &indexPages)
{ {
int count=0; docPages=indexPages=0;
PageSDictIterator pdi(*Doxygen::pageSDict); PageSDictIterator pdi(*Doxygen::pageSDict);
PageInfo *pi=0; PageInfo *pi=0;
for (pdi.toFirst();(pi=pdi.current());++pdi) for (pdi.toFirst();(pi=pdi.current());++pdi)
{ {
if (!pi->inGroup && !pi->isReference()) count++; if (!pi->inGroup)
{
indexPages++;
if (!pi->isReference()) docPages++;
}
} }
return count;
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
...@@ -1977,7 +1999,7 @@ int countPackages() ...@@ -1977,7 +1999,7 @@ int countPackages()
void writePageIndex(OutputList &ol) void writePageIndex(OutputList &ol)
{ {
if (documentedPages==0) return; if (indexedPages==0) return;
ol.pushGeneratorState(); ol.pushGeneratorState();
ol.disable(OutputGenerator::Man); ol.disable(OutputGenerator::Man);
startFile(ol,"pages","Page Index"); startFile(ol,"pages","Page Index");
...@@ -2013,7 +2035,7 @@ void writePageIndex(OutputList &ol) ...@@ -2013,7 +2035,7 @@ void writePageIndex(OutputList &ol)
PageInfo *pi=0; PageInfo *pi=0;
for (pdi.toFirst();(pi=pdi.current());++pdi) for (pdi.toFirst();(pi=pdi.current());++pdi)
{ {
if (!pi->inGroup && !pi->isReference()) if (!pi->inGroup /*&& !pi->isReference()*/)
{ {
QCString pageName,pageTitle; QCString pageName,pageTitle;
...@@ -2027,10 +2049,16 @@ void writePageIndex(OutputList &ol) ...@@ -2027,10 +2049,16 @@ void writePageIndex(OutputList &ol)
else else
pageTitle=pi->title; pageTitle=pi->title;
//ol.writeListItem(); ol.writeIndexItem(pi->getReference(),pi->getOutputFileBase(),pageTitle);
ol.writeStartAnnoItem("pages",pageName,0,pageTitle); if (pi->isReference())
//ol.writeObjectLink(0,pageName,0,pageTitle); {
ol.writeEndAnnoItem(pageName); ol.startTypewriter();
ol.docify(" [external]");
ol.endTypewriter();
}
//ol.writeStartAnnoItem("pages",pageName,0,pageTitle);
////ol.writeObjectLink(0,pageName,0,pageTitle);
//ol.writeEndAnnoItem(pageName);
ol.writeString("\n"); ol.writeString("\n");
if (hasHtmlHelp) htmlHelp->addContentsItem(FALSE,pageTitle,pageName); if (hasHtmlHelp) htmlHelp->addContentsItem(FALSE,pageTitle,pageName);
if (hasFtvHelp) ftvHelp->addContentsItem(FALSE,0,pageName,0,pageTitle); if (hasFtvHelp) ftvHelp->addContentsItem(FALSE,0,pageName,0,pageTitle);
...@@ -2535,7 +2563,7 @@ void writeIndex(OutputList &ol) ...@@ -2535,7 +2563,7 @@ void writeIndex(OutputList &ol)
parseText(ol,projPrefix+theTranslator->trFileIndex()); parseText(ol,projPrefix+theTranslator->trFileIndex());
ol.endIndexSection(isFileIndex); ol.endIndexSection(isFileIndex);
} }
if (documentedPages>0) if (indexedPages>0)
{ {
ol.startIndexSection(isPageIndex); ol.startIndexSection(isPageIndex);
parseText(ol,projPrefix+theTranslator->trPageIndex()); parseText(ol,projPrefix+theTranslator->trPageIndex());
...@@ -2578,7 +2606,7 @@ void writeIndex(OutputList &ol) ...@@ -2578,7 +2606,7 @@ void writeIndex(OutputList &ol)
parseText(ol,projPrefix+theTranslator->trExampleDocumentation()); parseText(ol,projPrefix+theTranslator->trExampleDocumentation());
ol.endIndexSection(isExampleDocumentation); ol.endIndexSection(isExampleDocumentation);
} }
if (Doxygen::pageSDict->count()>0) if (documentedPages>0)
{ {
ol.startIndexSection(isPageDocumentation); ol.startIndexSection(isPageDocumentation);
parseText(ol,projPrefix+theTranslator->trPageDocumentation()); parseText(ol,projPrefix+theTranslator->trPageDocumentation());
......
...@@ -81,6 +81,7 @@ extern int documentedNamespaces; ...@@ -81,6 +81,7 @@ extern int documentedNamespaces;
extern int documentedNamespaceMembers; extern int documentedNamespaceMembers;
extern int documentedIncludeFiles; extern int documentedIncludeFiles;
extern int documentedPages; extern int documentedPages;
extern int indexedPages;
extern int documentedPackages; extern int documentedPackages;
void startTitle(OutputList &ol,const char *fileName); void startTitle(OutputList &ol,const char *fileName);
......
/******************************************************************************
*
*
*
*
* Copyright (C) 1997-2001 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.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#include "doxygen.h" #include "doxygen.h"
/*! \file /*! \file
......
...@@ -368,7 +368,7 @@ class OutputGenerator : public BaseOutputDocInterface ...@@ -368,7 +368,7 @@ class OutputGenerator : public BaseOutputDocInterface
QStack<bool> *genStack; QStack<bool> *genStack;
}; };
/*! \brief Base Interface used for generating documentation. /*! \brief Interface used for generating documentation.
* *
* This abstract class is used by the documentation block * This abstract class is used by the documentation block
* parser to generate the output for a specific format. * parser to generate the output for a specific format.
......
...@@ -1240,9 +1240,9 @@ BN [ \t\r\n] ...@@ -1240,9 +1240,9 @@ BN [ \t\r\n]
} }
<IgnoreLine>. <IgnoreLine>.
<Command>. <Command>.
<UndefName>{ID} { <UndefName>{ID} {
Define *def; Define *def;
if ((def=isDefined(yytext))) if ((def=isDefined(yytext)) && !def->isPredefined)
{ {
//printf("undefining %s\n",yytext); //printf("undefining %s\n",yytext);
def->undef=TRUE; def->undef=TRUE;
......
...@@ -273,6 +273,7 @@ static void addSection() ...@@ -273,6 +273,7 @@ static void addSection()
warn(yyFileName,yyLineNr, warn(yyFileName,yyLineNr,
"Warning: Duplicate label %s found!",sectionLabel.data()); "Warning: Duplicate label %s found!",sectionLabel.data());
} }
sectionTitle.resize(0);
} }
// Adds a formula text to the list/dictionary of formulas if it was // Adds a formula text to the list/dictionary of formulas if it was
...@@ -1385,6 +1386,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -1385,6 +1386,7 @@ TITLE [tT][iI][tT][lL][eE]
current->name.resize(0); current->name.resize(0);
current->args.resize(0); current->args.resize(0);
current->initializer.resize(0); current->initializer.resize(0);
current->bitfields.resize(0);
int i=oldType.length(); int i=oldType.length();
while (i>0 && (oldType[i-1]=='*' || oldType[i-1]=='&' || oldType[i-1]==' ')) i--; while (i>0 && (oldType[i-1]=='*' || oldType[i-1]=='&' || oldType[i-1]==' ')) i--;
current->type = oldType.left(i); current->type = oldType.left(i);
...@@ -3085,8 +3087,8 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -3085,8 +3087,8 @@ TITLE [tT][iI][tT][lL][eE]
<SectionTitle>[^\n*]*/"\n" { <SectionTitle>[^\n*]*/"\n" {
sectionTitle+=yytext; sectionTitle+=yytext;
sectionTitle=sectionTitle.stripWhiteSpace(); sectionTitle=sectionTitle.stripWhiteSpace();
addSection();
current->doc += "\\section "+sectionLabel+"\n"; current->doc += "\\section "+sectionLabel+"\n";
addSection();
BEGIN(PageDoc); BEGIN(PageDoc);
} }
<SectionTitle>"*" { <SectionTitle>"*" {
......
...@@ -30,7 +30,7 @@ struct SectionInfo ...@@ -30,7 +30,7 @@ struct SectionInfo
{ {
enum SectionType { Section, Subsection, Anchor }; enum SectionType { Section, Subsection, Anchor };
SectionInfo(const char *l,const char *t,SectionType st,const char *r=0) SectionInfo(const char *l,const char *t,SectionType st,const char *r=0)
{ label=l; title=t; type=st; ref=r; definition=0; pageRef=0; } { label=l; title=t; type=st; ref=r; definition=0; pageRef=0; generated=FALSE; }
~SectionInfo() {} ~SectionInfo() {}
QCString label; QCString label;
QCString title; QCString title;
...@@ -39,6 +39,7 @@ struct SectionInfo ...@@ -39,6 +39,7 @@ struct SectionInfo
Definition *definition; Definition *definition;
PageInfo *pageRef; PageInfo *pageRef;
QCString fileName; QCString fileName;
bool generated;
}; };
class SectionDict : public QDict<SectionInfo> class SectionDict : public QDict<SectionInfo>
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include "doxygen.h" #include "doxygen.h"
#include "util.h" #include "util.h"
#include "message.h" #include "message.h"
//#include "reflist.h"
/*! Container for member specific info that can be read from a tagfile */ /*! Container for member specific info that can be read from a tagfile */
class TagMemberInfo class TagMemberInfo
...@@ -740,17 +741,36 @@ void TagFileParser::addDocAnchors(Entry *e,QStrList &l) ...@@ -740,17 +741,36 @@ void TagFileParser::addDocAnchors(Entry *e,QStrList &l)
while (s) while (s)
{ {
QCString *anchorName = new QCString(s); QCString *anchorName = new QCString(s);
if (Doxygen::sectionDict.find(*anchorName)==0) //if (anchorName->left(5)=="_todo")
{ //{
SectionInfo *si=new SectionInfo(*anchorName,*anchorName, // int todoItemId = todoList.addRefItem();
SectionInfo::Anchor,m_tagName); // char anchorLabel[12];
Doxygen::sectionDict.insert(*anchorName,si); // sprintf(anchorLabel,"_todo%06d",todoItemId);
e->anchors->append(anchorName); // RefItem *item = todoList.getRefItem(todoItemId);
} // item->listAnchor = anchorLabel;
else //}
{ //else if (anchorName->left(5)=="_test")
err("Duplicate anchor %s found\n",anchorName->data()); //{
} // int testItemId = testList.addRefItem();
// char anchorLabel[12];
// sprintf(anchorLabel,"_test%06d",testItemId);
// RefItem *item = testList.getRefItem(testItemId);
// item->listAnchor = anchorLabel;
//}
//else
//{
if (Doxygen::sectionDict.find(*anchorName)==0)
{
SectionInfo *si=new SectionInfo(*anchorName,*anchorName,
SectionInfo::Anchor,m_tagName);
Doxygen::sectionDict.insert(*anchorName,si);
e->anchors->append(anchorName);
}
else
{
err("Duplicate anchor %s found\n",anchorName->data());
}
//}
s=l.next(); s=l.next();
} }
} }
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include "qtbc.h" #include "qtbc.h"
#include "classdef.h" #include "classdef.h"
#include "util.h" #include "util.h"
#include "config.h"
class Translator class Translator
{ {
...@@ -167,7 +168,16 @@ class Translator ...@@ -167,7 +168,16 @@ class Translator
/*! header that is put before the list of member attributes. */ /*! header that is put before the list of member attributes. */
virtual QCString trMemberDataDocumentation() virtual QCString trMemberDataDocumentation()
{ return "Member Data Documentation"; } {
if (Config::optimizeForCFlag)
{
return "Field Documentation";
}
else
{
return "Member Data Documentation";
}
}
/*! this is the text of a link put after brief descriptions. */ /*! this is the text of a link put after brief descriptions. */
virtual QCString trMore() virtual QCString trMore()
...@@ -231,7 +241,16 @@ class Translator ...@@ -231,7 +241,16 @@ class Translator
/*! This is put above each page as a link to the list of annotated classes */ /*! This is put above each page as a link to the list of annotated classes */
virtual QCString trCompoundList() virtual QCString trCompoundList()
{ return "Compound List"; } {
if (Config::optimizeForCFlag)
{
return "Data Structures";
}
else
{
return "Compound List";
}
}
/*! This is put above each page as a link to the list of documented files */ /*! This is put above each page as a link to the list of documented files */
virtual QCString trFileList() virtual QCString trFileList()
...@@ -243,11 +262,29 @@ class Translator ...@@ -243,11 +262,29 @@ class Translator
/*! This is put above each page as a link to all members of compounds. */ /*! This is put above each page as a link to all members of compounds. */
virtual QCString trCompoundMembers() virtual QCString trCompoundMembers()
{ return "Compound Members"; } {
if (Config::optimizeForCFlag)
{
return "Data Fields";
}
else
{
return "Compound Members";
}
}
/*! This is put above each page as a link to all members of files. */ /*! This is put above each page as a link to all members of files. */
virtual QCString trFileMembers() virtual QCString trFileMembers()
{ return "File Members"; } {
if (Config::optimizeForCFlag)
{
return "Globals";
}
else
{
return "File Members";
}
}
/*! This is put above each page as a link to all related pages. */ /*! This is put above each page as a link to all related pages. */
virtual QCString trRelatedPages() virtual QCString trRelatedPages()
...@@ -278,8 +315,17 @@ class Translator ...@@ -278,8 +315,17 @@ class Translator
/*! This is an introduction to the annotated compound list. */ /*! This is an introduction to the annotated compound list. */
virtual QCString trCompoundListDescription() virtual QCString trCompoundListDescription()
{ return "Here are the classes, structs, " {
"unions and interfaces with brief descriptions:";
if (Config::optimizeForCFlag)
{
return "Here are the data structures with brief descriptions:";
}
else
{
return "Here are the classes, structs, "
"unions and interfaces with brief descriptions:";
}
} }
/*! This is an introduction to the page with all class members. */ /*! This is an introduction to the page with all class members. */
...@@ -300,11 +346,20 @@ class Translator ...@@ -300,11 +346,20 @@ class Translator
{ {
QCString result="Here is a list of all "; QCString result="Here is a list of all ";
if (!extractAll) result+="documented "; if (!extractAll) result+="documented ";
result+="file members with links to ";
if (Config::optimizeForCFlag)
{
result+="functions, variables, defines, enums, and typedefs";
}
else
{
result+="file members";
}
result+=" with links to ";
if (extractAll) if (extractAll)
result+="the file documentation for each member:";
else
result+="the files they belong to:"; result+="the files they belong to:";
else
result+="the documentation:";
return result; return result;
} }
...@@ -353,7 +408,16 @@ class Translator ...@@ -353,7 +408,16 @@ class Translator
* annotated compound index. * annotated compound index.
*/ */
virtual QCString trCompoundIndex() virtual QCString trCompoundIndex()
{ return "Compound Index"; } {
if (Config::optimizeForCFlag)
{
return "Data Structure Index";
}
else
{
return "Compound Index";
}
}
/*! This is used in LaTeX as the title of the chapter with the /*! This is used in LaTeX as the title of the chapter with the
* list of all files. * list of all files.
...@@ -487,7 +551,16 @@ class Translator ...@@ -487,7 +551,16 @@ class Translator
* the list of links to documented compounds * the list of links to documented compounds
*/ */
virtual QCString trCompounds() virtual QCString trCompounds()
{ return "Compounds"; } {
if (Config::optimizeForCFlag)
{
return "Data Structures";
}
else
{
return "Compounds";
}
}
/*! This is used in the documentation of a group before the list of /*! This is used in the documentation of a group before the list of
* links to documented files * links to documented files
...@@ -919,7 +992,14 @@ class Translator ...@@ -919,7 +992,14 @@ class Translator
} }
virtual QCString trPublicAttribs() virtual QCString trPublicAttribs()
{ {
return "Public Attributes"; if (Config::optimizeForCFlag)
{
return "Data Fields";
}
else
{
return "Public Attributes";
}
} }
virtual QCString trStaticPublicAttribs() virtual QCString trStaticPublicAttribs()
{ {
......
...@@ -20,24 +20,30 @@ ...@@ -20,24 +20,30 @@
#include "translator.h" #include "translator.h"
// The translation from English to Czech by Vlastimil Havran. // The first translation from English to Czech was started by
// In the cases where are more translations possible I hope // Vlastimil Havran. He wrote:
// that I have selected the most reasonable text. If not, please, //
// mail the comments and text proposals to // "In the cases where are more translations possible I hope
// that I have selected the most reasonable text. If not, please,
// mail the comments and text proposals to
// //
// havran@fel.cvut.cz, 1999/04/11 // havran@fel.cvut.cz, 1999/04/11"
//
// The prototype version of Czech strings with diacritics was
// implemented by Petr Prikryl (prikrylp@skil.cz), 2000/06/20. As
// Vlastimil was quite busy at the time, he agreed that Petr be the
// second maintainer.
// //
// Updates: // Updates:
// -------- // --------
// 2000/06/20 // 2000/06/20 (Petr Prikryl)
// - The prototype version of Czech strings with diacritics implemented by // - The prototype version of Czech strings with diacritics. The
// Petr Prikryl (prikrylp@skil.cz). (Vlastimil Havran is still // translation was based on translator.h of Doxygen version
// the maintainer.) The translation was based on translator.h // 1.1.4 (from scratch).
// of Doxygen versison 1.1.4 (from scratch).
// //
// 2000/07/10 (Petr Prikryl) // 2000/07/10 (Petr Prikryl)
// - Updated version based on 1.1.5 sources (including important updates // - Updated version based on 1.1.5 sources (including important updates
// of the up-to-1.1.4 strings). Czech strings this file were written // of the up-to-1.1.4 strings). Czech strings in this file were written
// in windows-1250 encoding. On-line decoding into iso-8859-2 ensured // in windows-1250 encoding. On-line decoding into iso-8859-2 ensured
// via conditional compilation if the sources are compiled under UNIX. // via conditional compilation if the sources are compiled under UNIX.
// //
...@@ -73,14 +79,19 @@ ...@@ -73,14 +79,19 @@
// //
// 2000/10/17 (Petr Prikryl) // 2000/10/17 (Petr Prikryl)
// - Update for "new since 1.2.2" version. // - Update for "new since 1.2.2" version.
//
// 2001/01/09 (Petr Prikryl)
// - Update for "new since 1.2.4" version. As I do not use Java,
// I tried my best to guess the Czech terminology for the Java.
// Let me know if some wording should be changed/improved.
// //
// Notices: // Notices:
// -------- // --------
// The conditional compilation ensures or the neutral functionality // The conditional compilation ensures or the neutral functionality
// of the private inline Decode(), or calling the WinToISO() method // of the private inline Decode(), or calling the WinToISO() method
// for on-line encoding conversion. If you want to maintain the // for on-line encoding conversion. If you want to maintain the
// source in the iso-8859-2, do convert the source encoding, change // source in the iso-8859-2, do convert the encoding of the source,
// the conditional definition of the inline Decode() using the // change the conditional definition of the inline Decode() using the
// method ISO88592ToWin1250() -- for conversion of strings for the // method ISO88592ToWin1250() -- for conversion of strings for the
// Windows version. The version which does not call the function is // Windows version. The version which does not call the function is
// probably slightly faster. // probably slightly faster.
...@@ -1126,6 +1137,46 @@ class TranslatorCzech : public Translator ...@@ -1126,6 +1137,46 @@ class TranslatorCzech : public Translator
{ {
return Decode("Dokumentace k vlastnosti"); return Decode("Dokumentace k vlastnosti");
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.2.4
//////////////////////////////////////////////////////////////////////////
/*! Used for Java interfaces in the summary section of Java packages */
virtual QCString trInterfaces()
{
return Decode("Rozhraní");
}
/*! Used for Java classes in the summary section of Java packages */
virtual QCString trClasses()
{
return Decode("Tøídy");
}
/*! Used as the title of a Java package */
virtual QCString trPackage(const char *name)
{
return Decode((QCString)"Balík "+name);
}
/*! Title of the package index page */
virtual QCString trPackageList()
{
return Decode("Seznam balíkù");
}
/*! The description of the package index page */
virtual QCString trPackageListDescription()
{
return Decode("Zde naleznete seznam balíkù se struèným popisem "
"(pokud byl uveden):");
}
/*! The link name in the Quick links header for each page */
virtual QCString trPackages()
{
return Decode("Balíky");
}
/*! Used as a chapter title for Latex & RTF output */
virtual QCString trPackageDocumentation()
{
return Decode("Dokumentace balíku");
}
}; };
#endif // TRANSLATOR_CZ_H #endif // TRANSLATOR_CZ_H
...@@ -383,7 +383,7 @@ class TranslatorGerman : public Translator ...@@ -383,7 +383,7 @@ class TranslatorGerman : public Translator
QCString trNamespaceList() QCString trNamespaceList()
// used as the title of page containing all the index of all namespaces. // used as the title of page containing all the index of all namespaces.
{ return "Lister aller Namensberiche"; } { return "Liste aller Namensbereiche"; }
QCString trNamespaceListDescription(bool extractAll) QCString trNamespaceListDescription(bool extractAll)
// used as an introduction to the namespace list // used as an introduction to the namespace list
{ {
......
...@@ -218,7 +218,7 @@ class TranslatorDutch : public Translator ...@@ -218,7 +218,7 @@ class TranslatorDutch : public Translator
QCString trAuthors() QCString trAuthors()
{ return "Auteur(s)"; } { return "Auteur(s)"; }
QCString trReturns() QCString trReturns()
{ return "Retourneerd"; } { return "Retourneert"; }
QCString trSeeAlso() QCString trSeeAlso()
{ return "Zie ook"; } { return "Zie ook"; }
QCString trParameters() QCString trParameters()
......
...@@ -158,6 +158,7 @@ int iSystem(const char *command,const char *args,bool isBatchFile) ...@@ -158,6 +158,7 @@ int iSystem(const char *command,const char *args,bool isBatchFile)
else if (sInfo.hProcess) /* executable was launched, wait for it to finish */ else if (sInfo.hProcess) /* executable was launched, wait for it to finish */
{ {
WaitForSingleObject(sInfo.hProcess,INFINITE); WaitForSingleObject(sInfo.hProcess,INFINITE);
CloseHandle(sInfo.hProcess);
} }
} }
return 0; return 0;
......
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