Commit 91ac89e2 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.3-rc3-20030308

parent 6ac75f50
DOXYGEN Version 1.3-rc3-20030223 DOXYGEN Version 1.3-rc3-20030308
Please read the installation section of the manual Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions. (http://www.doxygen.org/install.html) for instructions.
-------- --------
Dimitri van Heesch (23 February 2003) Dimitri van Heesch (08 March 2003)
DOXYGEN Version 1.3_rc3_20030223 DOXYGEN Version 1.3_rc3_20030308
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. ...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (23 February 2003) Dimitri van Heesch (dimitri@stack.nl) (08 March 2003)
1.3-rc3-20030223 1.3-rc3-20030308
...@@ -1763,7 +1763,7 @@ ALIASES = "english=\if english" \ ...@@ -1763,7 +1763,7 @@ ALIASES = "english=\if english" \
to documented entities. to documented entities.
<hr> <hr>
\section cmdlt \\< \section cmdlt \<
\addindex \\\< \addindex \\\<
This command writes the \< character to the HTML and This command writes the \< character to the HTML and
...@@ -1771,7 +1771,7 @@ ALIASES = "english=\if english" \ ...@@ -1771,7 +1771,7 @@ ALIASES = "english=\if english" \
character has to be escaped because it has a special meaning in HTML. character has to be escaped because it has a special meaning in HTML.
<hr> <hr>
\section cmdgt \\> \section cmdgt \>
\addindex \\\> \addindex \\\>
This command writes the \> character to the HTML and This command writes the \> character to the HTML and
......
...@@ -146,6 +146,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -146,6 +146,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_latex_batchmode LATEX_BATCHMODE \refitem cfg_latex_batchmode LATEX_BATCHMODE
\refitem cfg_latex_cmd_name LATEX_CMD_NAME \refitem cfg_latex_cmd_name LATEX_CMD_NAME
\refitem cfg_latex_header LATEX_HEADER \refitem cfg_latex_header LATEX_HEADER
\refitem cfg_latex_hide_indices LATEX_HIDE_INDICES
\refitem cfg_latex_output LATEX_OUTPUT \refitem cfg_latex_output LATEX_OUTPUT
\refitem cfg_macro_expansion MACRO_EXPANSION \refitem cfg_macro_expansion MACRO_EXPANSION
\refitem cfg_makeindex_cmd_name MAKEINDEX_CMD_NAME \refitem cfg_makeindex_cmd_name MAKEINDEX_CMD_NAME
...@@ -193,6 +194,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -193,6 +194,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_template_relations TEMPLATE_RELATIONS \refitem cfg_template_relations TEMPLATE_RELATIONS
\refitem cfg_toc_expand TOC_EXPAND \refitem cfg_toc_expand TOC_EXPAND
\refitem cfg_treeview_width TREEVIEW_WIDTH \refitem cfg_treeview_width TREEVIEW_WIDTH
\refitem cfg_use_windows_encoding USE_WINDOWS_ENCODING
\refitem cfg_verbatim_headers VERBATIM_HEADERS \refitem cfg_verbatim_headers VERBATIM_HEADERS
\refitem cfg_warn_format WARN_FORMAT \refitem cfg_warn_format WARN_FORMAT
\refitem cfg_warn_if_doc_error WARN_IF_DOC_ERROR \refitem cfg_warn_if_doc_error WARN_IF_DOC_ERROR
...@@ -240,6 +242,17 @@ followed by the descriptions of the tags grouped by category. ...@@ -240,6 +242,17 @@ followed by the descriptions of the tags grouped by category.
German, Greek, Hungarian, Italian, Japanese, Korean, Norwegian, Polish, German, Greek, Hungarian, Italian, Japanese, Korean, Norwegian, Polish,
Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish and Swedish. Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish and Swedish.
\anchor cfg_use_windows_encoding
<dt>\c USE_WINDOWS_ENCODING <dd>
\addindex USE_WINDOWS_ENCODING
This tag can be used to specify the encoding used in the generated output.
The encoding is not always determined by the language that is chosen,
but also whether or not the output is meant for Windows or non-Windows users.
In case there is a difference, setting the \c USE_WINDOWS_ENCODING tag to \c YES
forces the Windows enconding, (this is the default for the Windows binary),
whereas setting the tag to \c NO uses a Unix-style encoding (the default for the
all platforms other than Windows).
\anchor cfg_extract_all \anchor cfg_extract_all
<dt>\c EXTRACT_ALL <dd> <dt>\c EXTRACT_ALL <dd>
\addindex EXTRACT_ALL \addindex EXTRACT_ALL
...@@ -953,8 +966,8 @@ function's detailed documentation block. ...@@ -953,8 +966,8 @@ function's detailed documentation block.
If the \c GENERATE_TREEVIEW tag is set to YES, a side pannel will be If the \c GENERATE_TREEVIEW tag is set to YES, a side pannel will be
generated containing a tree-like index structure (just like the one that generated containing a tree-like index structure (just like the one that
is generated for HTML Help). For this to work a browser that supports is generated for HTML Help). For this to work a browser that supports
JavaScript and frames is required (for instance Netscape 4.0+ JavaScript and frames is required (for instance Mozilla 1.0+, Netscape 6.0+
or Internet explorer 4.0+). or Internet explorer 5.0+ or Konqueror).
\anchor cfg_treeview_width \anchor cfg_treeview_width
<dt>\c TREEVIEW_WIDTH <dd> <dt>\c TREEVIEW_WIDTH <dd>
...@@ -1077,6 +1090,14 @@ EXTRA_PACKAGES = times ...@@ -1077,6 +1090,14 @@ EXTRA_PACKAGES = times
asking the user for help. This option is also used when generating formulas asking the user for help. This option is also used when generating formulas
in HTML. in HTML.
\anchor cfg_latex_hide_indices
<dt>\c LATEX_HIDE_INDICES <dd>
\addindex LATEX_HIDE_INDICES
If \c LATEX_HIDE_INDICES is set to \c YES then doxygen will not
include the index chapters (such as File Index, Compound Index, etc.)
in the output.
</dl> </dl>
\section rtf_output RTF related options \section rtf_output RTF related options
\anchor cfg_generate_rtf \anchor cfg_generate_rtf
......
...@@ -183,7 +183,8 @@ Thanks go to: ...@@ -183,7 +183,8 @@ Thanks go to:
Roddy, Paul Schwartz, Charles Duffy, Vadym Voznyuk, Philip Walton, Roddy, Paul Schwartz, Charles Duffy, Vadym Voznyuk, Philip Walton,
Dwight Browne, Andreas Fredriksson, Karel Lindveld, Ivan Lee, Albert Dwight Browne, Andreas Fredriksson, Karel Lindveld, Ivan Lee, Albert
Vernon, Adam McKee, Vijapurapu Anatharac, Ben Hunsberger and Vernon, Adam McKee, Vijapurapu Anatharac, Ben Hunsberger and
Walter Wartenweiler, Jeff Garbers and David Harris for donating money. Walter Wartenweiler, Jeff Garbers, David Harris and Terry Brown
for donating money.
<li>The Comms group of <a href="http://www.symbian.com">Symbian</a> for donating <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> an ultra cool <a href="http://www.psion.com/revoplus">Revo plus</a>
organizer! organizer!
......
...@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means ...@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time. languages other than English (the default) at configuration time.
Currently (version 1.3-rc3-20030215), 28 languages Currently (version 1.2.14-20020317), 28 languages
are supported (sorted alphabetically): are supported (sorted alphabetically):
Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian, Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian,
Czech, Danish, Dutch, English, Finnish, Czech, Danish, Dutch, English, Finnish,
...@@ -79,7 +79,7 @@ when the translator was updated. ...@@ -79,7 +79,7 @@ when the translator was updated.
<TD>Croatian</TD> <TD>Croatian</TD>
<TD>Boris Bralo</TD> <TD>Boris Bralo</TD>
<TD>boris.bralo@NOSPAM.zg.tel.hr</TD> <TD>boris.bralo@NOSPAM.zg.tel.hr</TD>
<TD>1.2.18</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Czech</TD> <TD>Czech</TD>
...@@ -151,7 +151,7 @@ when the translator was updated. ...@@ -151,7 +151,7 @@ when the translator was updated.
<TD>Korean</TD> <TD>Korean</TD>
<TD>Richard Kim</TD> <TD>Richard Kim</TD>
<TD>ryk@NOSPAM.dspwiz.com</TD> <TD>ryk@NOSPAM.dspwiz.com</TD>
<TD>1.2.13</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Norwegian</TD> <TD>Norwegian</TD>
...@@ -163,7 +163,7 @@ when the translator was updated. ...@@ -163,7 +163,7 @@ when the translator was updated.
<TD>Polish</TD> <TD>Polish</TD>
<TD>Piotr Kaminski<br>Grzegorz Kowal</TD> <TD>Piotr Kaminski<br>Grzegorz Kowal</TD>
<TD>Piotr.Kaminski@NOSPAM.ctm.gdynia.pl<br>g_kowal@NOSPAM.poczta.onet.pl</TD> <TD>Piotr.Kaminski@NOSPAM.ctm.gdynia.pl<br>g_kowal@NOSPAM.poczta.onet.pl</TD>
<TD>1.2.17</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Portuguese</TD> <TD>Portuguese</TD>
...@@ -239,7 +239,7 @@ when the translator was updated. ...@@ -239,7 +239,7 @@ when the translator was updated.
\hline \hline
Chinese Traditional & Gary Lee & {\tt garylee@ecosine.com.tw} & 1.2.16 \\ Chinese Traditional & Gary Lee & {\tt garylee@ecosine.com.tw} & 1.2.16 \\
\hline \hline
Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & 1.2.18 \\ Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & up-to-date \\
\hline \hline
Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} & up-to-date \\ Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} & up-to-date \\
\hline \hline
...@@ -265,11 +265,11 @@ when the translator was updated. ...@@ -265,11 +265,11 @@ when the translator was updated.
Japanese & Ryunosuke Satoh & {\tt sun594@hotmail.com} & up-to-date \\ Japanese & Ryunosuke Satoh & {\tt sun594@hotmail.com} & up-to-date \\
& Kenji Nagamatsu & {\tt naga@joyful.club.ne.jp} & \\ & Kenji Nagamatsu & {\tt naga@joyful.club.ne.jp} & \\
\hline \hline
Korean & Richard Kim & {\tt ryk@dspwiz.com} & 1.2.13 \\ Korean & Richard Kim & {\tt ryk@dspwiz.com} & up-to-date \\
\hline \hline
Norwegian & Lars Erik Jordet & {\tt lej@circuitry.no} & 1.2.2 \\ Norwegian & Lars Erik Jordet & {\tt lej@circuitry.no} & 1.2.2 \\
\hline \hline
Polish & Piotr Kaminski & {\tt Piotr.Kaminski@ctm.gdynia.pl} & 1.2.17 \\ Polish & Piotr Kaminski & {\tt Piotr.Kaminski@ctm.gdynia.pl} & up-to-date \\
& Grzegorz Kowal & {\tt g\_kowal@poczta.onet.pl} & \\ & Grzegorz Kowal & {\tt g\_kowal@poczta.onet.pl} & \\
\hline \hline
Portuguese & Rui Godinho Lopes & {\tt ruiglopes@yahoo.com} & 1.2.18 \\ Portuguese & Rui Godinho Lopes & {\tt ruiglopes@yahoo.com} & 1.2.18 \\
......
...@@ -95,6 +95,13 @@ To omit all \c test directories from a source tree for instance, one could use: ...@@ -95,6 +95,13 @@ To omit all \c test directories from a source tree for instance, one could use:
\verbatim EXCLUDE_PATTERNS = */test/* \verbatim EXCLUDE_PATTERNS = */test/*
\endverbatim \endverbatim
Doxygen normally parses files if they are C or C++ sources. If a file
has a <code>.idl</code> or <code>.odl</code> extension it is treated as an
IDL file. If it has a <code>.java</code> extension it is treated as a file
written in Java. Files ending with <code>.cs</code> are treated as C# files.
Finally, files with the extensions <code>.php</code>, <code>.php4</code>,
<code>.inc</code> or <code>.phtml</code> are treated as PHP sources.
If you start using doxygen for an existing project (thus without any If you start using doxygen for an existing project (thus without any
documentation that doxygen is aware of), you can still get an idea of documentation that doxygen is aware of), you can still get an idea of
what the documented result would be. To do so, you must set what the documented result would be. To do so, you must set
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.3_rc3_20030223 Version: 1.3_rc3_20030308
Release: 1 Release: 1
Epoch: 1 Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
...@@ -1361,6 +1361,21 @@ void Config::create() ...@@ -1361,6 +1361,21 @@ void Config::create()
#ifdef LANG_UA #ifdef LANG_UA
ce->addValue("Ukrainian"); ce->addValue("Ukrainian");
#endif #endif
cb = addBool(
"USE_WINDOWS_ENCODING",
"This tag can be used to specify the encoding used in the generated output. \n"
"The encoding is not always determined by the language that is chosen, \n"
"but also whether or not the output is meant for Windows or non-Windows users. \n"
"In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES \n"
"forces the Windows enconding, (this is the default for the Windows binary), \n"
"whereas setting the tag to NO uses a Unix-style encoding (the default for the \n"
"all platforms other than Windows).\n",
#if defined(_WIN32) || defined(__CYGWIN__)
TRUE
#else
FALSE
#endif
);
cb = addBool( cb = addBool(
"EXTRACT_ALL", "EXTRACT_ALL",
"If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in \n" "If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in \n"
...@@ -1975,7 +1990,7 @@ void Config::create() ...@@ -1975,7 +1990,7 @@ void Config::create()
"If the GENERATE_TREEVIEW tag is set to YES, a side panel 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, DHTML, CSS and frames is required (for instance Mozilla, \n" "JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, \n"
"Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are \n" "Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are \n"
"probably better off using the HTML help feature. \n", "probably better off using the HTML help feature. \n",
FALSE FALSE
...@@ -2087,6 +2102,14 @@ void Config::create() ...@@ -2087,6 +2102,14 @@ void Config::create()
FALSE FALSE
); );
cb->addDependency("GENERATE_LATEX"); cb->addDependency("GENERATE_LATEX");
cb = addBool(
"LATEX_HIDE_INDICES",
"If LATEX_HIDE_INDICES is set to YES then doxygen will not \n"
"include the index chapters (such as File Index, Compound Index, etc.) \n"
"in the output. \n",
FALSE
);
cb->addDependency("GENERATE_LATEX");
//----------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------
addInfo( "RTF","configuration options related to the RTF output"); addInfo( "RTF","configuration options related to the RTF output");
//----------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------
......
...@@ -562,11 +562,11 @@ static int handleStyleArgument(DocNode *parent,QList<DocNode> &children, ...@@ -562,11 +562,11 @@ static int handleStyleArgument(DocNode *parent,QList<DocNode> &children,
{ {
case TK_COMMAND: case TK_COMMAND:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Illegal command \\%s as the argument of a \\%s command", warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Illegal command \\%s as the argument of a \\%s command",
tokenName.data(),cmdName.data()); g_token->name.data(),cmdName.data());
break; break;
case TK_SYMBOL: case TK_SYMBOL:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unsupported symbol %s found", warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unsupported symbol %s found",
tokenName.data()); g_token->name.data());
break; break;
default: default:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unexpected token %s", warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unexpected token %s",
...@@ -688,8 +688,7 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children) ...@@ -688,8 +688,7 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children)
{ {
Definition *compound=0; Definition *compound=0;
MemberDef *member=0; MemberDef *member=0;
QString name = g_token->name; QString name = linkToText(g_token->name);
if (name.at(0)=='#') name=name.right(name.length()-1);
if (resolveRef(g_context,g_token->name,g_inSeeBlock,&compound,&member)) if (resolveRef(g_context,g_token->name,g_inSeeBlock,&compound,&member))
{ {
if (member) // member link if (member) // member link
...@@ -1615,7 +1614,7 @@ DocRef::DocRef(DocNode *parent,const QString &target) : ...@@ -1615,7 +1614,7 @@ DocRef::DocRef(DocNode *parent,const QString &target) :
} }
else if (resolveLink(g_context,target,TRUE,&compound,&pageInfo,anchor)) else if (resolveLink(g_context,target,TRUE,&compound,&pageInfo,anchor))
{ {
m_text = target; m_text = linkToText(target);
m_anchor = anchor; m_anchor = anchor;
if (pageInfo) // ref to page if (pageInfo) // ref to page
{ {
...@@ -3526,7 +3525,14 @@ int DocPara::handleCommand(const QString &cmdName) ...@@ -3526,7 +3525,14 @@ int DocPara::handleCommand(const QString &cmdName)
{ {
doctokenizerYYsetStateCode(); doctokenizerYYsetStateCode();
retval = doctokenizerYYlex(); retval = doctokenizerYYlex();
m_children.append(new DocVerbatim(this,g_context,g_token->verb,DocVerbatim::Code,g_isExample,g_fileName)); // search for the first non-whitespace line, index is stored in li
int i=0,li=0,l=g_token->verb.length();
while (i<l && g_token->verb.at(i)==' ' || g_token->verb.at(i)=='\n')
{
if (g_token->verb.at(i)=='\n') li=i+1;
i++;
}
m_children.append(new DocVerbatim(this,g_context,g_token->verb.mid(li),DocVerbatim::Code,g_isExample,g_fileName));
if (retval==0) warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: code section ended without end marker"); if (retval==0) warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: code section ended without end marker");
doctokenizerYYsetStatePara(); doctokenizerYYsetStatePara();
} }
......
...@@ -487,7 +487,7 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]* ...@@ -487,7 +487,7 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]*
return TK_NEWPARA; return TK_NEWPARA;
} }
} }
<St_Code>{CMD}"endcode" { <St_Code>{WS}*{CMD}"endcode" {
return RetVal_OK; return RetVal_OK;
} }
<St_Code>[^\\@\n]+ | <St_Code>[^\\@\n]+ |
...@@ -603,11 +603,12 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]* ...@@ -603,11 +603,12 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]*
return 0; return 0;
} }
<St_Ref>({ID}[.-])*{ID} { <St_Ref>("#"|"::")?({ID}[.#:-])*{ID} {
g_token->name=yytext; g_token->name=yytext;
return TK_WORD; return TK_WORD;
} }
<St_Ref>{BLANK}+ { <St_Ref>{BLANK}+ {
unput(' ');
return 0; return 0;
} }
<St_Ref>{BLANK}+"\"" { <St_Ref>{BLANK}+"\"" {
......
...@@ -235,83 +235,110 @@ static void addRelatedPage(Entry *root) ...@@ -235,83 +235,110 @@ static void addRelatedPage(Entry *root)
} }
static void buildGroupList(Entry *root) static void buildGroupListFiltered(Entry *root,bool additional)
{ {
if (root->section==Entry::GROUPDOC_SEC && !root->name.isEmpty()) if (root->section==Entry::GROUPDOC_SEC && !root->name.isEmpty())
{ {
//printf("Found group %s title=`%s'\n",root->name.data(),root->type.data()); //printf("Found group %s title=`%s type=%d'\n",
// root->name.data(),root->type.data(),root->groupDocType);
GroupDef *gd;
if ((gd=Doxygen::groupSDict[root->name])) if ((root->groupDocType==Entry::GROUPDOC_NORMAL && !additional) ||
(root->groupDocType!=Entry::GROUPDOC_NORMAL && additional))
{ {
if ( root->groupDocType==Entry::GROUPDOC_NORMAL ) GroupDef *gd;
if ((gd=Doxygen::groupSDict[root->name]))
{ {
warn(root->fileName,root->startLine, if ( root->groupDocType==Entry::GROUPDOC_NORMAL )
"Warning: group %s already documented. " {
"Skipping documentation.", warn(root->fileName,root->startLine,
root->name.data()); "Warning: group %s already documented. "
"Skipping documentation.",
root->name.data());
}
else
{
if ( !gd->hasGroupTitle() )
gd->setGroupTitle( root->type );
else if ( root->type.length() > 0 && root->name != root->type && gd->groupTitle() != root->type )
warn( root->fileName,root->startLine,
"group %s: ignoring title \"%s\" that does not match old title \"%s\"\n",
root->name.data(), root->type.data(), gd->groupTitle() );
if ( gd->briefDescription().isEmpty() )
gd->setBriefDescription(root->brief,root->briefFile,root->briefLine);
if ( !root->doc.stripWhiteSpace().isEmpty() )
gd->setDocumentation( gd->documentation().isEmpty() ? root->doc :
gd->documentation() + "\n\n" + root->doc,
root->docFile, root->docLine );
gd->addSectionsToDefinition(root->anchors);
gd->setRefItems(root->sli);
//addGroupToGroups(root,gd);
}
} }
else else
{ {
if ( !gd->hasGroupTitle() ) gd = new GroupDef(root->fileName,root->startLine,root->name,root->type);
gd->setGroupTitle( root->type ); if (root->tagInfo)
else if ( root->type.length() > 0 && root->name != root->type && gd->groupTitle() != root->type ) {
warn( root->fileName,root->startLine, gd->setReference(root->tagInfo->tagName);
"group %s: ignoring title \"%s\" that does not match old title \"%s\"\n", }
root->name.data(), root->type.data(), gd->groupTitle() ); gd->setBriefDescription(root->brief,root->briefFile,root->briefLine);
if ( gd->briefDescription().isEmpty() ) gd->setDocumentation(root->doc,root->docFile,root->docLine);
gd->setBriefDescription(root->brief,root->briefFile,root->briefLine);
if ( !root->doc.stripWhiteSpace().isEmpty() )
gd->setDocumentation( gd->documentation().isEmpty() ? root->doc :
gd->documentation() + "\n\n" + root->doc,
root->docFile, root->docLine );
gd->addSectionsToDefinition(root->anchors); gd->addSectionsToDefinition(root->anchors);
Doxygen::groupSDict.append(root->name,gd);
gd->setRefItems(root->sli); gd->setRefItems(root->sli);
addGroupToGroups(root,gd);
}
}
else
{
gd = new GroupDef(root->fileName,root->startLine,root->name,root->type);
if (root->tagInfo)
{
gd->setReference(root->tagInfo->tagName);
} }
gd->setBriefDescription(root->brief,root->briefFile,root->briefLine);
gd->setDocumentation(root->doc,root->docFile,root->docLine);
gd->addSectionsToDefinition(root->anchors);
Doxygen::groupSDict.append(root->name,gd);
gd->setRefItems(root->sli);
} }
} }
EntryListIterator eli(*root->sublist); EntryListIterator eli(*root->sublist);
Entry *e; Entry *e;
for (;(e=eli.current());++eli) for (;(e=eli.current());++eli)
{ {
buildGroupList(e); buildGroupListFiltered(e,additional);
} }
} }
static void organizeSubGroups(Entry *root) static void buildGroupList(Entry *root)
{
// first process the @defgroups blocks
buildGroupListFiltered(root,FALSE);
// then process the @addtogroup, @weakgroup blocks
buildGroupListFiltered(root,TRUE);
}
static void organizeSubGroupsFiltered(Entry *root,bool additional)
{ {
if (root->section==Entry::GROUPDOC_SEC && !root->name.isEmpty()) if (root->section==Entry::GROUPDOC_SEC && !root->name.isEmpty())
{ {
GroupDef *gd; if ((root->groupDocType==Entry::GROUPDOC_NORMAL && !additional) ||
(root->groupDocType!=Entry::GROUPDOC_NORMAL && additional))
if ((gd=Doxygen::groupSDict[root->name]))
{ {
addGroupToGroups(root,gd); GroupDef *gd;
if ((gd=Doxygen::groupSDict[root->name]))
{
//printf("adding %s to group %s\n",root->name.data(),gd->name().data());
addGroupToGroups(root,gd);
}
} }
} }
EntryListIterator eli(*root->sublist); EntryListIterator eli(*root->sublist);
Entry *e; Entry *e;
for (;(e=eli.current());++eli) for (;(e=eli.current());++eli)
{ {
organizeSubGroups(e); organizeSubGroupsFiltered(e,additional);
} }
} }
static void organizeSubGroups(Entry *root)
{
//printf("Defining groups\n");
// first process the @defgroups blocks
organizeSubGroupsFiltered(root,FALSE);
//printf("Additional groups\n");
// then process the @addtogroup, @weakgroup blocks
organizeSubGroupsFiltered(root,TRUE);
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
static void buildFileList(Entry *root) static void buildFileList(Entry *root)
...@@ -1599,6 +1626,7 @@ static bool isVarWithConstructor(Entry *root) ...@@ -1599,6 +1626,7 @@ static bool isVarWithConstructor(Entry *root)
static QRegExp idChars("[a-z_A-Z][a-z_A-Z0-9]*"); static QRegExp idChars("[a-z_A-Z][a-z_A-Z0-9]*");
bool result=FALSE; bool result=FALSE;
bool typeIsClass; bool typeIsClass;
QCString type;
Definition *ctx = 0; Definition *ctx = 0;
FileDef *fd = 0; FileDef *fd = 0;
bool ambig; bool ambig;
...@@ -1620,7 +1648,9 @@ static bool isVarWithConstructor(Entry *root) ...@@ -1620,7 +1648,9 @@ static bool isVarWithConstructor(Entry *root)
goto done; goto done;
} }
if (root->parent->name) ctx=Doxygen::namespaceSDict.find(root->parent->name); if (root->parent->name) ctx=Doxygen::namespaceSDict.find(root->parent->name);
typeIsClass=getResolvedClass(ctx,root->type)!=0; type = root->type;
if (type.left(6)=="const ") type=type.right(type.length()-6);
typeIsClass=getResolvedClass(ctx,type)!=0;
if (typeIsClass) // now we still have to check if the arguments are if (typeIsClass) // now we still have to check if the arguments are
// types or values. Since we do not have complete type info // types or values. Since we do not have complete type info
// we need to rely on heuristics :-( // we need to rely on heuristics :-(
......
...@@ -471,7 +471,7 @@ FTVHelp::FTVHelp() ...@@ -471,7 +471,7 @@ FTVHelp::FTVHelp()
{ {
/* initial depth */ /* initial depth */
//m_dc = 0; //m_dc = 0;
m_cf = 0; //m_cf = 0;
m_indentNodes = new QList<FTVNode>[MAX_INDENT]; m_indentNodes = new QList<FTVNode>[MAX_INDENT];
m_indentNodes[0].setAutoDelete(TRUE); m_indentNodes[0].setAutoDelete(TRUE);
m_indent=0; m_indent=0;
...@@ -495,6 +495,7 @@ FTVHelp *FTVHelp::getInstance() ...@@ -495,6 +495,7 @@ FTVHelp *FTVHelp::getInstance()
*/ */
void FTVHelp::initialize() void FTVHelp::initialize()
{ {
#if 0
/* open the contents file */ /* open the contents file */
QCString fName = Config_getString("HTML_OUTPUT") + "/tree.js"; QCString fName = Config_getString("HTML_OUTPUT") + "/tree.js";
m_cf = new QFile(fName); m_cf = new QFile(fName);
...@@ -519,6 +520,7 @@ void FTVHelp::initialize() ...@@ -519,6 +520,7 @@ void FTVHelp::initialize()
m_cts << Config_getString("PROJECT_NAME"); m_cts << Config_getString("PROJECT_NAME");
} }
m_cts << "</b>\", \"\", \"\")\n"; m_cts << "</b>\", \"\", \"\")\n";
#endif
} }
/*! Finalizes the FTV help. This will finish and close the /*! Finalizes the FTV help. This will finish and close the
...@@ -527,9 +529,9 @@ void FTVHelp::initialize() ...@@ -527,9 +529,9 @@ void FTVHelp::initialize()
*/ */
void FTVHelp::finalize() void FTVHelp::finalize()
{ {
m_cts.unsetDevice(); //m_cts.unsetDevice();
m_cf->close(); //m_cf->close();
delete m_cf; //delete m_cf;
generateTreeView(); generateTreeView();
//generateFolderTreeViewData(); //generateFolderTreeViewData();
} }
...@@ -690,6 +692,8 @@ void FTVHelp::generateIndent(QTextStream &t, FTVNode *n,int level) ...@@ -690,6 +692,8 @@ void FTVHelp::generateIndent(QTextStream &t, FTVNode *n,int level)
void FTVHelp::generateLink(QTextStream &t,FTVNode *n) void FTVHelp::generateLink(QTextStream &t,FTVNode *n)
{ {
QCString *dest; QCString *dest;
//printf("FTVHelp::generateLink(ref=%s,file=%s,anchor=%s\n",
// n->ref.data(),n->file.data(),n->anchor.data());
if (!n->ref.isEmpty()) // link to entity imported via tag file if (!n->ref.isEmpty()) // link to entity imported via tag file
{ {
t << "<a class=\"elRef\" "; t << "<a class=\"elRef\" ";
...@@ -920,7 +924,17 @@ void FTVHelp::generateTreeView() ...@@ -920,7 +924,17 @@ void FTVHelp::generateTreeView()
t << "\n"; t << "\n";
t << " <body bgcolor=\"#ffffff\">\n"; t << " <body bgcolor=\"#ffffff\">\n";
t << " <div class=\"directory\">\n"; t << " <div class=\"directory\">\n";
t << " <h3>Root</h3>\n"; t << " <h3>";
QCString &projName = Config_getString("PROJECT_NAME");
if (projName.isEmpty())
{
t << "Root";
}
else
{
t << projName;
}
t << "</h3>\n";
t << " <div style=\"display: block;\">\n"; t << " <div style=\"display: block;\">\n";
generateTree(t,m_indentNodes[0],0); generateTree(t,m_indentNodes[0],0);
......
...@@ -46,8 +46,8 @@ class FTVHelp ...@@ -46,8 +46,8 @@ class FTVHelp
void generateLink(QTextStream &t,FTVNode *n); void generateLink(QTextStream &t,FTVNode *n);
FTVHelp(); FTVHelp();
~FTVHelp(); ~FTVHelp();
QFile *m_cf; //QFile *m_cf;
QTextStream m_cts; //QTextStream m_cts;
//int m_dc; //int m_dc;
static FTVHelp *m_theInstance; static FTVHelp *m_theInstance;
QList<FTVNode> *m_indentNodes; QList<FTVNode> *m_indentNodes;
......
...@@ -753,7 +753,7 @@ void HtmlDocVisitor::visitPost(DocRef *) ...@@ -753,7 +753,7 @@ void HtmlDocVisitor::visitPost(DocRef *)
{ {
if (m_hide) return; if (m_hide) return;
endLink(); endLink();
m_t << " "; //m_t << " ";
} }
void HtmlDocVisitor::visitPre(DocSecRefItem *ref) void HtmlDocVisitor::visitPre(DocSecRefItem *ref)
......
...@@ -2208,7 +2208,7 @@ void writePageIndex(OutputList &ol) ...@@ -2208,7 +2208,7 @@ void writePageIndex(OutputList &ol)
} }
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,pi->getReference(),pi->getOutputFileBase(),0,pageTitle);
} }
} }
endIndexHierarchy(ol,0); endIndexHierarchy(ol,0);
......
...@@ -460,6 +460,7 @@ void LatexGenerator::startProjectNumber() ...@@ -460,6 +460,7 @@ void LatexGenerator::startProjectNumber()
void LatexGenerator::startIndexSection(IndexSections is) void LatexGenerator::startIndexSection(IndexSections is)
{ {
bool &compactLatex = Config_getBool("COMPACT_LATEX"); bool &compactLatex = Config_getBool("COMPACT_LATEX");
bool &hideIndex = Config_getBool("LATEX_HIDE_INDICES");
QCString &latexHeader = Config_getString("LATEX_HEADER"); QCString &latexHeader = Config_getString("LATEX_HEADER");
switch (is) switch (is)
{ {
...@@ -491,44 +492,47 @@ void LatexGenerator::startIndexSection(IndexSections is) ...@@ -491,44 +492,47 @@ void LatexGenerator::startIndexSection(IndexSections is)
// t << "{"; //Package Index}\n" // t << "{"; //Package Index}\n"
// break; // break;
case isModuleIndex: case isModuleIndex:
if (compactLatex) t << "\\section"; else t << "\\chapter"; if (!hideIndex)
t << "{"; //Module Index}\n" {
if (compactLatex) t << "\\section"; else t << "\\chapter";
t << "{"; //Module Index}\n"
}
break; break;
case isNamespaceIndex: case isNamespaceIndex:
if (compactLatex) t << "\\section"; else t << "\\chapter"; if (!hideIndex)
t << "{"; //Namespace Index}\" {
if (compactLatex) t << "\\section"; else t << "\\chapter";
t << "{"; //Namespace Index}\"
}
break; break;
case isClassHierarchyIndex: case isClassHierarchyIndex:
if (compactLatex) t << "\\section"; else t << "\\chapter"; if (!hideIndex)
t << "{"; //Hierarchical Index}\n" {
if (compactLatex) t << "\\section"; else t << "\\chapter";
t << "{"; //Hierarchical Index}\n"
}
break; break;
case isCompoundIndex: case isCompoundIndex:
if (compactLatex) t << "\\section"; else t << "\\chapter"; if (!hideIndex)
t << "{"; //Annotated Compound Index}\n" {
if (compactLatex) t << "\\section"; else t << "\\chapter";
t << "{"; //Annotated Compound Index}\n"
}
break; break;
case isFileIndex: case isFileIndex:
if (compactLatex) t << "\\section"; else t << "\\chapter"; if (!hideIndex)
t << "{"; //Annotated File Index}\n" {
if (compactLatex) t << "\\section"; else t << "\\chapter";
t << "{"; //Annotated File Index}\n"
}
break; break;
case isPageIndex: case isPageIndex:
if (compactLatex) t << "\\section"; else t << "\\chapter"; if (!hideIndex)
t << "{"; //Annotated Page Index}\n" {
if (compactLatex) t << "\\section"; else t << "\\chapter";
t << "{"; //Annotated Page Index}\n"
}
break; break;
// case isPackageDocumentation:
// {
// PackageSDict::Iterator pdi(Doxygen::packageDict);
// PackageDef *pd=pdi.toFirst();
// bool found=FALSE;
// while (pd && !found)
// {
// if (compactLatex) t << "\\section"; else t << "\\chapter";
// t << "{";
// found=TRUE;
// ++pdi;
// pd=pdi.current();
// }
// }
// break;
case isModuleDocumentation: case isModuleDocumentation:
{ {
GroupSDict::Iterator gli(Doxygen::groupSDict); GroupSDict::Iterator gli(Doxygen::groupSDict);
...@@ -622,6 +626,7 @@ void LatexGenerator::startIndexSection(IndexSections is) ...@@ -622,6 +626,7 @@ void LatexGenerator::startIndexSection(IndexSections is)
void LatexGenerator::endIndexSection(IndexSections is) void LatexGenerator::endIndexSection(IndexSections is)
{ {
bool &compactLatex = Config_getBool("COMPACT_LATEX"); bool &compactLatex = Config_getBool("COMPACT_LATEX");
bool &hideIndex = Config_getBool("LATEX_HIDE_INDICES");
QCString &latexHeader = Config_getString("LATEX_HEADER"); QCString &latexHeader = Config_getString("LATEX_HEADER");
switch (is) switch (is)
{ {
...@@ -642,48 +647,24 @@ void LatexGenerator::endIndexSection(IndexSections is) ...@@ -642,48 +647,24 @@ void LatexGenerator::endIndexSection(IndexSections is)
t << "\\input{" << indexName << "}\n"; t << "\\input{" << indexName << "}\n";
} }
break; break;
//case isPackageIndex:
// t << "}\n\\input{packages}\n";
// break;
case isModuleIndex: case isModuleIndex:
t << "}\n\\input{modules}\n"; if (!hideIndex) t << "}\n\\input{modules}\n";
break; break;
case isNamespaceIndex: case isNamespaceIndex:
t << "}\n\\input{namespaces}\n"; if (!hideIndex) t << "}\n\\input{namespaces}\n";
break; break;
case isClassHierarchyIndex: case isClassHierarchyIndex:
t << "}\n\\input{hierarchy}\n"; if (!hideIndex) t << "}\n\\input{hierarchy}\n";
break; break;
case isCompoundIndex: case isCompoundIndex:
t << "}\n\\input{annotated}\n"; if (!hideIndex) t << "}\n\\input{annotated}\n";
break; break;
case isFileIndex: case isFileIndex:
t << "}\n\\input{files}\n"; if (!hideIndex) t << "}\n\\input{files}\n";
break; break;
case isPageIndex: case isPageIndex:
t << "}\n\\input{pages}\n"; if (!hideIndex) t << "}\n\\input{pages}\n";
break; break;
//case isPackageDocumentation:
// {
// PackageSDict::Iterator pdi(Doxygen::packageDict);
// PackageDef *pd=pdi.toFirst();
// bool found=FALSE;
// while (pd && !found)
// {
// t << "}\n\\input{" << pd->getOutputFileBase() << "}\n";
// found=TRUE;
// ++pdi;
// pd=pdi.current();
// }
// while (pd)
// {
// if (compactLatex) t << "\\input"; else t << "\\include";
// t << "{" << pd->getOutputFileBase() << "}\n";
// ++pdi;
// pd=pdi.current();
// }
// }
// break;
case isModuleDocumentation: case isModuleDocumentation:
{ {
GroupSDict::Iterator gli(Doxygen::groupSDict); GroupSDict::Iterator gli(Doxygen::groupSDict);
......
...@@ -981,7 +981,7 @@ bool MemberDef::isDetailedSectionLinkable() const ...@@ -981,7 +981,7 @@ bool MemberDef::isDetailedSectionLinkable() const
) || ) ||
// has a multi-line initialization block // has a multi-line initialization block
//(initLines>0 && initLines<maxInitLines) || //(initLines>0 && initLines<maxInitLines) ||
hasMultiLineInitializer() || (hasMultiLineInitializer() && !Config_getBool("HIDE_UNDOC_MEMBERS")) ||
// has one or more documented arguments // has one or more documented arguments
(defArgList!=0 && defArgList->hasDocumentation()); (defArgList!=0 && defArgList->hasDocumentation());
......
...@@ -99,6 +99,7 @@ static bool g_nospaces; // add extra spaces during macro expansion ...@@ -99,6 +99,7 @@ static bool g_nospaces; // add extra spaces during macro expansion
static bool g_macroExpansion; // from the configuration static bool g_macroExpansion; // from the configuration
static bool g_expandOnlyPredef; // from the configuration static bool g_expandOnlyPredef; // from the configuration
static int g_commentCount; static int g_commentCount;
static bool g_insideComment;
static void setFileName(const char *name) static void setFileName(const char *name)
...@@ -1534,6 +1535,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1534,6 +1535,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr; QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr;
outputArray(tmp.data(),tmp.length()); outputArray(tmp.data(),tmp.length());
g_quoteArg=FALSE; g_quoteArg=FALSE;
g_insideComment=FALSE;
BEGIN(DefineText); BEGIN(DefineText);
} }
<DefName>{ID}/{B}*"\n" { <DefName>{ID}/{B}*"\n" {
...@@ -1549,6 +1551,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1549,6 +1551,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
QCString tmp=(QCString)"#define "+g_defName; QCString tmp=(QCString)"#define "+g_defName;
outputArray(tmp.data(),tmp.length()); outputArray(tmp.data(),tmp.length());
g_quoteArg=FALSE; g_quoteArg=FALSE;
g_insideComment=FALSE;
BEGIN(DefineText); BEGIN(DefineText);
} }
else // define is a guard => hide else // define is a guard => hide
...@@ -1590,6 +1593,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1590,6 +1593,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr; QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr;
outputArray(tmp.data(),tmp.length()); outputArray(tmp.data(),tmp.length());
g_quoteArg=FALSE; g_quoteArg=FALSE;
g_insideComment=FALSE;
BEGIN(DefineText); BEGIN(DefineText);
} }
<DefineArg>{ID}{B}*("..."?) { <DefineArg>{ID}{B}*("..."?) {
...@@ -1608,6 +1612,12 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1608,6 +1612,12 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<DefineText>"/**"|"/*!" { <DefineText>"/**"|"/*!" {
g_defText+=yytext; g_defText+=yytext;
g_defLitText+=yytext; g_defLitText+=yytext;
g_insideComment=TRUE;
}
<DefineText>"*/" {
g_defText+=yytext;
g_defLitText+=yytext;
g_insideComment=FALSE;
} }
<DefineText>"/*"|"/**<"|"/*!<" { <DefineText>"/*"|"/**<"|"/*!<" {
outputArray(yytext,yyleng); outputArray(yytext,yyleng);
...@@ -1757,13 +1767,20 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1757,13 +1767,20 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<DefineText>{B}* { g_defText += ' '; g_defLitText+=yytext; } <DefineText>{B}* { g_defText += ' '; g_defLitText+=yytext; }
<DefineText>{B}*"##"{B}* { g_defText += "##"; g_defLitText+=yytext; } <DefineText>{B}*"##"{B}* { g_defText += "##"; g_defLitText+=yytext; }
<DefineText>"@" { g_defText += "@@"; g_defLitText+=yytext; } <DefineText>"@" { g_defText += "@@"; g_defLitText+=yytext; }
<DefineText>\" { g_defText += *yytext; <DefineText>\" {
g_defText += *yytext;
g_defLitText+=yytext; g_defLitText+=yytext;
BEGIN(SkipDoubleQuote); if (!g_insideComment)
{
BEGIN(SkipDoubleQuote);
}
} }
<DefineText>\' { g_defText += *yytext; <DefineText>\' { g_defText += *yytext;
g_defLitText+=yytext; g_defLitText+=yytext;
BEGIN(SkipSingleQuote); if (!g_insideComment)
{
BEGIN(SkipSingleQuote);
}
} }
<SkipDoubleQuote>"//" { g_defText += yytext; g_defLitText+=yytext; } <SkipDoubleQuote>"//" { g_defText += yytext; g_defLitText+=yytext; }
<SkipDoubleQuote>"/*" { g_defText += yytext; g_defLitText+=yytext; } <SkipDoubleQuote>"/*" { g_defText += yytext; g_defLitText+=yytext; }
......
...@@ -194,6 +194,7 @@ static void initEntry() ...@@ -194,6 +194,7 @@ static void initEntry()
current->inside = memberGroupInside.copy(); current->inside = memberGroupInside.copy();
if (!autoGroupStack.isEmpty()) if (!autoGroupStack.isEmpty())
{ {
//printf("Appending group %s\n",autoGroupStack.top()->groupname.data());
current->groups->append(new Grouping(*autoGroupStack.top())); current->groups->append(new Grouping(*autoGroupStack.top()));
} }
} }
...@@ -534,7 +535,7 @@ UL [uU][lL] ...@@ -534,7 +535,7 @@ UL [uU][lL]
OL [oO][lL] OL [oO][lL]
DL [dD][lL] DL [dD][lL]
TITLE [tT][iI][tT][lL][eE] TITLE [tT][iI][tT][lL][eE]
CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
%option noyywrap %option noyywrap
...@@ -2594,7 +2595,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -2594,7 +2595,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
BEGIN(SkipCPP); BEGIN(SkipCPP);
} }
<Function>":" { <Function>":" {
BEGIN(SkipInits); if (!insidePHP) BEGIN(SkipInits);
} }
<Function>[;{,] { <Function>[;{,] {
current->name=current->name.simplifyWhiteSpace(); current->name=current->name.simplifyWhiteSpace();
......
...@@ -174,11 +174,14 @@ class TranslatorCzech : public Translator ...@@ -174,11 +174,14 @@ class TranslatorCzech : public Translator
*/ */
inline QCString decode(const QCString & sInput) inline QCString decode(const QCString & sInput)
{ {
#ifdef _WIN32 if (Config_getBool("USE_WINDOWS_ENCONDING"))
return sInput; {
#else return sInput;
return Win1250ToISO88592(sInput); }
#endif else
{
return Win1250ToISO88592(sInput);
}
} }
public: public:
...@@ -193,11 +196,14 @@ class TranslatorCzech : public Translator ...@@ -193,11 +196,14 @@ class TranslatorCzech : public Translator
/*! return the language charset. This will be used for the HTML output */ /*! return the language charset. This will be used for the HTML output */
virtual QCString idLanguageCharset() virtual QCString idLanguageCharset()
{ {
#ifdef _WIN32 if (Config_getBool("USE_WINDOWS_ENCONDING"))
{
return "windows-1250"; return "windows-1250";
#else }
else
{
return "iso-8859-2"; return "iso-8859-2";
#endif }
} }
// --- Language translation methods ------------------- // --- Language translation methods -------------------
......
...@@ -46,32 +46,43 @@ ...@@ -46,32 +46,43 @@
// //
// 2001/11/13 // 2001/11/13
// - Added strings for 1.2.13 // - Added strings for 1.2.13
//
// 2003/02/26
// - Added strings for 1.2.18
#ifndef TRANSLATOR_HR_H #ifndef TRANSLATOR_HR_H
#define TRANSLATOR_HR_H #define TRANSLATOR_HR_H
class TranslatorCroatian : public TranslatorAdapter_1_2_18 class TranslatorCroatian : public Translator
{ {
private: private:
/*! to avoid macro redefinition from translator_cz.h */ /*! to avoid macro redefinition from translator_cz.h */
inline QCString decode(const QCString& sInput) inline QCString decode(const QCString& sInput)
{ {
#ifdef _WIN32 if (Config_getBool("USE_WINDOWS_ENCODING"))
return ISO88592ToWin1250(sInput); {
#else return ISO88592ToWin1250(sInput);
return sInput; }
#endif else
{
return sInput;
}
} }
public: public:
QCString idLanguage() QCString idLanguage()
{ return "croatian"; } { return "croatian"; }
QCString idLanguageCharset() QCString idLanguageCharset()
#ifdef _WIN32 {
{ return "windows-1250"; } if (Config_getBool("USE_WINDOWS_ENCODING"))
#else {
{ return "iso-8859-2"; } return "windows-1250";
#endif }
else
{
return "iso-8859-2";
}
}
QCString latexLanguageSupportCommand() QCString latexLanguageSupportCommand()
{ return "\\usepackage[croatian]{babel}\n"; } { return "\\usepackage[croatian]{babel}\n"; }
QCString trRelatedFunctions() QCString trRelatedFunctions()
...@@ -1062,6 +1073,22 @@ class TranslatorCroatian : public TranslatorAdapter_1_2_18 ...@@ -1062,6 +1073,22 @@ class TranslatorCroatian : public TranslatorAdapter_1_2_18
{ {
return "Popis zastarjelih metoda"; return "Popis zastarjelih metoda";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.2.18
//////////////////////////////////////////////////////////////////////////
/*! Used as a header for declaration section of the events found in
* a C# program
*/
virtual QCString trEvents()
{
return decode("Dogaaji");
}
/*! Header used for the documentation section of a class' events. */
virtual QCString trEventDocumentation()
{
return decode("Dokumentacija dogaaja");
}
}; };
#endif #endif
...@@ -41,11 +41,14 @@ class TranslatorJapaneseEn : public TranslatorEnglish ...@@ -41,11 +41,14 @@ class TranslatorJapaneseEn : public TranslatorEnglish
/*! returns the name of the package that is included by LaTeX */ /*! returns the name of the package that is included by LaTeX */
virtual QCString idLanguageCharset() virtual QCString idLanguageCharset()
{ {
#ifdef __CYGWIN__ if (Config_getBool("USE_WINDOWS_ENCONDING"))
return "Shift_JIS"; {
#else return "Shift_JIS";
return "euc-jp"; }
#endif else
{
return "euc-jp";
}
} }
virtual QCString trRTFansicp() virtual QCString trRTFansicp()
{ {
...@@ -66,13 +69,16 @@ class TranslatorJapanese : public Translator ...@@ -66,13 +69,16 @@ class TranslatorJapanese : public Translator
private: private:
/*! The decode() can change euc into sjis */ /*! The decode() can change euc into sjis */
inline QCString decode(const QCString & sInput) inline QCString decode(const QCString & sInput)
{
if (Config_getBool("USE_WINDOWS_ENCONDING"))
{ {
#ifdef __CYGWIN__
return JapaneseEucToSjis(sInput); return JapaneseEucToSjis(sInput);
#else }
else
{
return sInput; return sInput;
#endif
} }
}
public: public:
virtual QCString idLanguage() virtual QCString idLanguage()
{ return "japanese"; } { return "japanese"; }
...@@ -83,11 +89,14 @@ class TranslatorJapanese : public Translator ...@@ -83,11 +89,14 @@ class TranslatorJapanese : public Translator
/*! returns the name of the package that is included by LaTeX */ /*! returns the name of the package that is included by LaTeX */
virtual QCString idLanguageCharset() virtual QCString idLanguageCharset()
{ {
#ifdef __CYGWIN__ if (Config_getBool("USE_WINDOWS_ENCONDING"))
return "Shift_JIS"; {
#else return "Shift_JIS";
return "euc-jp"; }
#endif else
{
return "euc-jp";
}
} }
/*! used in the compound documentation before a list of related functions. */ /*! used in the compound documentation before a list of related functions. */
......
This diff is collapsed.
...@@ -56,11 +56,14 @@ class TranslatorRussian : public Translator ...@@ -56,11 +56,14 @@ class TranslatorRussian : public Translator
*/ */
inline QCString decode(const QCString & sInput) inline QCString decode(const QCString & sInput)
{ {
#ifdef _WIN32 if (Config_getBool("USE_WINDOWS_ENCODING"))
return Koi8RToWindows1251(sInput); {
#else return Koi8RToWindows1251(sInput);
return sInput; }
#endif else
{
return sInput;
}
} }
public: public:
...@@ -70,19 +73,29 @@ class TranslatorRussian : public Translator ...@@ -70,19 +73,29 @@ class TranslatorRussian : public Translator
/* Used to get the command(s) for the language support. */ /* Used to get the command(s) for the language support. */
virtual QCString latexLanguageSupportCommand() virtual QCString latexLanguageSupportCommand()
#ifdef _WIN32 {
{ return "\\usepackage[cp1251]{inputenc}\n\\usepackage[russian]{babel}\n"; } if (Config_getBool("USE_WINDOWS_ENCODING"))
#else {
{ return "\\usepackage[koi8-r]{inputenc}\n\\usepackage[russian]{babel}\n"; } return "\\usepackage[cp1251]{inputenc}\n\\usepackage[russian]{babel}\n";
#endif }
else
{
return "\\usepackage[koi8-r]{inputenc}\n\\usepackage[russian]{babel}\n";
}
}
/*! return the language charset. This will be used for the HTML output */ /*! return the language charset. This will be used for the HTML output */
virtual QCString idLanguageCharset() virtual QCString idLanguageCharset()
#ifdef _WIN32 {
{ return "Windows-1251"; } if (Config_getBool("USE_WINDOWS_ENCODING"))
#else {
{ return "koi8-r"; } return "Windows-1251";
#endif }
else
{
return "koi8-r";
}
}
// --- Language translation methods ------------------- // --- Language translation methods -------------------
......
...@@ -2535,6 +2535,28 @@ bool resolveRef(/* in */ const char *scName, ...@@ -2535,6 +2535,28 @@ bool resolveRef(/* in */ const char *scName,
return FALSE; return FALSE;
} }
QCString linkToText(const char *link)
{
QCString result=link;
if (!result.isEmpty())
{
// replace # by ::
result=substitute(result,"#","::");
// replace . by ::
result=substitute(result,".","::");
// strip :: prefix if present
if (result.at(0)==':' && result.at(1)==':')
{
result=result.right(result.length()-2);
}
if (Config_getBool("OPTIMIZE_OUTPUT_JAVA"))
{
result=substitute(result,"::",".");
}
}
return result;
}
/*! /*!
* generate a reference to a class, namespace or member. * generate a reference to a class, namespace or member.
* `scName' is the name of the scope that contains the documentation * `scName' is the name of the scope that contains the documentation
...@@ -2563,17 +2585,7 @@ bool generateRef(OutputDocInterface &od,const char *scName, ...@@ -2563,17 +2585,7 @@ bool generateRef(OutputDocInterface &od,const char *scName,
MemberDef *md; MemberDef *md;
// create default link text // create default link text
QCString linkText = rt; QCString linkText = linkToText(rt);
if (linkText.isEmpty())
{
linkText=substitute(name,"#","::");
linkText=substitute(linkText,".","::");
// strip :: prefix if present
if (linkText.at(0)==':' && linkText.at(1)==':')
{
linkText=linkText.right(linkText.length()-2);
}
}
if (resolveRef(scName,name,inSeeBlock,&compound,&md)) if (resolveRef(scName,name,inSeeBlock,&compound,&md))
{ {
...@@ -2699,17 +2711,7 @@ bool generateLink(OutputDocInterface &od,const char *clName, ...@@ -2699,17 +2711,7 @@ bool generateLink(OutputDocInterface &od,const char *clName,
//printf("generateLink(clName=%s,lr=%s,lr=%s)\n",clName,lr,lt); //printf("generateLink(clName=%s,lr=%s,lr=%s)\n",clName,lr,lt);
Definition *compound; Definition *compound;
PageInfo *pageInfo; PageInfo *pageInfo;
QCString anchor,linkText=lt; QCString anchor,linkText=linkToText(lt);
if (linkText.isEmpty())
{
linkText=substitute(lr,"#","::");
linkText=substitute(linkText,".","::");
// strip :: prefix if present
if (linkText.at(0)==':' && linkText.at(1)==':')
{
linkText=linkText.right(linkText.length()-2);
}
}
//printf("generateLink linkText=%s\n",linkText.data()); //printf("generateLink linkText=%s\n",linkText.data());
if (resolveLink(clName,lr,inSeeBlock,&compound,&pageInfo,anchor)) if (resolveLink(clName,lr,inSeeBlock,&compound,&pageInfo,anchor))
{ {
......
...@@ -203,6 +203,7 @@ void filterLatexString(QTextStream &t,const char *str, ...@@ -203,6 +203,7 @@ void filterLatexString(QTextStream &t,const char *str,
bool insideTabbing=FALSE,bool insidePre=FALSE, bool insideTabbing=FALSE,bool insidePre=FALSE,
bool insideItem=FALSE); bool insideItem=FALSE);
QCString rtfFormatBmkStr(const char *name); QCString rtfFormatBmkStr(const char *name);
QCString linkToText(const char *link);
#endif #endif
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