Commit 55d2ef84 authored by dimitri's avatar dimitri

Release-1.2.17-20020826

parent 17e35fd2
DOXYGEN Version 1.2.17-20020811
DOXYGEN Version 1.2.17-20020825
Please read the installation section of the manual for instructions.
--------
Dimitri van Heesch (11 August 2002)
Dimitri van Heesch (25 August 2002)
DOXYGEN Version 1.2.17_20020811
DOXYGEN Version 1.2.17_20020825
Please read INSTALL for compilation instructions.
......@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (11 August 2002)
Dimitri van Heesch (dimitri@stack.nl) (25 August 2002)
1.2.17-20020811
1.2.17-20020825
......@@ -27,7 +27,7 @@ f_prefix=/usr
f_insttool=NO
f_english=NO
f_wizard=NO
f_langs=nl,se,cz,fr,it,de,jp,es,fi,ru,hr,pl,pt,hu,kr,ro,si,cn,no,br,dk,sk,ua,gr,tw,sr
f_langs=nl,se,cz,fr,it,de,jp,es,fi,ru,hr,pl,pt,hu,kr,ro,si,cn,no,br,dk,sk,ua,gr,tw,sr,ca
while test -n "$1"; do
case $1 in
......@@ -493,7 +493,7 @@ echo -n " Generating src/lang_cfg.h..."
echo $f_langs | $f_perl -e '@l=split(/,/,<STDIN>);
chomp @l;
@allowed=(NL,SE,CZ,FR,IT,DE,JP,ES,FI,RU,HR,PL,PT,HU,KR,RO,SI,CN,NO,BR,
DK,SK,UA,GR,TW,SR);
DK,SK,UA,GR,TW,SR,CA);
foreach my $elem (@l){
$elem =~ tr/a-z/A-Z/;
$r=0;
......
......@@ -116,6 +116,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_graphical_hierarchy GRAPHICAL_HIERARCHY
\refitem cfg_have_dot HAVE_DOT
\refitem cfg_hhc_location HHC_LOCATION
\refitem cfg_hide_friend_compounds HIDE_FRIEND_COMPOUNDS
\refitem cfg_hide_scope_names HIDE_SCOPE_NAMES
\refitem cfg_hide_undoc_classes HIDE_UNDOC_CLASSES
\refitem cfg_hide_undoc_members HIDE_UNDOC_MEMBERS
......@@ -278,6 +279,14 @@ followed by the descriptions of the tags grouped by category.
various overviews.
This option has no effect if \c EXTRACT_ALL is enabled.
\anchor cfg_hide_friend_compounds
<dt>\c HIDE_FRIEND_COMPOUNDS <dd>
\addindex HIDE_FRIEND_COMPOUNDS
If the \c HIDE_FRIEND_COMPOUNDS tag is set to \c YES, Doxygen will hide all
friend (class|struct|union) declarations.
If set to \c NO (the default) these declarations will be included in the
documentation.
\anchor cfg_brief_member_desc
<dt>\c BRIEF_MEMBER_DESC <dd>
\addindex BRIEF_MEMBER_DESC
......
......@@ -76,7 +76,7 @@
<li>Many new commands (there are now more than 60!) to document
more entities, to make the documentation look nicer, and to include
examples or pieces of examples.
<li>Enum types, enum values, typedefs, #defines, and files can now be
<li>Enum types, enum values, typedefs, \#defines, and files can now be
documented.
<li>Completely new documentation, that is now generated by Doxygen.
<li>A lot of small examples are now included.
......
......@@ -27,7 +27,7 @@ Version: $(VERSION)
<h2>Introduction</h2>
Doxygen is a documentation system for C++, C, Java, IDL
(Corba, Microsoft, and KDE-DCOP flavors) and to some extend PHP.
(Corba, Microsoft, and KDE-DCOP flavors) and to some extent PHP.
It can help you in three ways:
<ol>
......@@ -179,8 +179,8 @@ Thanks go to:
<li>Petr Prikryl for coordinating the internationalisation support.
All language maintainers for providing translations into many languages.
<li>Erik Jan Lingen of <a href="http://www.habanera.nl/">Habanera</a>, Mark
Roddy, Paul Schwartz, Charles Duffy, Vadym Voznyuk, Philip Walton and
Dwight Browne for donating money.
Roddy, Paul Schwartz, Charles Duffy, Vadym Voznyuk, Philip Walton,
Dwight Browne, and Andreas Fredriksson for donating money.
<li>The Comms group of <a href="http://www.symbian.com">Symbian</a> for donating
an ultra cool <a href="http://www.psion.com/revoplus">Revo plus</a>
organizer!
......
......@@ -58,12 +58,12 @@ tools should be installed.
\addindex Qt
This is needed to build the GUI front-end.
<li>A \f$\mbox{\LaTeX}\f$ distribution: for instance
<a href="http://www.tug.org/">teTeX 1.0</a>.<br>
\latexonly(see {\tt http://www.tug.org/})\endlatexonly.
<a href="http://www.tug.org/">teTeX 1.0</a>
\latexonly \\par (see {\tt http://www.tug.org/})\endlatexonly.
This is needed for generating LaTeX, Postscript, and PDF output.
<li><a href="http://www.research.att.com/sw/tools/graphviz/">
the Graph visualization toolkit version 1.5</a><br>
\latexonly(see {\tt http://www.research.att.com/sw/tools/graphviz/})\endlatexonly.
the Graph visualization toolkit version 1.5</a>
\latexonly \\par (see {\tt http://www.research.att.com/sw/tools/graphviz/})\endlatexonly.
Needed for the include dependency graphs,
the graphical inheritance graphs, and the collaboration graphs.
If you compile graphviz yourself, make sure you do include
......@@ -142,17 +142,17 @@ Compilation is now done by performing the following steps:
<code>index.html</code> in the
html directory).
<li>Optional: Generate a PostScript and PDF version of the manual
(you will need <code>latex</code> and <code>dvips</code> and
the ghostscript package for this).
<li>Optional: Generate a PDF version of the manual
(you will need <code>pdflatex</code>, <code>makeindex</code>, and
<code>egrep</code> for this).
\verbatim
make pdf
\endverbatim
The PostScript manual <code>doxygen_manual.ps</code> will be located
in the latex directory of the distribution. Just send it to a
PostScript printer to print it or use <code>ghostview</code> to view it.
The PDF manual <code>doxygen_manual.pdf</code> will be located
in the latex directory of the distribution. Just
view and print it via the acrobat reader.
</ol>
......
......@@ -25,14 +25,14 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time.
Currently (version 1.2.17-20020804), 27 languages
Currently (version 1.2.14-20020317), 28 languages
are supported (sorted alphabetically):
Brazilian Portuguese, Chinese, Chinese Traditional, Croatian, Czech,
Danish, Dutch, English, Finnish, French,
German, Greek, Hungarian, Italian, Japanese,
Korean, Norwegian, Polish, Portuguese, Romanian,
Russian, Serbian, Slovak, Slovene, Spanish,
Swedish, and Ukrainian.
Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian,
Czech, Danish, Dutch, English, Finnish,
French, German, Greek, Hungarian, Italian,
Japanese, Korean, Norwegian, Polish, Portuguese,
Romanian, Russian, Serbian, Slovak, Slovene,
Spanish, Swedish, and Ukrainian.
The table of information related to the supported languages follows.
It is sorted by language alphabetically. The <b>Status</b> column
......@@ -57,6 +57,12 @@ when the translator was updated.
<TD>chino@NOSPAM.icmc.sc.usp.br</TD>
<TD>up-to-date</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Catalan</TD>
<TD>Albert Mora</TD>
<TD>amora@NOSPAM.iua.upf.es</TD>
<TD>up-to-date</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Chinese</TD>
<TD>Wei Liu<br>Wang Weihan</TD>
......@@ -157,7 +163,7 @@ when the translator was updated.
<TD>Polish</TD>
<TD>Piotr Kaminski<br>Grzegorz Kowal</TD>
<TD>Piotr.Kaminski@NOSPAM.ctm.gdynia.pl<br>g_kowal@NOSPAM.poczta.onet.pl</TD>
<TD>1.2.16</TD>
<TD>1.2.17</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Portuguese</TD>
......@@ -181,7 +187,7 @@ when the translator was updated.
<TD>Serbian</TD>
<TD>Dejan Milosavljevic</TD>
<TD>dmilos@NOSPAM.email.com</TD>
<TD>1.2.16</TD>
<TD>1.2.17</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Slovak</TD>
......@@ -226,6 +232,8 @@ when the translator was updated.
\hline
Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt chino@icmc.sc.usp.br} & up-to-date \\
\hline
Catalan & Albert Mora & {\tt amora@iua.upf.es} & up-to-date \\
\hline
Chinese & Wei Liu & {\tt liuwei@asiainfo.com} & 1.2.13 \\
& Wang Weihan & {\tt wangweihan@capinfo.com.cn} & \\
\hline
......@@ -262,7 +270,7 @@ when the translator was updated.
\hline
Norwegian & Lars Erik Jordet & {\tt lej@circuitry.no} & 1.2.2 \\
\hline
Polish & Piotr Kaminski & {\tt Piotr.Kaminski@ctm.gdynia.pl} & 1.2.16 \\
Polish & Piotr Kaminski & {\tt Piotr.Kaminski@ctm.gdynia.pl} & 1.2.17 \\
& Grzegorz Kowal & {\tt g\_kowal@poczta.onet.pl} & \\
\hline
Portuguese & Rui Godinho Lopes & {\tt ruiglopes@yahoo.com} & up-to-date \\
......@@ -271,7 +279,7 @@ when the translator was updated.
\hline
Russian & Alexandr Chelpanov & {\tt cav@cryptopro.ru} & up-to-date \\
\hline
Serbian & Dejan Milosavljevic & {\tt dmilos@email.com} & 1.2.16 \\
Serbian & Dejan Milosavljevic & {\tt dmilos@email.com} & 1.2.17 \\
\hline
Slovak & Stanislav Kudl\'{a}\v{c} & {\tt skudlac@pobox.sk} & up-to-date \\
\hline
......
......@@ -62,8 +62,8 @@ Just follow these steps:
defines which language translators will be compiled into doxygen
executable. It is a kind of configuration file. If you are sure that
you do not need some of the languages, you can remove (comment out)
definitions of symbols for the languages, or you can say \c #undef
instead of \c #define for them.
definitions of symbols for the languages, or you can say \c \#undef
instead of \c \#define for them.
<li>Edit language.cpp:
Add a
\verbatim
......@@ -93,7 +93,7 @@ Just follow these steps:
<li>Edit <code>translator_xx.h</code>:
<ul>
<li>Rename <code>TRANSLATOR_EN_H</code> to <code>TRANSLATOR_XX_H</code>
twice (i.e. in the \c #ifndef and \c #define preprocessor commands at
twice (i.e. in the \c \#ifndef and \c \#define preprocessor commands at
the beginning of the file).
<li>Rename TranslatorEnglish to TranslatorYourLanguage
<li>In the member <code>idLanguage()</code> change "english" into the
......
......@@ -4,6 +4,9 @@
Brazilian
Fabio "FJTC" Jun Takada Chino: chino@icmc.sc.usp.br
Catalan
Albert Mora: amora@iua.upf.es
Chinese
Wei Liu: liuwei@asiainfo.com
Wang Weihan: wangweihan@capinfo.com.cn
......
......@@ -42,10 +42,10 @@ recursively scanned.
To simplify the creation of a configuration file, doxygen can create a
template configuration file for you. To do this call \c doxygen with the \c -g
option:
\verbatim
doxygen -g <config-file>
\endverbatim
where \<config-file\> is the name of the configuration file. If you omit
the file name, a file named \c Doxyfile will be created. If a file with the
name \<config-file\> already exists, doxygen will rename it to
......
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.2.17_20020811
Version: 1.2.17_20020825
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
......@@ -433,11 +433,7 @@ void ClassDef::internalInsertMember(MemberDef *md,
enumValMembers.append(md);
break;
case MemberDef::Function:
if (md->name()==localName() || // constructor
(md->name().find('~')!=-1 && // hack to detect destructor
md->name().find("operator")==-1
)
)
if (md->isConstructor() || md->isDestructor())
{
constructors.append(md);
}
......
......@@ -1247,7 +1247,7 @@ void Config::create()
"documentation generated by doxygen is written. Doxygen will use this \n"
"information to generate all constant output in the proper language. \n"
"The default language is English, other supported languages are: \n"
"Brazilian, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, \n"
"Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, \n"
"Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en \n"
"(Japanese with english messages), Korean, Norwegian, Polish, Portuguese, \n"
"Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish and Ukrainian.\n",
......@@ -1256,6 +1256,9 @@ void Config::create()
#ifdef LANG_BR
ce->addValue("Brazilian");
#endif
#ifdef LANG_CA
ce->addValue("Catalan");
#endif
#ifdef LANG_CN
ce->addValue("Chinese");
#endif
......@@ -1377,6 +1380,14 @@ void Config::create()
"overviews. This option has no effect if EXTRACT_ALL is enabled. \n",
FALSE
);
cb = addBool(
"HIDE_FRIEND_COMPOUNDS",
"If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all \n"
"friend (class|struct|union) declarations. \n"
"If set to NO (the default) these declarations will be included in the \n"
"documentation. \n",
FALSE
);
cb = addBool(
"BRIEF_MEMBER_DESC",
"If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will \n"
......
......@@ -55,7 +55,6 @@ Definition::Definition(const char *df,int dl,
m_partOfGroups=0;
m_specialListItems=0;
m_briefLine=1;
m_docFile=1;
}
Definition::~Definition()
......
......@@ -982,7 +982,7 @@ static void checkArgName(const QCString &name,bool isParam)
* @retval TRUE if name was found.
* @retval FALSE if name was not found.
*/
bool findDocsForMemberOrCompound(const char *commandName,
static bool findDocsForMemberOrCompound(const char *commandName,
QCString *pDoc,
Definition **pDef)
{
......@@ -1919,11 +1919,16 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
QCString secName=&yytext[8];
secName=secName.left(secName.length()-1);
SectionInfo *sec;
//printf("secName=%s\n",secName.data());
if ((sec=Doxygen::sectionDict[secName]))
{
//printf("writeAnchor %s_%s\n",sec->fileName.data(),sec->label.data());
outDoc->writeAnchor(sec->fileName,sec->label);
}
else
{
//printf("Section %s not found!\n",secName.data());
}
}
<DocScan>"\\_internalref"{B}+ { // for internal use only!
internalRefFile.resize(0);
......@@ -2128,6 +2133,7 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
}
<DocRtfImageOpt>\n {
writeImage(IT_RTF,0);
BEGIN(DocScan);
}
<DocRtfImageOpt>\"[^\n"]*\" {
curImageCaption=stripQuotes(yytext);
......@@ -2947,64 +2953,68 @@ void parseDoc(OutputDocInterface &od,const char *fileName,int startLine,
const char *clName,MemberDef *md,const QCString &docStr)
{
//printf("parseDoc doc=`%s'\n",docStr.data());
if (Debug::isFlagSet(Debug::Validate))
{
od.parseDoc(fileName,startLine,clName,md,docStr);
}
strcpy(yyFileName,fileName);
yyLineNr = startLine;
QCString docString=docStr;
resolveCopyDocCommands(clName,docString);
yyLineNr = startLine;
//printf("parseDoc(file=`%s',line=%d)\n",fileName,startLine);
initParser();
initParseCodeContext();
exampleDoc=FALSE; // do not cross reference with member docs
className=clName;
memberDef = md;
hasParamCommand = FALSE;
paramsFound.setAutoDelete(FALSE);
paramsFound.clear();
parseDocument(od,docString);
if (md && hasParamCommand && Config_getBool("WARN_IF_UNDOCUMENTED"))
else
{
ArgumentList *al=memberDef->isDocsForDefinition() ?
memberDef->argumentList() :
memberDef->declArgumentList();
if (al)
strcpy(yyFileName,fileName);
yyLineNr = startLine;
QCString docString=docStr;
resolveCopyDocCommands(clName,docString);
yyLineNr = startLine;
//printf("parseDoc(file=`%s',line=%d)\n",fileName,startLine);
initParser();
initParseCodeContext();
exampleDoc=FALSE; // do not cross reference with member docs
className=clName;
memberDef = md;
hasParamCommand = FALSE;
paramsFound.setAutoDelete(FALSE);
paramsFound.clear();
parseDocument(od,docString);
if (md && hasParamCommand && Config_getBool("WARN_IF_UNDOCUMENTED"))
{
ArgumentListIterator ali(*al);
Argument *a;
bool found=FALSE;
for (ali.toFirst();(a=ali.current());++ali)
{
QCString argName = memberDef->isDefine() ? a->type : a->name;
if (argName.right(3)=="...") argName=argName.left(argName.length()-3);
if (!argName.isEmpty() && paramsFound.find(argName)==0)
{
found = TRUE;
break;
}
}
if (found)
ArgumentList *al=memberDef->isDocsForDefinition() ?
memberDef->argumentList() :
memberDef->declArgumentList();
if (al)
{
QCString scope=memberDef->getScopeString();
if (!scope.isEmpty()) scope+="::"; else scope="";
warn(memberDef->docFile(),memberDef->docLine(),
"Warning: The following parameters of "
"%s%s%s are not documented:",
scope.data(),memberDef->name().data(),
argListToString(al).data());
ArgumentListIterator ali(*al);
Argument *a;
bool found=FALSE;
for (ali.toFirst();(a=ali.current());++ali)
{
QCString argName = memberDef->isDefine() ? a->type : a->name;
QCString argName = memberDef->isDefine() ? a->type : a->name;
if (argName.right(3)=="...") argName=argName.left(argName.length()-3);
if (!argName.isEmpty() && paramsFound.find(argName)==0)
{
warn_cont( " parameter %s\n",argName.data());
found = TRUE;
break;
}
}
if (found)
{
QCString scope=memberDef->getScopeString();
if (!scope.isEmpty()) scope+="::"; else scope="";
warn(memberDef->docFile(),memberDef->docLine(),
"Warning: The following parameters of "
"%s%s%s are not documented:",
scope.data(),memberDef->name().data(),
argListToString(al).data());
for (ali.toFirst();(a=ali.current());++ali)
{
QCString argName = memberDef->isDefine() ? a->type : a->name;
if (!argName.isEmpty() && paramsFound.find(argName)==0)
{
warn_cont( " parameter %s\n",argName.data());
}
}
}
}
......
This diff is collapsed.
This diff is collapsed.
......@@ -235,7 +235,11 @@ OPCAST {BLANK}+[^(\r\n.,]+
OPMASK ({BLANK}*{OPNORM}({FUNCARG}?))|({OPCAST}{FUNCARG})
LNKWORD1 {SCOPEMASK}({FUNCARG}({BLANK}*("const"|"volatile"))?)?
LNKWORD2 {SCOPEPRE}*"operator"{OPMASK}
WORD [^ \t\n\r\\@<>&$#,.]+
WORD1 [^ \t\n\r\\@<>&$#,.]+
WORD2 "."|","
WORD1NQ [^ \t\n\r\\@<>&$#,."]+
WORD2NQ "."|","
HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
%option noyywrap
%option yylineno
......@@ -243,6 +247,10 @@ WORD [^ \t\n\r\\@<>&$#,.]+
%x St_Para
%x St_Comment
%x St_Title
%x St_TitleN
%x St_TitleQ
%x St_TitleA
%x St_TitleV
%x St_Code
%x St_HtmlOnly
%x St_LatexOnly
......@@ -317,13 +325,13 @@ WORD [^ \t\n\r\\@<>&$#,.]+
g_token->text = tagName.mid(i+1,tagName.length()-i-2);
return TK_RCSTAG;
}
<St_Para>"$("{ID}")" { /* environment variable */
<St_Para,St_HtmlOnly>"$("{ID}")" { /* environment variable */
QCString name = &yytext[2];
name = name.left(name.length()-1);
QCString value = getenv(name);
for (int i=value.length()-1;i>=0;i--) unput(value.at(i));
}
<St_Para>"<"(("/")?){ID}({BLANK}+{ATTRIB})*">" { /* html tag */
<St_Para>{HTMLTAG} { /* html tag */
g_token->name = yytext;
int startNamePos=1;
if (g_token->name.at(1)=='/') startNamePos++;
......@@ -349,11 +357,8 @@ WORD [^ \t\n\r\\@<>&$#,.]+
g_token->name = yytext;
return TK_LNKWORD;
}
<St_Para>"."|"," {
g_token->name = yytext;
return TK_WORD;
}
<St_Para>{WORD} { /* function call */
<St_Para>{WORD1} |
<St_Para>{WORD2} { /* function call */
g_token->name = yytext;
return TK_WORD;
......@@ -383,7 +388,7 @@ WORD [^ \t\n\r\\@<>&$#,.]+
<St_HtmlOnly>{CMD}"endhtmlonly" {
return RetVal_OK;
}
<St_HtmlOnly>[^\\@\n]+ |
<St_HtmlOnly>[^\\@\n$]+ |
<St_HtmlOnly>\n |
<St_HtmlOnly>. {
g_token->verb+=yytext;
......@@ -404,26 +409,87 @@ WORD [^ \t\n\r\\@<>&$#,.]+
<St_Verbatim>. { /* Verbatim text */
g_token->verb+=yytext;
}
<St_Title>"&"{ID}";" { /* symbol */
<St_Title>"\"" { // quoted title
BEGIN(St_TitleQ);
}
<St_Title>[ \t]+ {
g_token->chars=yytext;
return TK_WHITESPACE;
}
<St_Title>. { // non-quoted title
unput(*yytext);
BEGIN(St_TitleN);
}
<St_Title>\n {
return 0;
}
<St_TitleN>"&"{ID}";" { /* symbol */
g_token->name = yytext;
return TK_SYMBOL;
}
<St_Title>{SPCMD1} |
<St_Title>{SPCMD2} { /* special command */
<St_TitleN>{SPCMD1} |
<St_TitleN>{SPCMD2} { /* special command */
g_token->name = yytext+1;
return TK_COMMAND;
}
<St_Title>{WORD} { /* word */
<St_TitleN>{WORD1} |
<St_TitleN>{WORD2} { /* word */
g_token->name = yytext;
return TK_WORD;
}
<St_Title>[ \t]+ {
<St_TitleN>[ \t]+ {
g_token->chars=yytext;
return TK_WHITESPACE;
}
<St_TitleN>\n { /* new line => end of title */
unput(*yytext);
return 0;
}
<St_TitleQ>"&"{ID}";" { /* symbol */
g_token->name = yytext;
return TK_SYMBOL;
}
<St_TitleQ>{SPCMD1} |
<St_TitleQ>{SPCMD2} { /* special command */
g_token->name = yytext+1;
return TK_COMMAND;
}
<St_TitleQ>{WORD1NQ} |
<St_TitleQ>{WORD2NQ} { /* word */
g_token->name = yytext;
return TK_WORD;
}
<St_TitleQ>[ \t]+ {
g_token->chars=yytext;
return TK_WHITESPACE;
}
<St_Title>\n { /* new line => end of title */
<St_TitleQ>"\"" { /* closing quote => end of title */
BEGIN(St_TitleA);
return 0;
}
<St_TitleQ>\n { /* new line => end of title */
unput(*yytext);
return 0;
}
<St_TitleA>{BLANK}*{ID}{BLANK}*"="{BLANK}* { // title attribute
g_token->name = yytext;
g_token->name = g_token->name.left(
g_token->name.find('=')).stripWhiteSpace();
BEGIN(St_TitleV);
}
<St_TitleV>[^ \t\r\n]+ { // attribute value
g_token->chars = yytext;
BEGIN(St_TitleN);
return TK_WORD;
}
<St_TitleV,St_TitleA>. {
unput(*yytext);
return 0;
}
<St_TitleV,St_TitleA>\n {
return 0;
}
<St_Ref>{ID} {
g_token->name=yytext;
return TK_WORD;
......@@ -458,8 +524,8 @@ WORD [^ \t\n\r\\@<>&$#,.]+
g_token->name = yytext+1;
return TK_COMMAND;
}
<St_Ref2>[^ \t\n\r\\@<&$"]+ |
<St_Ref2>[^ \t\n\r\\@<&$"]+"("[^\n")]*")"({BLANK}*("const"|"volatile"))? {
<St_Ref2>{WORD1NQ} |
<St_Ref2>{WORD2NQ} {
/* word */
g_token->name = yytext;
return TK_WORD;
......
......@@ -51,7 +51,6 @@ class DocAnchor;
class DocIndexEntry;
class DocInternal;
class DocHRef;
class DocCopy;
class DocInclude;
class DocIncOperator;
class DocHtmlHeader;
......@@ -67,6 +66,7 @@ class DocLinkedWord;
class DocParamSect;
class DocParamList;
class DocInternalRef;
class DocCopy;
/*! @brief Abstract visitor that participates in the visitor pattern.
*/
......@@ -83,7 +83,6 @@ class DocVisitor
virtual void visit(DocLineBreak *) = 0;
virtual void visit(DocHorRuler *) = 0;
virtual void visit(DocAnchor *) = 0;
virtual void visit(DocCopy *) = 0;
virtual void visit(DocInclude *) = 0;
virtual void visit(DocIncOperator *) = 0;
virtual void visit(DocFormula *) = 0;
......@@ -158,6 +157,8 @@ class DocVisitor
virtual void visitPost(DocXRefItem *) = 0;
virtual void visitPre(DocInternalRef *) = 0;
virtual void visitPost(DocInternalRef *) = 0;
virtual void visitPre(DocCopy *) = 0;
virtual void visitPost(DocCopy *) = 0;
};
#endif
......@@ -16,6 +16,9 @@
*
*/
#ifndef _DOT_H
#define _DOT_H
#include "qtbc.h"
#include <qlist.h>
#include <qdict.h>
......@@ -171,3 +174,4 @@ void generateGraphLegend(const char *path);
void writeDotGraphFromFile(const char *inFile,const char *outDir,
const char *outFile,GraphOutputFormat format);
#endif
This diff is collapsed.
......@@ -131,6 +131,7 @@ void GroupDef::addNamespace(const NamespaceDef *def)
void GroupDef::addPage(PageInfo *def)
{
//printf("Making page %s part of a group\n",def->name.data());
pageDict->append(def->name,def);
def->makePartOfGroup(this);
}
......
/******************************************************************************
*
*
*
*
* Copyright (C) 1997-2002 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 "htmldocvisitor.h"
void HtmlDocVisitor::filter(const char *str)
{
if (str==0) return;
const char *p=str;
char c;
while (*p)
{
c=*p++;
switch(c)
{
case '<': m_t << "&lt;"; break;
case '>': m_t << "&gt;"; break;
case '&': m_t << "&amp;"; break;
default: m_t << c;
}
}
}
void HtmlDocVisitor::startLink(const QCString &ref,const QCString &file,const QCString &anchor)
{
QCString *dest;
if (!ref.isEmpty()) // link to entity imported via tag file
{
m_t << "<a class=\"elRef\" ";
m_t << "doxygen=\"" << ref << ":";
if ((dest=Doxygen::tagDestinationDict[ref])) m_t << *dest << "/";
m_t << "\" ";
}
else // local link
{
m_t << "<a class=\"el\" ";
}
m_t << "href=\"";
if (!ref.isEmpty())
{
if ((dest=Doxygen::tagDestinationDict[ref])) m_t << *dest << "/";
}
if (!file.isEmpty()) m_t << file << Doxygen::htmlFileExtension;
if (!anchor.isEmpty()) m_t << "#" << anchor;
m_t << "\">";
}
void HtmlDocVisitor::endLink()
{
m_t << "</a>";
}
This diff is collapsed.
......@@ -1239,14 +1239,11 @@ void HtmlGenerator::endSectionRefList()
t << "</multicol>" << endl;
}
void HtmlGenerator::printDoc(DocNode *n)
{
#ifdef ENABLE_NEW_PARSER
HtmlDocVisitor *visitor = new HtmlDocVisitor(t,*this);
n->accept(visitor);
delete visitor;
#else
n=n;
#endif
}
......@@ -24,3 +24,4 @@
#define LANG_GR
#define LANG_TW
#define LANG_SR
#define LANG_CA
......@@ -100,6 +100,9 @@
#ifdef LANG_SR
#include "translator_sr.h"
#endif
#ifdef LANG_CA
#include "translator_ca.h"
#endif
//#ifdef LANG_JS
//#include "translator_js.h"
//#endif
......
/******************************************************************************
*
*
*
*
* Copyright (C) 1997-2002 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 "latexdocvisitor.h"
#include "util.h"
void LatexDocVisitor::filter(const char *str)
{
filterLatexString(m_t,str,FALSE,m_insidePre);
}
void LatexDocVisitor::startLink(const QCString &ref,const QCString &file,const QCString &anchor)
{
if (ref.isEmpty() && Config_getBool("PDF_HYPERLINKS"))
{
m_t << "\\hyperlink{";
if (!file.isEmpty()) m_t << file;
if (!file.isEmpty() && !anchor.isEmpty()) m_t << "_";
if (!anchor.isEmpty()) m_t << anchor;
m_t << "}{";
}
else
{
m_t << "{\\bf ";
}
}
void LatexDocVisitor::endLink()
{
m_t << "}";
}
This diff is collapsed.
This diff is collapsed.
......@@ -15,8 +15,8 @@
*
*/
#ifndef OUTPUT_H
#define OUTPUT_H
#ifndef LATEXGEN_H
#define LATEXGEN_H
#include "outputgen.h"
......@@ -42,6 +42,8 @@ class LatexGenerator : public OutputGenerator
bool isEnabled(OutputType o) { return (o==Latex && active); }
OutputGenerator *get(OutputType o) { return (o==Latex) ? this : 0; }
void printDoc(DocNode *);
void startFile(const char *name,const char *manName,
const char *title, bool external);
void writeFooter(int,bool) {}
......@@ -287,7 +289,6 @@ class LatexGenerator : public OutputGenerator
void writeCodeAnchor(const char *) {}
private:
void latin2ToLatex(unsigned char);
LatexGenerator(const LatexGenerator &);
LatexGenerator &operator=(const LatexGenerator &);
int col;
......
......@@ -22,12 +22,16 @@ HEADERS = bufstr.h \
cmdmapper.h \
code.h \
commentcnv.h \
config.h \
constexp.h \
cppvalue.h \
debug.h \
declinfo.h \
defargs.h \
defgen.h \
doxygen.h \
scanner.h \
define.h \
definition.h \
diagram.h \
doc.h \
docparser.h \
doctokenizer.h \
......@@ -41,12 +45,14 @@ HEADERS = bufstr.h \
formula.h \
ftvhelp.h \
groupdef.h \
htmldocvisitor.h \
htmlgen.h \
htmlhelp.h \
image.h \
index.h \
instdox.h \
language.h \
latexdocvisitor.h \
latexgen.h \
logos.h \
mangen.h \
......@@ -75,9 +81,11 @@ HEADERS = bufstr.h \
translator.h \
translator_adapter.h \
translator_br.h \
translator_ca.h \
translator_cn.h \
translator_cz.h \
translator_de.h \
translator_dk.h \
translator_en.h \
translator_es.h \
translator_fi.h \
......@@ -96,6 +104,10 @@ HEADERS = bufstr.h \
translator_ru.h \
translator_se.h \
translator_si.h \
translator_sk.h \
translator_sr.h \
translator_tw.h \
translator_ua.h \
treeview.h \
unistd.h \
util.h \
......@@ -127,12 +139,14 @@ SOURCES = ce_lex.cpp \
formula.cpp \
ftvhelp.cpp \
groupdef.cpp \
htmldocvisitor.cpp \
htmlgen.cpp \
htmlhelp.cpp \
image.cpp \
index.cpp \
instdox.cpp \
language.cpp \
latexdocvisitor.cpp \
latexgen.cpp \
logos.cpp \
mangen.cpp \
......
......@@ -552,6 +552,8 @@ ClassDef *MemberDef::getClassDefOfAnonymousType()
*/
bool MemberDef::isBriefSectionVisible() const
{
bool hasDocs = hasDocumentation();
// only include static members with file/namespace scope if
// explicitly enabled in the config file
bool visibleIfStatic = !(getClassDef()==0 &&
......@@ -562,7 +564,7 @@ bool MemberDef::isBriefSectionVisible() const
// only include members is the are documented or
// HIDE_UNDOC_MEMBERS is NO in the config file
bool visibleIfDocumented = (!Config_getBool("HIDE_UNDOC_MEMBERS") ||
hasDocumentation() ||
hasDocs ||
isDocumentedFriendClass()
);
......@@ -574,6 +576,15 @@ bool MemberDef::isBriefSectionVisible() const
!Config_getBool("REPEAT_BRIEF")
);
// Hide friend (class|struct|union) declarations if HIDE_FRIEND_COMPOUNDS is true
bool visibleIfFriendCompound = !(Config_getBool("HIDE_FRIEND_COMPOUNDS") &&
isFriend() &&
(type=="friend class" ||
type=="friend struct" ||
type=="friend union"
)
);
// only include members that are non-private unless EXTRACT_PRIVATE is
// set to YES or the member is part of a group
bool visibleIfPrivate = (protection()!=Private ||
......@@ -581,8 +592,28 @@ bool MemberDef::isBriefSectionVisible() const
mtype==Friend
);
bool visible = visibleIfStatic && visibleIfDocumented &&
visibleIfEnabled && visibleIfPrivate && !annScope;
// hide member if it overrides a member in a superclass and has no
// documentation
bool visibleIfDocVirtual = (reimplements() || hasDocs);
// true if this member is a constructor or destructor
bool cOrDTor = isConstructor() || isDestructor();
// hide default constructors or destructors (no args) without
// documentation
bool visibleIfNotDefaultCDTor = !(cOrDTor &&
defArgList &&
(defArgList->isEmpty() ||
defArgList->first()->type == "void"
) &&
!hasDocs
);
bool visible = visibleIfStatic && visibleIfDocumented &&
visibleIfEnabled && visibleIfPrivate &&
visibleIfDocVirtual && visibleIfNotDefaultCDTor &&
visibleIfFriendCompound &&
!annScope;
//printf("MemberDef::isBriefSectionVisible() %d\n",visible);
return visible;
}
......@@ -896,9 +927,11 @@ bool MemberDef::isDetailedSectionLinkable() const
// is documented enum value
(mtype==EnumValue && !briefDescription().isEmpty()) ||
// has brief description that is part of the detailed description
(!briefDescription().isEmpty() &&
Config_getBool("ALWAYS_DETAILED_SEC") &&
Config_getBool("REPEAT_BRIEF")
(!briefDescription().isEmpty() && // has brief docs
(Config_getBool("ALWAYS_DETAILED_SEC") && // they or visible in
Config_getBool("REPEAT_BRIEF") || // detailed section or
!Config_getBool("BRIEF_MEMBER_DESC") // they are explicitly not
) // shown in brief section
) ||
// has a multi-line initialization block
//(initLines>0 && initLines<maxInitLines) ||
......@@ -1196,9 +1229,9 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
/* write brief description */
if (!brief.isEmpty() &&
(Config_getBool("REPEAT_BRIEF")
/* || (!Config_getBool("BRIEF_MEMBER_DESC") && documentation().isEmpty())*/
) /* || !annMemb */
(Config_getBool("REPEAT_BRIEF") ||
!Config_getBool("BRIEF_MEMBER_DESC")
)
)
{
parseDoc(ol,briefFile(),briefLine(),scopeName,this,brief);
......@@ -1493,10 +1526,15 @@ void MemberDef::warnIfUndocumented()
else
t="file", d=fd;
if (d && d->isLinkable() && !isLinkable() && !isDocumentedFriendClass()
&& name().find('@')==-1)
if (d && d->isLinkable() && !isLinkable() &&
!isDocumentedFriendClass() &&
name().find('@')==-1 &&
(prot!=Private || Config_getBool("EXTRACT_PRIVATE"))
)
{
warn_undoc(m_defFileName,m_defLine,"Warning: Member %s of %s %s is not documented.",
name().data(),t,d->name().data());
}
}
......@@ -1730,3 +1768,13 @@ Specifier MemberDef::virtualness() const
return v;
}
bool MemberDef::isConstructor() const
{
return classDef ? name()==classDef->localName() : FALSE;
}
bool MemberDef::isDestructor() const
{
return name().find('~')!=-1 && name().find("operator")==-1;
}
......@@ -120,6 +120,8 @@ class MemberDef : public Definition
bool isExplicit() const { return (memSpec&Entry::Explicit)!=0; }
bool isMutable() const { return (memSpec&Entry::Mutable)!=0; }
bool isExternal() const { return explExt; }
bool isConstructor() const;
bool isDestructor() const;
bool hasOneLineInitializer() const;
bool hasMultiLineInitializer() const;
......
......@@ -31,7 +31,8 @@ NamespaceDef::NamespaceDef(const char *df,int dl,
const char *name,const char *lref) :
Definition(df,dl,name)
{
fileName=(QCString)"namespace"+name;
fileName="namespace";
fileName+=name;
classSDict = new ClassSDict(17);
namespaceSDict = new NamespaceSDict(17);
m_innerCompounds = new SDict<Definition>(17);
......
......@@ -120,15 +120,6 @@ class BaseOutputDocInterface : public BaseCodeDocInterface
/*! Starts a new paragraph */
virtual void newParagraph() = 0;
/*! Starts a enumeration list: e.g. \c <ol> in html.
* writeListItem() is used for the items.
*/
virtual void startEnumList() = 0;
/*! Ends an enumeration list: e.g. \c </ol> in html.
*/
virtual void endEnumList() = 0;
/*! Writes a link to an object in the documentation.
* \param ref If this is non-zero, the object is to be found in
* an external documentation file.
......@@ -150,10 +141,6 @@ class BaseOutputDocInterface : public BaseCodeDocInterface
*/
virtual void endHtmlLink() = 0;
/*! Writes a (link to an) email address found in the documentation.
* \param url The email address, this is also used for the link text.
*/
virtual void writeMailLink(const char *url) = 0;
/*! Changes the text font to bold face. The bold section ends with
* endBold()
......@@ -190,21 +177,8 @@ class BaseOutputDocInterface : public BaseCodeDocInterface
*/
virtual void endCodeFragment() = 0;
/*! Starts a fragment of preformatted text. This means that
* spacing, tabs and newlines should be kept in the output
*/
virtual void startPreFragment() = 0;
/*! Ends a preformatted text fragment. */
virtual void endPreFragment() = 0;
/*! Starts a fragment of verbatim test. This is preformatted text,
* without any special internal structure.
*/
virtual void startVerbatimFragment() = 0;
/*! Ends a verbatim text fragment. */
virtual void endVerbatimFragment() = 0;
/*! Writes a horizontal ruler to the output */
virtual void writeRuler() = 0;
......@@ -224,14 +198,53 @@ class BaseOutputDocInterface : public BaseCodeDocInterface
* description itself: e.g. \c <dd> in HTML.
*/
virtual void endDescItem() = 0;
virtual void startSubsection() = 0;
virtual void endSubsection() = 0;
virtual void startSubsubsection() = 0;
virtual void endSubsubsection() = 0;
virtual void startCenter() = 0;
virtual void endCenter() = 0;
virtual void startSmall() = 0;
virtual void endSmall() = 0;
virtual void startSimpleSect(SectionTypes t,const char *file,
const char *anchor,const char *title) = 0;
virtual void endSimpleSect() = 0;
virtual void startParamList(ParamListTypes t,const char *title) = 0;
virtual void endParamList() = 0;
virtual void writeDescItem() = 0;
virtual void startTitle() = 0;
virtual void endTitle() = 0;
virtual void writeAnchor(const char *fileName,const char *name) = 0;
virtual void startSection(const char *,const char *,SectionInfo::SectionType) = 0;
virtual void endSection(const char *,SectionInfo::SectionType) = 0;
virtual void lineBreak() = 0;
virtual void addIndexItem(const char *s1,const char *s2) = 0;
virtual void writeNonBreakableSpace(int) = 0;
virtual void startDescTable() = 0;
virtual void endDescTable() = 0;
virtual void startDescTableTitle() = 0;
virtual void endDescTableTitle() = 0;
virtual void startDescTableData() = 0;
virtual void endDescTableData() = 0;
virtual void startTextLink(const char *file,const char *anchor) = 0;
virtual void endTextLink() = 0;
virtual void startPageRef() = 0;
virtual void endPageRef(const char *,const char *) = 0;
/********************* Functions to remove *******************************/
virtual void writeMailLink(const char *url) = 0;
virtual void startPreFragment() = 0;
virtual void endPreFragment() = 0;
virtual void startVerbatimFragment() = 0;
virtual void endVerbatimFragment() = 0;
virtual void startSubsection() = 0;
virtual void endSubsection() = 0;
virtual void startSubsubsection() = 0;
virtual void endSubsubsection() = 0;
virtual void startSubscript() = 0;
virtual void endSubscript() = 0;
virtual void startSuperscript() = 0;
......@@ -254,50 +267,26 @@ class BaseOutputDocInterface : public BaseCodeDocInterface
virtual void writeRing(char) = 0;
virtual void writeSharpS() = 0;
virtual void writeCCedil(char) = 0;
virtual void startSimpleSect(SectionTypes t,const char *file,
const char *anchor,const char *title) = 0;
virtual void endSimpleSect() = 0;
virtual void startParamList(ParamListTypes t,const char *title) = 0;
virtual void endParamList() = 0;
virtual void endDescTitle() = 0;
virtual void writeDescItem() = 0;
virtual void startTitle() = 0;
virtual void endTitle() = 0;
virtual void writeAnchor(const char *fileName,const char *name) = 0;
virtual void startSection(const char *,const char *,SectionInfo::SectionType) = 0;
virtual void endSection(const char *,SectionInfo::SectionType) = 0;
virtual void writeSectionRef(const char *,const char *,
const char *,const char *) = 0;
virtual void writeSectionRefItem(const char *,const char *,const char *) = 0;
virtual void lineBreak() = 0;
virtual void addIndexItem(const char *s1,const char *s2) = 0;
virtual void writeFormula(const char *,const char *) = 0;
virtual void writeNonBreakableSpace(int) = 0;
virtual void startEnumList() = 0;
virtual void endEnumList() = 0;
virtual void startImage(const char *,const char *,bool) = 0;
virtual void endImage(bool) = 0;
virtual void startDotFile(const char *,bool) = 0;
virtual void endDotFile(bool) = 0;
virtual void startDescTable() = 0;
virtual void endDescTable() = 0;
virtual void startDescTableTitle() = 0;
virtual void endDescTableTitle() = 0;
virtual void startDescTableData() = 0;
virtual void endDescTableData() = 0;
virtual void startTextLink(const char *file,const char *anchor) = 0;
virtual void endTextLink() = 0;
virtual void startPageRef() = 0;
virtual void endPageRef(const char *,const char *) = 0;
virtual void writeFormula(const char *,const char *) = 0;
virtual void startHtmlOnly() = 0;
virtual void endHtmlOnly() = 0;
virtual void startLatexOnly() = 0;
virtual void endLatexOnly() = 0;
virtual void startSectionRefList() = 0;
virtual void endSectionRefList() = 0;
/************************************************************************/
};
......
......@@ -147,11 +147,6 @@ class PrintDocVisitor : public DocVisitor
indent_leaf();
printf("<anchor name=\"%s\"/>",a->anchor().data());
}
void visit(DocCopy *c)
{
indent_leaf();
printf("<copy link=\"%s\"/>",c->link().data());
}
void visit(DocInclude *inc)
{
indent_leaf();
......@@ -456,7 +451,14 @@ class PrintDocVisitor : public DocVisitor
void visitPre(DocImage *img)
{
indent_pre();
printf("<image src=\"%s\">\n",img->name().data());
printf("<image src=\"%s\" type=\"",img->name().data());
switch(img->type())
{
case DocImage::Html: printf("html"); break;
case DocImage::Latex: printf("latex"); break;
case DocImage::Rtf: printf("rtf"); break;
}
printf("\" width=%s height=%s>\n",img->width().data(),img->height().data());
}
void visitPost(DocImage *)
{
......@@ -539,11 +541,12 @@ class PrintDocVisitor : public DocVisitor
{
printf("<param>%s</param>",s);
}
printf("\n");
}
void visitPost(DocParamList *)
{
indent_post();
printf("</parameters>");
printf("</parameters>\n");
}
void visitPre(DocParamSect *ps)
{
......@@ -556,23 +559,23 @@ class PrintDocVisitor : public DocVisitor
case DocParamSect::Exception: printf("exception"); break;
case DocParamSect::Unknown: printf("unknown"); break;
}
printf(">");
printf(">\n");
}
void visitPost(DocParamSect *)
{
indent_post();
printf("</paramsect>");
printf("</paramsect>\n");
}
void visitPre(DocXRefItem *x)
{
indent_pre();
printf("<xrefitem file=\"%s\" anchor=\"%s\" title=\"%s\"/>",
printf("<xrefitem file=\"%s\" anchor=\"%s\" title=\"%s\"/>\n",
x->file().data(),x->anchor().data(),x->title().data());
}
void visitPost(DocXRefItem *)
{
indent_post();
printf("<xrefitem/>");
printf("<xrefitem/>\n");
}
void visitPre(DocInternalRef *r)
{
......@@ -584,6 +587,16 @@ class PrintDocVisitor : public DocVisitor
indent_post();
printf("</internalref>\n");
}
void visitPre(DocCopy *c)
{
indent_pre();
printf("<copy link=\"%s\">\n",c->link().data());
}
void visitPost(DocCopy *)
{
indent_post();
printf("</copy>\n");
}
private:
// helper functions
......
......@@ -383,7 +383,7 @@ static QCString extractName(const QCString &s)
static void setContext()
{
QCString fileName = yyFileName;
insideIDL = fileName.right(4)==".idl";
insideIDL = fileName.right(4)==".idl" || fileName.right(4)==".odl";
insideJava = fileName.right(5)==".java";
insidePHP = fileName.right(4)==".php" || fileName.right(4)==".inc";
if ( insidePHP )
......@@ -461,9 +461,12 @@ static void addSpecialItem(const char *listName)
QCString cmdString;
cmdString.sprintf("\\%s %d\n",listName,itemId);
current->doc += cmdString;
QCString tmpName = current->name;
current->name = listName;
sectionType=SectionInfo::Anchor;
sectionLabel=anchorLabel;
addSection();
current->name = tmpName;
}
current->brief = slString.copy(); // restore orginial brief desc.
}
......@@ -900,35 +903,59 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
BEGIN( CompoundName );
}
<FindMembers>{B}*"module"{BN}+ {
isTypedef=FALSE;
current->section = Entry::NAMESPACE_SEC;
current->type = "module" ;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
lineCount();
BEGIN( CompoundName );
if (insideIDL)
{
isTypedef=FALSE;
current->section = Entry::NAMESPACE_SEC;
current->type = "module" ;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
BEGIN( CompoundName );
}
else
{
addType( current ) ;
current->name = QCString(yytext).stripWhiteSpace();
}
}
<FindMembers>{B}*"library"{BN}+ {
isTypedef=FALSE;
current->section = Entry::NAMESPACE_SEC;
current->type = "library" ;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
lineCount();
BEGIN( CompoundName );
if (insideIDL)
{
isTypedef=FALSE;
current->section = Entry::NAMESPACE_SEC;
current->type = "library" ;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
BEGIN( CompoundName );
}
else
{
addType( current ) ;
current->name = QCString(yytext).stripWhiteSpace();
}
}
<FindMembers>{B}*((("disp")?"interface")|"valuetype"){BN}+ { // M$/Corba IDL interface
isTypedef=FALSE;
current->section = Entry::INTERFACE_SEC;
addType( current ) ;
current->type += " interface" ;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
lineCount();
BEGIN( CompoundName );
if (insideIDL)
{
isTypedef=FALSE;
current->section = Entry::INTERFACE_SEC;
addType( current ) ;
current->type += " interface" ;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
BEGIN( CompoundName );
}
else
{
addType( current ) ;
current->name = QCString(yytext).stripWhiteSpace();
}
}
<FindMembers>{B}*"exception"{BN}+ { // Corba IDL exception
isTypedef=FALSE;
......@@ -950,19 +977,31 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
//if (current->mtArgList) // transfer template arguments
//{
// if (current->tArgList)
// {
// delete current->tArgList;
// }
// current->tArgList = current->mtArgList;
// current->mtArgList = 0;
//}
lineCount() ;
if (yytext[yyleng-1]=='{') unput('{');
BEGIN( CompoundName ) ;
}
<FindMembers>{B}*"coclass"{BN}+ {
if (insideIDL)
{
isTypedef=FALSE;
current->section = Entry::CLASS_SEC;
addType( current ) ;
current->type += " coclass" ;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
lineCount() ;
BEGIN( CompoundName ) ;
}
else
{
addType(current);
current->name = yytext;
current->name = current->name.stripWhiteSpace();
lineCount();
}
}
<FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"struct{" |
<FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"struct"/{BN}+ {
isTypedef=((QCString)yytext).find("typedef")!=-1;
......@@ -4482,7 +4521,8 @@ static void parseCompounds(Entry *rt)
{
if (ce->fileName.right(5)==".java" ||
ce->fileName.right(4)==".php" ||
ce->fileName.right(4)==".inc")
ce->fileName.right(4)==".inc"
)
current->protection = protection = Public ; // Actually this should be package scope!
else
current->protection = protection = Private ;
......
This diff is collapsed.
This diff is collapsed.
......@@ -199,6 +199,8 @@ void addRelatedPage(const char *name,const QCString &ptitle,
);
QCString escapeCharsInString(const char *name,bool allowDots);
void addGroupListToTitle(OutputList &ol,Definition *d);
void filterLatexString(QTextStream &t,const char *str,
bool insideTabbing=FALSE,bool insidePre=FALSE);
#endif
......@@ -895,9 +895,9 @@ class XMLGenerator : public OutputDocInterface
{
XML_DB(("(endSectionRefList)\n"));
}
void writeCodeAnchor(const char *anchor)
void writeCodeAnchor(const char *)
{
XML_DB(("(writeCodeAnchor(%s))\n",anchor));
XML_DB(("(writeCodeAnchor)\n"));
}
// Generator specific functions
......
......@@ -25,7 +25,7 @@ CFG=Doxygen - Win32 Debug
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName "Doxygen"
# PROP Scc_LocalPath ".."
CPP=cwcl.exe
CPP=xicl6.exe
RSC=rc.exe
!IF "$(CFG)" == "Doxygen - Win32 Release"
......@@ -48,7 +48,7 @@ RSC=rc.exe
BSC32=snBsc.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=cwlink.exe
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
......@@ -72,7 +72,7 @@ LINK32=cwlink.exe
BSC32=snBsc.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=cwlink.exe
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
......@@ -603,6 +603,10 @@ SOURCE=..\src\doc.h
# End Source File
# Begin Source File
SOURCE=..\src\docvisitor.h
# End Source File
# Begin Source File
SOURCE=..\src\dot.h
# End Source File
# Begin Source File
......@@ -763,6 +767,10 @@ SOURCE=..\src\pre.h
# End Source File
# Begin Source File
SOURCE=..\src\printdocvisitor.h
# End Source File
# Begin Source File
SOURCE=..\qtools\qarray.h
# End Source File
# Begin Source File
......@@ -995,10 +1003,6 @@ SOURCE=..\src\translator_dk.h
# End Source File
# Begin Source File
SOURCE="..\src\translator_en-old.h"
# End Source File
# Begin Source File
SOURCE=..\src\translator_en.h
# End Source File
# Begin Source File
......
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