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

Release-1.2.17-20020811

parent d40e1dfa
DOXYGEN Version 1.2.17-20020804
DOXYGEN Version 1.2.17-20020811
Please read the installation section of the manual for instructions.
--------
Dimitri van Heesch (04 August 2002)
Dimitri van Heesch (11 August 2002)
DOXYGEN Version 1.2.17_20020804
DOXYGEN Version 1.2.17_20020811
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) (04 August 2002)
Dimitri van Heesch (dimitri@stack.nl) (11 August 2002)
1.2.17-20020804
1.2.17-20020811
......@@ -58,7 +58,7 @@ of macros. This is to allow macro names to appear in the type of
function parameters for instance.
Another difference is that the preprocessor parses, but not actually includes
code when it encounters a #include (with the exception of #include
code when it encounters a \#include (with the exception of \#include
found inside { ... } blocks). The reasons behind this deviation from
the standard is to prevent feeding multiple definitions of the
same functions/classes to doxygen's parser. If all source files would
......@@ -67,7 +67,7 @@ definitions (and their documentation) would be present in each
translation unit.
The preprocessor is written using \c flex and can be found in
\c src/pre.l. For condition blocks (#if) evaluation of constant expressions
\c src/pre.l. For condition blocks (\#if) evaluation of constant expressions
is needed. For this a \c yacc based parser is used, which can be found
in \c src/constexp.y and \c src/constexp.l.
......
......@@ -62,7 +62,7 @@
<li><tt>(\<className\>"::")<sup>n</sup>\<functionName\>"()"</tt>
<li><tt>(\<className\>"::")<sup>n</sup>\<functionName\></tt>
</ol>
where n>0.
where n\>0.
\par Note 1:
The patterns above should not contain spaces, tabs or newlines.
......
......@@ -90,6 +90,7 @@ documentation:
\refitem cmdline \\line
\refitem cmdlink \\link
\refitem cmdmainpage \\mainpage
\refitem cmdn \\n
\refitem cmdname \\name
\refitem cmdnamespace \\namespace
\refitem cmdnosubgrouping \\nosubgrouping
......@@ -205,7 +206,7 @@ doxygen. Unrecognized commands are treated as normal text.
\addindex \\def
Indicates that a comment block contains documentation for a
\c #define macro.
\c \#define macro.
\par Example:
\verbinclude define.h
......@@ -1626,6 +1627,13 @@ ALIASES = "english=\if english" \
Equivalent to \ref cmdarg "\\arg"
<hr>
\section cmdn \n
\addindex \\n
Forces a new line. Equivalent to \<br\> and inspired by
the printf function.
<hr>
\section cmdp \p <word>
......
......@@ -104,7 +104,7 @@ You can document your class like
To make doxygen put <br><br>
<code>
#include \<path/include.h\>
\#include \<path/include.h\>
</code>
in the documentation of the class MyClassName regardless of the name of the actual
......@@ -192,15 +192,15 @@ remove the % and keep the word unlinked.
This error happens when doxygen lexical scanner has a rules that matches
more than 16K input character in one go. I've seen this happening
on a very large generated file (>16K lines), where the built-in preprocessor
converted it into an empty file (with >16K of newlines). Another case
on a very large generated file (\>16K lines), where the built-in preprocessor
converted it into an empty file (with \>16K of newlines). Another case
where this might happen is if you have lines in your code with more than
16K characters.
If you have ran into such a case and want me to fix it, you
should send me a code fragment that triggers the message.
<li><b>How did doxygen get it's name?</b>
<li><b>How did doxygen get its name?</b>
Doxygen got its name from playing with the words
documentation and generator.
......
......@@ -23,73 +23,73 @@ documentation. Note that all attributes of a HTML tag are ignored
<ul>
<li><tt>\<A HREF="..."\></tt> Starts a HTML hyper-link (HTML only).
<li><tt>\<A NAME="..."\></tt> Starts an named anchor (HTML only).
<li><tt>\</A></tt> Ends a link or anchor (HTML only).
<li><tt>\<B></tt> Starts a piece of text displayed in a bold font.
<li><tt>\</B></tt> Ends a <tt>\<B\></tt> section.
<li><tt>\<BODY></tt> Does not generate any output.
<li><tt>\</BODY></tt> Does not generate any output.
<li><tt>\<BR></tt> Forces a line break.
<li><tt>\<CENTER></tt> starts a section of centered text.
<li><tt>\</CENTER></tt> ends a section of centered text.
<li><tt>\<CAPTION></tt> Starts a caption. Use within a table only.
<li><tt>\</CAPTION></tt> Ends a caption. Use within a table only.
<li><tt>\<CODE></tt> Starts a piece of text displayed in a typewriter font.
<li><tt>\</CODE></tt> End a <tt>\<CODE\></tt> section.
<li><tt>\<DD></tt> Starts an item description.
<li><tt>\<DFN></tt> Starts a piece of text displayed in a typewriter font.
<li><tt>\</DFN></tt> Ends a <tt>\<DFN\></tt> section.
<li><tt>\<DL></tt> Starts a description list.
<li><tt>\</DL></tt> Ends a description list.
<li><tt>\<DT></tt> Starts an item title.
<li><tt>\</DT></tt> Ends an item title.
<li><tt>\<EM></tt> Starts a piece of text displayed in an italic font.
<li><tt>\</EM></tt> Ends a <tt>\<EM\></tt> section.
<li><tt>\<FORM></tt> Does not generate any output.
<li><tt>\</FORM></tt> Does not generate any output.
<li><tt>\<HR></tt> Writes a horizontal ruler.
<li><tt>\<H1></tt> Starts an unnumbered section.
<li><tt>\</H1></tt> Ends an unnumberd section.
<li><tt>\<H2></tt> Starts an unnumbered subsection.
<li><tt>\</H2></tt> Ends an unnumbered subsection.
<li><tt>\<H3></tt> Starts an unnumbered subsubsection.
<li><tt>\</H3></tt> Ends an unnumbered subsubsection.
<li><tt>\<I></tt> Starts a piece of text displayed in an italic font.
<li><tt>\<INPUT></tt> Does not generate any output.
<li><tt>\</I></tt> Ends a <tt>\<I\></tt> section.
<li><tt>\<IMG></tt> This command is written with attributes to the HTML output only.
<li><tt>\<LI></tt> Starts a new list item.
<li><tt>\</LI></tt> Ends a list item.
<li><tt>\<META></tt> Does not generate any output.
<li><tt>\<MULTICOL></tt> ignored by doxygen.
<li><tt>\</MUTLICOL></tt> ignored by doxygen.
<li><tt>\<OL></tt> Starts a numbered item list.
<li><tt>\</OL></tt> Ends a numbered item list.
<li><tt>\<P></tt> Starts a new paragraph.
<li><tt>\</P></tt> Ends a paragraph.
<li><tt>\<PRE></tt> Starts a preformatted fragment.
<li><tt>\</PRE></tt> Ends a preformatted fragment.
<li><tt>\<SMALL></tt> Starts a section of text displayed in a smaller font.
<li><tt>\</SMALL></tt> Ends a <tt>\<SMALL\></tt> section.
<li><tt>\<STRONG></tt> Starts a section of bold text.
<li><tt>\</STRONG></tt> Ends a section of bold text.
<li><tt>\<SUB></tt> Starts a piece of text displayed in subscript.
<li><tt>\</SUB></tt> Ends a <tt>\<SUB\></tt> section.
<li><tt>\<SUP></tt> Starts a piece of text displayed in superscript.
<li><tt>\</SUP></tt> Ends a <tt>\</SUP\></tt> section.
<li><tt>\<TABLE></tt> starts a table.
<li><tt>\</TABLE></tt> ends a table.
<li><tt>\<TD></tt> Starts a new table data element.
<li><tt>\</TD></tt> Ends a table data element.
<li><tt>\<TR></tt> Starts a new table row.
<li><tt>\</TR></tt> Ends a table row.
<li><tt>\<TT></tt> Starts a piece of text displayed in a typewriter font.
<li><tt>\</TT></tt> Ends a <tt>\<TT\></tt> section.
<li><tt>\<KBD></tt> Starts a piece of text displayed in a typewriter font.
<li><tt>\</KBD></tt> Ends a <tt>\<KBD\></tt> section.
<li><tt>\<UL></tt> Starts an unnumbered item list.
<li><tt>\</UL></tt> Ends an unnumbered item list.
<li><tt>\<VAR></tt> Starts a piece of text displayed in an italic font.
<li><tt>\</VAR></tt> Ends a <tt>\</VAR\></tt> section.
<li><tt>\</A\></tt> Ends a link or anchor (HTML only).
<li><tt>\<B\></tt> Starts a piece of text displayed in a bold font.
<li><tt>\</B\></tt> Ends a <tt>\<B\></tt> section.
<li><tt>\<BODY\></tt> Does not generate any output.
<li><tt>\</BODY\></tt> Does not generate any output.
<li><tt>\<BR\></tt> Forces a line break.
<li><tt>\<CENTER\></tt> starts a section of centered text.
<li><tt>\</CENTER\></tt> ends a section of centered text.
<li><tt>\<CAPTION\></tt> Starts a caption. Use within a table only.
<li><tt>\</CAPTION\></tt> Ends a caption. Use within a table only.
<li><tt>\<CODE\></tt> Starts a piece of text displayed in a typewriter font.
<li><tt>\</CODE\></tt> End a <tt>\<CODE\></tt> section.
<li><tt>\<DD\></tt> Starts an item description.
<li><tt>\<DFN\></tt> Starts a piece of text displayed in a typewriter font.
<li><tt>\</DFN\></tt> Ends a <tt>\<DFN\></tt> section.
<li><tt>\<DL\></tt> Starts a description list.
<li><tt>\</DL\></tt> Ends a description list.
<li><tt>\<DT\></tt> Starts an item title.
<li><tt>\</DT\></tt> Ends an item title.
<li><tt>\<EM\></tt> Starts a piece of text displayed in an italic font.
<li><tt>\</EM\></tt> Ends a <tt>\<EM\></tt> section.
<li><tt>\<FORM\></tt> Does not generate any output.
<li><tt>\</FORM\></tt> Does not generate any output.
<li><tt>\<HR\></tt> Writes a horizontal ruler.
<li><tt>\<H1\></tt> Starts an unnumbered section.
<li><tt>\</H1\></tt> Ends an unnumberd section.
<li><tt>\<H2\></tt> Starts an unnumbered subsection.
<li><tt>\</H2\></tt> Ends an unnumbered subsection.
<li><tt>\<H3\></tt> Starts an unnumbered subsubsection.
<li><tt>\</H3\></tt> Ends an unnumbered subsubsection.
<li><tt>\<I\></tt> Starts a piece of text displayed in an italic font.
<li><tt>\<INPUT\></tt> Does not generate any output.
<li><tt>\</I\></tt> Ends a <tt>\<I\></tt> section.
<li><tt>\<IMG\></tt> This command is written with attributes to the HTML output only.
<li><tt>\<LI\></tt> Starts a new list item.
<li><tt>\</LI\></tt> Ends a list item.
<li><tt>\<META\></tt> Does not generate any output.
<li><tt>\<MULTICOL\></tt> ignored by doxygen.
<li><tt>\</MUTLICOL\></tt> ignored by doxygen.
<li><tt>\<OL\></tt> Starts a numbered item list.
<li><tt>\</OL\></tt> Ends a numbered item list.
<li><tt>\<P\></tt> Starts a new paragraph.
<li><tt>\</P\></tt> Ends a paragraph.
<li><tt>\<PRE\></tt> Starts a preformatted fragment.
<li><tt>\</PRE\></tt> Ends a preformatted fragment.
<li><tt>\<SMALL\></tt> Starts a section of text displayed in a smaller font.
<li><tt>\</SMALL\></tt> Ends a <tt>\<SMALL\></tt> section.
<li><tt>\<STRONG\></tt> Starts a section of bold text.
<li><tt>\</STRONG\></tt> Ends a section of bold text.
<li><tt>\<SUB\></tt> Starts a piece of text displayed in subscript.
<li><tt>\</SUB\></tt> Ends a <tt>\<SUB\></tt> section.
<li><tt>\<SUP\></tt> Starts a piece of text displayed in superscript.
<li><tt>\</SUP\></tt> Ends a <tt>\</SUP\></tt> section.
<li><tt>\<TABLE\></tt> starts a table.
<li><tt>\</TABLE\></tt> ends a table.
<li><tt>\<TD\></tt> Starts a new table data element.
<li><tt>\</TD\></tt> Ends a table data element.
<li><tt>\<TR\></tt> Starts a new table row.
<li><tt>\</TR\></tt> Ends a table row.
<li><tt>\<TT\></tt> Starts a piece of text displayed in a typewriter font.
<li><tt>\</TT\></tt> Ends a <tt>\<TT\></tt> section.
<li><tt>\<KBD\></tt> Starts a piece of text displayed in a typewriter font.
<li><tt>\</KBD\></tt> Ends a <tt>\<KBD\></tt> section.
<li><tt>\<UL\></tt> Starts an unnumbered item list.
<li><tt>\</UL\></tt> Ends an unnumbered item list.
<li><tt>\<VAR\></tt> Starts a piece of text displayed in an italic font.
<li><tt>\</VAR\></tt> Ends a <tt>\</VAR\></tt> section.
</ul>
The special HTML character entities that are recognized by Doxygen:
......
......@@ -181,8 +181,9 @@ Compilation is now done by performing the following steps:
directory manually to some <code>bin</code> directory in your search path.
This is sufficient to use doxygen.
\note You need the GNU install tool for this to work. Other
install tools may put the binaries in the wrong directory!
\note You need the GNU install tool for this to work (it is part of
the fileutils package). Other install tools may put the binaries in
the wrong directory!
If you have a RPM or DEP package, then please follow the
standard installation procedure that is required for these packages.
......
......@@ -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
languages other than English (the default) at configuration time.
Currently (version 1.2.14-20020317), 27 languages
Currently (version 1.2.17-20020804), 27 languages
are supported (sorted alphabetically):
Brazilian Portuguese, Chinese, Chinese Traditional, Croatian, Czech,
Danish, Dutch, English, Finnish, French,
......@@ -133,7 +133,7 @@ when the translator was updated.
<TD>Italian</TD>
<TD>Alessandro Falappa<br>Ahmed Aldo Faisal</TD>
<TD>alessandro@NOSPAM.falappa.net<br>aaf23@NOSPAM.cam.ac.uk</TD>
<TD>1.2.17</TD>
<TD>up-to-date</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Japanese</TD>
......@@ -175,7 +175,7 @@ when the translator was updated.
<TD>Russian</TD>
<TD>Alexandr Chelpanov</TD>
<TD>cav@NOSPAM.cryptopro.ru</TD>
<TD>1.2.17</TD>
<TD>up-to-date</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Serbian</TD>
......@@ -252,7 +252,7 @@ when the translator was updated.
\hline
Hungarian & F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt foldvari@diatronltd.com} & 1.2.1 \\
\hline
Italian & Alessandro Falappa & {\tt alessandro@falappa.net} & 1.2.17 \\
Italian & Alessandro Falappa & {\tt alessandro@falappa.net} & up-to-date \\
& Ahmed Aldo Faisal & {\tt aaf23@cam.ac.uk} & \\
\hline
Japanese & Ryunosuke Sato & {\tt puyo@mint.freemail.ne.jp} & 1.2.17 \\
......@@ -269,7 +269,7 @@ when the translator was updated.
\hline
Romanian & Alexandru Iosup & {\tt aiosup@yahoo.com} & 1.2.16 \\
\hline
Russian & Alexandr Chelpanov & {\tt cav@cryptopro.ru} & 1.2.17 \\
Russian & Alexandr Chelpanov & {\tt cav@cryptopro.ru} & up-to-date \\
\hline
Serbian & Dejan Milosavljevic & {\tt dmilos@email.com} & 1.2.16 \\
\hline
......@@ -315,8 +315,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
......@@ -346,7 +346,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
......
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.2.17_20020804
Version: 1.2.17_20020811
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
......@@ -39,7 +39,10 @@
static QCString stripExtension(const char *fName)
{
QCString result=fName;
if (result.right(htmlFileExtensionLength)==htmlFileExtension) result=result.left(result.length()-htmlFileExtensionLength);
if (result.right(Doxygen::htmlFileExtension.length())==Doxygen::htmlFileExtension)
{
result=result.left(result.length()-Doxygen::htmlFileExtension.length());
}
return result;
}
......@@ -853,7 +856,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
Doxygen::tagFile << " <compound kind=\"" << compoundTypeString();
Doxygen::tagFile << "\">" << endl;
Doxygen::tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
Doxygen::tagFile << " <filename>" << convertToXML(getOutputFileBase()) << htmlFileExtension << "</filename>" << endl;
Doxygen::tagFile << " <filename>" << convertToXML(getOutputFileBase()) << Doxygen::htmlFileExtension << "</filename>" << endl;
if (m_tempArgs)
{
ArgumentListIterator ali(*m_tempArgs);
......@@ -993,7 +996,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
ol.writeString("<center><font size=\"2\">[");
ol.startHtmlLink("graph_legend"+htmlFileExtension);
ol.startHtmlLink("graph_legend"+Doxygen::htmlFileExtension);
ol.docify(theTranslator->trLegend());
ol.endHtmlLink();
ol.writeString("]</font></center>");
......@@ -1028,7 +1031,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
ol.writeString("<center><font size=\"2\">[");
ol.startHtmlLink("graph_legend"+htmlFileExtension);
ol.startHtmlLink("graph_legend"+Doxygen::htmlFileExtension);
ol.docify(theTranslator->trLegend());
ol.endHtmlLink();
ol.writeString("]</font></center>");
......
......@@ -86,7 +86,8 @@ CommandMap cmdMap[] =
{ "verbinclude", CMD_VERBINCLUDE },
{ "version", CMD_VERSION },
{ "warning", CMD_WARNING },
{ "authors", CMD_AUTHOR },
{ "author", CMD_AUTHOR },
{ "authors", CMD_AUTHORS },
{ "throws", CMD_EXCEPTION },
{ "\\", CMD_BSLASH },
{ "@", CMD_AT },
......@@ -97,6 +98,7 @@ CommandMap cmdMap[] =
{ "#", CMD_HASH },
{ "%", CMD_PERCENT },
{ "~", CMD_LANGSWITCH },
{ "_internalref", CMD_INTERNALREF },
{ 0, 0 }
};
......
......@@ -31,73 +31,75 @@ const int SIMPLESECT_BIT = 0x1000;
enum CommandType
{
CMD_UNKNOWN=0,
CMD_ADDINDEX=1, /* DocIndex, word as arg */
CMD_ANCHOR=2,
CMD_ATTENTION=3 | SIMPLESECT_BIT,
CMD_AUTHOR=4 | SIMPLESECT_BIT,
CMD_BOLD=5,
CMD_BUG=6 | SIMPLESECT_BIT,
CMD_CODE=7,
CMD_COPYDOC=8, /* reference yields subtree */
CMD_DATE=9 | SIMPLESECT_BIT,
CMD_DEPRECATED=10 | SIMPLESECT_BIT,
CMD_DONTINCLUDE=11, /* file name */
CMD_DOTFILE=12, /* file name */
CMD_EMPHASIS =13,
CMD_ENDCODE=14,
CMD_ENDHTMLONLY=15,
CMD_ENDLATEXONLY=16,
CMD_ENDLINK=17,
CMD_ENDVERBATIM=18 ,
CMD_EXCEPTION=19 | SIMPLESECT_BIT,
CMD_HTMLINCLUDE=20 ,
CMD_HTMLONLY=21 ,
CMD_IMAGE=22 , /* some number of arguments */
CMD_INCLUDE=23 ,
CMD_INTERNAL=24 , /* node, with sub paragraphs? */
CMD_INVARIANT=25| SIMPLESECT_BIT ,
CMD_LATEXONLY=26 ,
CMD_LI=27 ,
CMD_LINE=28 ,
CMD_LINK=29 , /* argument + "text", TODO {@link...} */
CMD_NOTE=30 | SIMPLESECT_BIT ,
CMD_PAR=31 | SIMPLESECT_BIT ,
CMD_PARAM=32 | SIMPLESECT_BIT,
CMD_POST=33 | SIMPLESECT_BIT,
CMD_PRE=34 | SIMPLESECT_BIT ,
CMD_REF=35 ,
CMD_SECREFITEM=36 ,
CMD_REMARK=37 | SIMPLESECT_BIT ,
CMD_RETURN=38 | SIMPLESECT_BIT ,
CMD_RETVAL=39 | SIMPLESECT_BIT,
CMD_SA=40 | SIMPLESECT_BIT ,
CMD_SECTION=41 ,
CMD_SINCE=42 | SIMPLESECT_BIT,
CMD_SKIP=43 ,
CMD_SKIPLINE=44 ,
CMD_STARTCODE=45,
CMD_JAVALINK=46,
CMD_TEST=47 | SIMPLESECT_BIT,
CMD_TODO=48 | SIMPLESECT_BIT,
CMD_UNTIL=49 ,
CMD_VERBATIM=50 ,
CMD_VERBINCLUDE=51 ,
CMD_VERSION=52 | SIMPLESECT_BIT,
CMD_WARNING=53 | SIMPLESECT_BIT ,
CMD_BSLASH=54 ,
CMD_AT=55 ,
CMD_LESS=56 ,
CMD_GREATER=57 ,
CMD_AMP=58 ,
CMD_DOLLAR=59 ,
CMD_HASH=60 ,
CMD_PERCENT=61,
CMD_LINEBREAK=62,
CMD_FORMULA=63,
CMD_SECREFLIST=64,
CMD_ENDSECREFLIST=65,
CMD_LANGSWITCH=66
CMD_UNKNOWN = 0,
CMD_ADDINDEX = 1,
CMD_ANCHOR = 2,
CMD_ATTENTION = 3 | SIMPLESECT_BIT,
CMD_AUTHOR = 4 | SIMPLESECT_BIT,
CMD_BOLD = 5,
CMD_BUG = 6 | SIMPLESECT_BIT,
CMD_CODE = 7,
CMD_COPYDOC = 8,
CMD_DATE = 9 | SIMPLESECT_BIT,
CMD_DEPRECATED = 10 | SIMPLESECT_BIT,
CMD_DONTINCLUDE = 11,
CMD_DOTFILE = 12,
CMD_EMPHASIS = 13,
CMD_ENDCODE = 14,
CMD_ENDHTMLONLY = 15,
CMD_ENDLATEXONLY = 16,
CMD_ENDLINK = 17,
CMD_ENDVERBATIM = 18,
CMD_EXCEPTION = 19 | SIMPLESECT_BIT,
CMD_HTMLINCLUDE = 20,
CMD_HTMLONLY = 21,
CMD_IMAGE = 22,
CMD_INCLUDE = 23,
CMD_INTERNAL = 24,
CMD_INVARIANT = 25 | SIMPLESECT_BIT ,
CMD_LATEXONLY = 26,
CMD_LI = 27,
CMD_LINE = 28,
CMD_LINK = 29,
CMD_NOTE = 30 | SIMPLESECT_BIT ,
CMD_PAR = 31 | SIMPLESECT_BIT ,
CMD_PARAM = 32 | SIMPLESECT_BIT,
CMD_POST = 33 | SIMPLESECT_BIT,
CMD_PRE = 34 | SIMPLESECT_BIT ,
CMD_REF = 35,
CMD_SECREFITEM = 36,
CMD_REMARK = 37 | SIMPLESECT_BIT ,
CMD_RETURN = 38 | SIMPLESECT_BIT ,
CMD_RETVAL = 39 | SIMPLESECT_BIT,
CMD_SA = 40 | SIMPLESECT_BIT ,
CMD_SECTION = 41,
CMD_SINCE = 42 | SIMPLESECT_BIT,
CMD_SKIP = 43,
CMD_SKIPLINE = 44,
CMD_STARTCODE = 45,
CMD_JAVALINK = 46,
CMD_TEST = 47 | SIMPLESECT_BIT,
CMD_TODO = 48 | SIMPLESECT_BIT,
CMD_UNTIL = 49,
CMD_VERBATIM = 50,
CMD_VERBINCLUDE = 51,
CMD_VERSION = 52 | SIMPLESECT_BIT,
CMD_WARNING = 53 | SIMPLESECT_BIT ,
CMD_BSLASH = 54,
CMD_AT = 55,
CMD_LESS = 56,
CMD_GREATER = 57,
CMD_AMP = 58,
CMD_DOLLAR = 59,
CMD_HASH = 60,
CMD_PERCENT = 61,
CMD_LINEBREAK = 62,
CMD_FORMULA = 63,
CMD_SECREFLIST = 64,
CMD_ENDSECREFLIST= 65,
CMD_LANGSWITCH = 66,
CMD_AUTHORS = 67 | SIMPLESECT_BIT,
CMD_INTERNALREF = 68
};
enum HtmlTagType
......
......@@ -21,11 +21,11 @@
#include "qtbc.h"
#include <stdio.h>
class OutputDocInterface;
class BaseCodeDocInterface;
class FileDef;
class MemberDef;
extern void parseCode(OutputDocInterface &,const char *,const QCString &,
extern void parseCode(BaseCodeDocInterface &,const char *,const QCString &,
bool ,const char *,FileDef *fd=0,
int startLine=-1,int endLine=-1,bool inlineFragment=FALSE);
extern void initParseCodeContext();
......
......@@ -48,7 +48,7 @@
* statics
*/
static OutputDocInterface * g_code;
static BaseCodeDocInterface * g_code;
static ClassSDict g_codeClassSDict(17);
static ClassDef *g_curClassDef;
......@@ -414,7 +414,7 @@ static void codifyLines(char *text)
* line numbers for each line. If \a text contains newlines, the link will be
* split into multiple links with the same destination, one for each line.
*/
static void writeMultiLineCodeLink(OutputDocInterface &ol,
static void writeMultiLineCodeLink(BaseCodeDocInterface &ol,
const char *ref,const char *file,
const char *anchor,const char *text)
{
......@@ -610,7 +610,7 @@ static void addDocCrossReference(MemberDef *src,MemberDef *dst)
}
static void generateClassOrGlobalLink(OutputDocInterface &ol,char *clName,int *clNameLen=0)
static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,int *clNameLen=0)
{
int i=0;
if (*clName=='~') // correct for matching negated values i.s.o. destructors.
......@@ -642,11 +642,7 @@ static void generateClassOrGlobalLink(OutputDocInterface &ol,char *clName,int *c
// g_exampleFile.data());
if (cd->addExample(anchor,g_exampleName,g_exampleFile))
{
ol.pushGeneratorState();
ol.disable(OutputGenerator::Latex);
ol.disable(OutputGenerator::RTF);
ol.writeAnchor(0,anchor);
ol.popGeneratorState();
ol.writeCodeAnchor(anchor);
g_anchorCount++;
}
}
......@@ -681,7 +677,8 @@ static void generateClassOrGlobalLink(OutputDocInterface &ol,char *clName,int *c
}
static bool getLink(const char *className,
const char *memberName,OutputDocInterface &result,
const char *memberName,
BaseCodeDocInterface &ol,
const char *text=0)
{
MemberDef *md;
......@@ -704,13 +701,7 @@ static bool getLink(const char *className,
// g_exampleFile.data());
if (md->addExample(anchor,g_exampleName,g_exampleFile))
{
//bool latexEnabled = result.isEnabled(OutputGenerator::Latex);
result.pushGeneratorState();
//if (latexEnabled) result.disable(OutputGenerator::Latex);
result.disable(OutputGenerator::Latex);
result.writeAnchor(0,anchor);
result.popGeneratorState();
//if (latexEnabled) result.enable(OutputGenerator::Latex);
ol.writeCodeAnchor(anchor);
g_anchorCount++;
}
}
......@@ -733,7 +724,7 @@ static bool getLink(const char *className,
}
//printf("d->getOutputBase()=`%s' name=`%s' member name=`%s'\n",d->getOutputFileBase().data(),d->name().data(),md->name().data());
writeMultiLineCodeLink(result,d->getReference(),d->getOutputFileBase(),
writeMultiLineCodeLink(ol,d->getReference(),d->getOutputFileBase(),
md->getBodyAnchor(),text ? text : memberName);
return TRUE;
}
......@@ -741,7 +732,7 @@ static bool getLink(const char *className,
return FALSE;
}
static bool generateClassMemberLink(OutputDocInterface &ol,ClassDef *mcd,const char *memName)
static bool generateClassMemberLink(BaseCodeDocInterface &ol,ClassDef *mcd,const char *memName)
{
if (mcd)
{
......@@ -764,10 +755,7 @@ static bool generateClassMemberLink(OutputDocInterface &ol,ClassDef *mcd,const c
// g_exampleFile.data());
if (xmd->addExample(anchor,g_exampleName,g_exampleFile))
{
ol.pushGeneratorState();
ol.disable(OutputGenerator::Latex);
ol.writeAnchor(0,anchor);
ol.popGeneratorState();
ol.writeCodeAnchor(anchor);
g_anchorCount++;
}
}
......@@ -799,7 +787,7 @@ static bool generateClassMemberLink(OutputDocInterface &ol,ClassDef *mcd,const c
return FALSE;
}
static void generateMemberLink(OutputDocInterface &ol,const QCString &varName,
static void generateMemberLink(BaseCodeDocInterface &ol,const QCString &varName,
char *memName)
{
//printf("generateMemberLink(object=%s,mem=%s) classScope=%s\n",
......@@ -812,23 +800,17 @@ static void generateMemberLink(OutputDocInterface &ol,const QCString &varName,
if (vcd)
{
//printf("Class found!\n");
OutputDocInterface *result = ol.clone();
if (getLink(vcd->name(),memName,*result))
if (getLink(vcd->name(),memName,ol))
{
//printf("Found result!\n");
ol.append(result);
delete result;
return;
}
BaseClassListIterator bcli(*vcd->baseClasses());
for ( ; bcli.current() ; ++bcli)
{
OutputDocInterface *result = ol.clone();
if (getLink(bcli.current()->classDef->name(),memName,*result))
if (getLink(bcli.current()->classDef->name(),memName,ol))
{
//printf("Found result!\n");
ol.append(result);
delete result;
return;
}
}
......@@ -896,9 +878,8 @@ static void generateMemberLink(OutputDocInterface &ol,const QCString &varName,
return;
}
static void generateFunctionLink(OutputDocInterface &ol,char *funcName)
static void generateFunctionLink(BaseCodeDocInterface &ol,char *funcName)
{
OutputDocInterface *result = ol.clone();
//CodeClassDef *ccd=0;
ClassDef *ccd=0;
QCString locScope=g_classScope.copy();
......@@ -924,24 +905,16 @@ static void generateFunctionLink(OutputDocInterface &ol,char *funcName)
BaseClassListIterator bcli(*ccd->baseClasses());
for ( ; bcli.current() ; ++bcli)
{
if (getLink(bcli.current()->classDef->name(),locFunc,*result,funcName))
if (getLink(bcli.current()->classDef->name(),locFunc,ol,funcName))
{
ol.append(result);
delete result;
return;
}
}
}
if (getLink(locScope,locFunc,*result,funcName))
if (!getLink(locScope,locFunc,ol,funcName))
{
ol.append(result);
}
else
{
//codifyLines(funcName);
generateClassOrGlobalLink(ol,funcName);
}
delete result;
return;
}
......@@ -2008,12 +1981,12 @@ void initParseCodeContext()
g_anchorCount = 0;
}
void parseCode(OutputDocInterface &od,const char *className,const QCString &s,
void parseCode(BaseCodeDocInterface &od,const char *className,const QCString &s,
bool exBlock, const char *exName,FileDef *fd,
int startLine,int endLine,bool inlineFragment)
{
if (s.isEmpty()) return;
g_code = od.clone();
g_code = &od;
g_inputString = s;
g_inputPosition = 0;
g_currentFontClass = 0;
......@@ -2060,8 +2033,6 @@ void parseCode(OutputDocInterface &od,const char *className,const QCString &s,
endFontClass();
g_code->endCodeLine();
}
od.append(g_code);
delete g_code;
return;
}
......
......@@ -408,6 +408,9 @@ void Definition::writeSourceRefList(OutputList &ol,const char *scopeName,
name.prepend(scope+"::");
}
}
if (md->isFunction() || md->isSlot() ||
md->isPrototype() || md->isSignal()
) name+="()";
Definition *d = md->getOuterScope();
if (d==Doxygen::globalScope) d=md->getBodyDef();
if (md->getStartBodyLine()!=-1 && md->getBodyDef())
......@@ -447,7 +450,6 @@ void Definition::writeSourceRefList(OutputList &ol,const char *scopeName,
{
ol.docify(name);
}
if (md->isFunction() || md->isSlot() || md->isPrototype() || md->isSignal()) ol.docify("()");
}
index=newIndex+matchLen;
}
......
......@@ -166,7 +166,7 @@ static void writeMapArea(QTextStream &t,ClassDef *cd,int x,int y,int w,int h)
{
if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
}
t << cd->getOutputFileBase() << htmlFileExtension << "\" ";
t << cd->getOutputFileBase() << Doxygen::htmlFileExtension << "\" ";
t << "alt=\"" << cd->displayName();
t << "\" shape=\"rect\" coords=\"" << x << "," << y << ",";
t << (x+w) << "," << (y+h) << "\">" << endl;
......
/*****************************************************************************
/****************************************************************************
*
*
*
......@@ -31,7 +31,6 @@
#include <qregexp.h>
// new experimental parser
#include "docparser.h"
#include "debug.h"
#include "doc.h"
......@@ -446,7 +445,10 @@ static QCString stripKnownExtensions(const char *text)
{
QCString result=text;
if (result.right(4)==".tex") result=result.left(result.length()-4);
else if (result.right(htmlFileExtensionLength)==htmlFileExtension) result=result.left(result.length()-htmlFileExtensionLength);
else if (result.right(Doxygen::htmlFileExtension.length())==Doxygen::htmlFileExtension)
{
result=result.left(result.length()-Doxygen::htmlFileExtension.length());
}
//printf("%s stripKnowExtensions(%s)\n",result.data(),text);
return result;
}
......@@ -1928,9 +1930,9 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
internalRefAnchor.resize(0);
BEGIN(DocInternalRef);
}
<DocInternalRef>[A-Z_a-z0-9.:\-\+]+ {
<DocInternalRef>[A-Z_a-z0-9.:#\-\+]+ {
internalRefFile=yytext;
int i = internalRefFile.find(':');
int i = internalRefFile.find('#');
if (i!=-1)
{
internalRefAnchor=internalRefFile.right(internalRefFile.length()-i-1);
......@@ -2947,7 +2949,7 @@ void parseDoc(OutputDocInterface &od,const char *fileName,int startLine,
if (Debug::isFlagSet(Debug::Validate))
{
validatingParseDoc(fileName,startLine,docStr);
od.parseDoc(fileName,startLine,clName,md,docStr);
}
strcpy(yyFileName,fileName);
......
This diff is collapsed.
This diff is collapsed.
......@@ -25,15 +25,16 @@
enum Tokens
{
TK_WORD = 1,
TK_WHITESPACE = 2,
TK_LISTITEM = 3,
TK_ENDLIST = 4,
TK_COMMAND = 5,
TK_HTMLTAG = 6,
TK_SYMBOL = 7,
TK_NEWPARA = 8,
TK_RCSTAG = 9,
TK_URL = 10,
TK_LNKWORD = 2,
TK_WHITESPACE = 3,
TK_LISTITEM = 4,
TK_ENDLIST = 5,
TK_COMMAND = 6,
TK_HTMLTAG = 7,
TK_SYMBOL = 8,
TK_NEWPARA = 9,
TK_RCSTAG = 10,
TK_URL = 11,
RetVal_OK = 0x10000,
RetVal_SimpleSec = 0x10001,
......@@ -123,5 +124,6 @@ void doctokenizerYYsetStateFile();
void doctokenizerYYsetStatePattern();
void doctokenizerYYsetStateLink();
void doctokenizerYYsetStateRef();
void doctokenizerYYsetStateInternalRef();
#endif
......@@ -83,6 +83,7 @@ const char *tokToString(int token)
{
case 0: return "TK_EOF";
case TK_WORD: return "TK_WORD";
case TK_LNKWORD: return "TK_LNKWORD";
case TK_WHITESPACE: return "TK_WHITESPACE";
case TK_LISTITEM: return "TK_LISTITEM";
case TK_ENDLIST: return "TK_ENDLIST";
......@@ -221,8 +222,20 @@ LINKMASK [^ \t\n\r\\@<&$]+("("[^\n)]*")")?({BLANK}*("const"|"volatile"))?
SPCMD1 {CMD}[a-z_A-Z0-9]+
SPCMD2 {CMD}[\\@<>&$#%~]
SPCMD3 {CMD}form#[0-9]+
WORD1 [^ \t\n\r\\@<&$]+
WORD2 [^ \t\n\r\\@<&$]+"("[^\n)]*")"({BLANK}*("const"|"volatile"))?
TEMPCHAR [a-z_A-Z0-9,: \t\*\&]
FUNCCHAR [a-z_A-Z0-9,:\<\> \t\*\&]
SCOPESEP "::"|"#"|"."
SCOPEPRE {ID}("<"{TEMPCHAR}*">")?{SCOPESEP}
SCOPEMASK {SCOPEPRE}*(~)?{ID}
FUNCARG "("{FUNCCHAR}*")"
OPNEW {BLANK}+"new"({BLANK}*"[]")?
OPDEL {BLANK}+"delete"({BLANK}*"[]")?
OPNORM {OPNEW}|{OPDEL}|"+"|"-"|"*"|"/"|"%"|"^"|"&"|"|"|"~"|"!"|"="|"<"|">"|"+="|"-="|"*="|"/="|"%="|"^="|"&="|"|="|"<<"|">>"|"<<="|">>="|"=="|"!="|"<="|">="|"&&"|"||"|"++"|"--"|","|"->*"|"->"|"[]"|"()"
OPCAST {BLANK}+[^(\r\n.,]+
OPMASK ({BLANK}*{OPNORM}({FUNCARG}?))|({OPCAST}{FUNCARG})
LNKWORD1 {SCOPEMASK}({FUNCARG}({BLANK}*("const"|"volatile"))?)?
LNKWORD2 {SCOPEPRE}*"operator"{OPMASK}
WORD [^ \t\n\r\\@<>&$#,.]+
%option noyywrap
%option yylineno
......@@ -241,6 +254,7 @@ WORD2 [^ \t\n\r\\@<&$]+"("[^\n)]*")"({BLANK}*("const"|"volatile"))?
%x St_Link
%x St_Ref
%x St_Ref2
%x St_IntRef
%%
/* TODO: \~lang_id */
......@@ -330,12 +344,24 @@ WORD2 [^ \t\n\r\\@<&$]+"("[^\n)]*")"({BLANK}*("const"|"volatile"))?
g_token->name = yytext;
return TK_SYMBOL;
}
<St_Para>{WORD1} | /* word, #word, or %word */
<St_Para>{WORD2} { /* function call */
<St_Para>{LNKWORD1} |
<St_Para>{LNKWORD2} {
g_token->name = yytext;
return TK_LNKWORD;
}
<St_Para>"."|"," {
g_token->name = yytext;
return TK_WORD;
/* dummy code to please the compiler, removing this
results in a warning on my machine */ goto find_rule;
}
<St_Para>{WORD} { /* function call */
g_token->name = yytext;
return TK_WORD;
/* the following is dummy code to please the
* compiler, removing this results in a warning
* on my machine
*/
goto find_rule;
}
<St_Para>{BLANK}+ |
<St_Para>{BLANK}*\n{BLANK}* { /* white space */
......@@ -387,8 +413,7 @@ WORD2 [^ \t\n\r\\@<&$]+"("[^\n)]*")"({BLANK}*("const"|"volatile"))?
g_token->name = yytext+1;
return TK_COMMAND;
}
<St_Title>{WORD1} |
<St_Title>{WORD2} { /* word */
<St_Title>{WORD} { /* word */
g_token->name = yytext;
return TK_WORD;
}
......@@ -417,6 +442,13 @@ WORD2 [^ \t\n\r\\@<&$]+"("[^\n)]*")"({BLANK}*("const"|"volatile"))?
unput(*yytext);
return 0;
}
<St_IntRef>[A-Z_a-z0-9.:#\-\+]+ {
g_token->name = yytext;
return TK_WORD;
}
<St_IntRef>{BLANK}+"\"" {
BEGIN(St_Ref2);
}
<St_Ref2>"&"{ID}";" { /* symbol */
g_token->name = yytext;
return TK_SYMBOL;
......@@ -567,6 +599,11 @@ void doctokenizerYYsetStateRef()
BEGIN(St_Ref);
}
void doctokenizerYYsetStateInternalRef()
{
BEGIN(St_IntRef);
}
void doctokenizerYYcleanup()
{
yy_delete_buffer( YY_CURRENT_BUFFER );
......
......@@ -63,6 +63,10 @@ class DocFormula;
class DocSecRefItem;
class DocSecRefList;
class DocLanguage;
class DocLinkedWord;
class DocParamSect;
class DocParamList;
class DocInternalRef;
/*! @brief Abstract visitor that participates in the visitor pattern.
*/
......@@ -76,7 +80,6 @@ class DocVisitor
virtual void visit(DocURL *) = 0;
virtual void visit(DocStyleChange *) = 0;
virtual void visit(DocVerbatim *) = 0;
virtual void visit(DocXRefItem *) = 0;
virtual void visit(DocLineBreak *) = 0;
virtual void visit(DocHorRuler *) = 0;
virtual void visit(DocAnchor *) = 0;
......@@ -84,6 +87,7 @@ class DocVisitor
virtual void visit(DocInclude *) = 0;
virtual void visit(DocIncOperator *) = 0;
virtual void visit(DocFormula *) = 0;
virtual void visit(DocLinkedWord *) = 0;
/*! @name Visitor functions for internal nodes */
virtual void visitPre(DocAutoList *) = 0;
......@@ -146,6 +150,14 @@ class DocVisitor
virtual void visitPost(DocSecRefList *) = 0;
virtual void visitPre(DocLanguage *) = 0;
virtual void visitPost(DocLanguage *) = 0;
virtual void visitPre(DocParamSect *) = 0;
virtual void visitPost(DocParamSect *) = 0;
virtual void visitPre(DocParamList *) = 0;
virtual void visitPost(DocParamList *) = 0;
virtual void visitPre(DocXRefItem *) = 0;
virtual void visitPost(DocXRefItem *) = 0;
virtual void visitPre(DocInternalRef *) = 0;
virtual void visitPost(DocInternalRef *) = 0;
};
#endif
......@@ -394,7 +394,7 @@ void DotNode::writeBox(QTextStream &t,
}
else if (!m_url.isEmpty())
{
t << ",URL=\"" << m_url << htmlFileExtension << "\"";
t << ",URL=\"" << m_url << Doxygen::htmlFileExtension << "\"";
}
t << "];" << endl;
}
......@@ -1718,21 +1718,21 @@ void generateGraphLegend(const char *path)
dotText << "{\n";
dotText << " Node9 [shape=\"box\",label=\"Inherited\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",style=\"filled\" fontcolor=\"white\"];\n";
dotText << " Node10 -> Node9 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"Helvetica\"];\n";
dotText << " Node10 [shape=\"box\",label=\"PublicBase\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",URL=\"$classPublicBase" << htmlFileExtension << "\"];\n";
dotText << " Node10 [shape=\"box\",label=\"PublicBase\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",URL=\"$classPublicBase" << Doxygen::htmlFileExtension << "\"];\n";
dotText << " Node11 -> Node10 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"Helvetica\"];\n";
dotText << " Node11 [shape=\"box\",label=\"Truncated\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"red\",URL=\"$classTruncated" << htmlFileExtension << "\"];\n";
dotText << " Node11 [shape=\"box\",label=\"Truncated\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"red\",URL=\"$classTruncated" << Doxygen::htmlFileExtension << "\"];\n";
dotText << " Node13 -> Node9 [dir=back,color=\"darkgreen\",fontsize=10,style=\"solid\",fontname=\"Helvetica\"];\n";
dotText << " Node13 [shape=\"box\",label=\"ProtectedBase\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",URL=\"$classProtectedBase" << htmlFileExtension << "\"];\n";
dotText << " Node13 [shape=\"box\",label=\"ProtectedBase\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",URL=\"$classProtectedBase" << Doxygen::htmlFileExtension << "\"];\n";
dotText << " Node14 -> Node9 [dir=back,color=\"firebrick4\",fontsize=10,style=\"solid\",fontname=\"Helvetica\"];\n";
dotText << " Node14 [shape=\"box\",label=\"PrivateBase\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",URL=\"$classPrivateBase" << htmlFileExtension << "\"];\n";
dotText << " Node14 [shape=\"box\",label=\"PrivateBase\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",URL=\"$classPrivateBase" << Doxygen::htmlFileExtension << "\"];\n";
dotText << " Node15 -> Node9 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"Helvetica\"];\n";
dotText << " Node15 [shape=\"box\",label=\"Undocumented\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"grey75\"];\n";
dotText << " Node16 -> Node9 [dir=back,color=\"midnightblue\",fontsize=10,style=\"solid\",fontname=\"Helvetica\"];\n";
dotText << " Node16 [shape=\"box\",label=\"Templ< int >\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",URL=\"$classTempl" << htmlFileExtension << "\"];\n";
dotText << " Node16 [shape=\"box\",label=\"Templ< int >\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",URL=\"$classTempl" << Doxygen::htmlFileExtension << "\"];\n";
dotText << " Node17 -> Node16 [dir=back,color=\"orange\",fontsize=10,style=\"dashed\",label=\"< int >\",fontname=\"Helvetica\"];\n";
dotText << " Node17 [shape=\"box\",label=\"Templ< T >\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",URL=\"$classTempl" << htmlFileExtension << "\"];\n";
dotText << " Node17 [shape=\"box\",label=\"Templ< T >\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",URL=\"$classTempl" << Doxygen::htmlFileExtension << "\"];\n";
dotText << " Node18 -> Node9 [dir=back,color=\"darkorchid3\",fontsize=10,style=\"dashed\",label=\"m_usedClass\",fontname=\"Helvetica\"];\n";
dotText << " Node18 [shape=\"box\",label=\"Used\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",URL=\"$classUsed" << htmlFileExtension << "\"];\n";
dotText << " Node18 [shape=\"box\",label=\"Used\",fontsize=10,height=0.2,width=0.4,fontname=\"Helvetica\",color=\"black\",URL=\"$classUsed" << Doxygen::htmlFileExtension << "\"];\n";
dotText << "}\n";
dotFile.close();
......
......@@ -186,8 +186,7 @@ static void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl,
const char idMask[] = "[A-Za-z_][A-Za-z_0-9]*";
QCString spaces;
QCString htmlFileExtension;
int htmlFileExtensionLength;
QCString Doxygen::htmlFileExtension;
//----------------------------------------------------------------------------
......@@ -6059,7 +6058,7 @@ static void generateExampleDocs()
for (pdi.toFirst();(pi=pdi.current());++pdi)
{
msg("Generating docs for example %s...\n",pi->name.data());
QCString n=convertNameToFile(pi->name+"-example");
QCString n=pi->fileName;
startFile(*outputList,n,n,"Example Documentation");
startTitle(*outputList,n);
outputList->docify(pi->name);
......@@ -6268,9 +6267,9 @@ static void generateSearchIndex()
//outputList->generateExternalIndex();
outputList->pushGeneratorState();
outputList->disableAllBut(OutputGenerator::Html);
startFile(*outputList,"header"+htmlFileExtension,0,"Search Engine",TRUE);
startFile(*outputList,"header"+Doxygen::htmlFileExtension,0,"Search Engine",TRUE);
outputList->endPlainFile();
outputList->startPlainFile("footer"+htmlFileExtension);
outputList->startPlainFile("footer"+Doxygen::htmlFileExtension);
endFile(*outputList,TRUE);
outputList->popGeneratorState();
}
......@@ -7135,8 +7134,7 @@ void readConfiguration(int argc, char **argv)
}
/* Set the global html file extension. */
htmlFileExtension = Config_getString("HTML_FILE_EXTENSION");
htmlFileExtensionLength = htmlFileExtension.length();
Doxygen::htmlFileExtension = Config_getString("HTML_FILE_EXTENSION");
/* init the special lists */
Doxygen::specialLists->setAutoDelete(TRUE);
......
......@@ -51,8 +51,6 @@ class StringDict : public QDict<QCString>
};
extern QCString htmlFileExtension;
extern int htmlFileExtensionLength;
extern QCString spaces;
/*! \brief This class serves as a namespace for global variables used by doxygen.
......@@ -94,6 +92,7 @@ class Doxygen
static QDict<void> expandAsDefinedDict;
static NamespaceDef *globalScope;
static QDict<RefList> *specialLists; // array of special lists: todo, test, bug, deprecated ...
static QCString htmlFileExtension;
};
void initDoxygen();
......
......@@ -321,13 +321,6 @@ void FileDef::writeDocumentation(OutputList &ol)
ol.enableAll();
}
//ol.disableAllBut(OutputGenerator::Html);
//ol.writeString((QCString)"<p>Interface collaboration diagram for "
// "<a href=\"usage_intf_graph_"+name()+htmlFileExtension+"\">here</a>");
//ol.writeString((QCString)"<p>Include dependency diagram for "+fn+" can be found "+
// "<a href=\""+diskname+"_incldep+htmlFileExtension+"\">here</a>.");
//ol.enableAll();
ol.endTextBlock();
ol.startMemberSections();
......
......@@ -347,7 +347,7 @@ static void generateFolderTreeViewData()
}
// Generate alternative index.html as a frame
fileName=Config_getString("HTML_OUTPUT")+"/index"+htmlFileExtension;
fileName=Config_getString("HTML_OUTPUT")+"/index"+Doxygen::htmlFileExtension;
f.setName(fileName);
if (!f.open(IO_WriteOnly))
{
......@@ -374,15 +374,15 @@ static void generateFolderTreeViewData()
}
t << "</title></head>" << endl;
t << "<frameset cols=\"" << Config_getInt("TREEVIEW_WIDTH") << ",*\">" << endl;
t << " <frame src=\"tree" << htmlFileExtension << "\" name=\"treefrm\">" << endl;
t << " <frame src=\"main" << htmlFileExtension << "\" name=\"basefrm\">" << endl;
t << " <frame src=\"tree" << Doxygen::htmlFileExtension << "\" name=\"treefrm\">" << endl;
t << " <frame src=\"main" << Doxygen::htmlFileExtension << "\" name=\"basefrm\">" << endl;
t << "</frameset>" << endl;
t << "</html>" << endl;
f.close();
}
// Generate tree view frame
fileName=Config_getString("HTML_OUTPUT")+"/tree"+htmlFileExtension;
fileName=Config_getString("HTML_OUTPUT")+"/tree"+Doxygen::htmlFileExtension;
f.setName(fileName);
if (!f.open(IO_WriteOnly))
{
......@@ -559,7 +559,7 @@ void FTVHelp::addContentsItem(bool isDir,
<< name << "\", \"" << tagName << "\", ";
if (file) // file optional param
{
m_cts << "\"" << tagDir << file << htmlFileExtension << "\"))";
m_cts << "\"" << tagDir << file << Doxygen::htmlFileExtension << "\"))";
}
else
{
......@@ -572,7 +572,7 @@ void FTVHelp::addContentsItem(bool isDir,
<< name << "\", \"" << tagName << "\", ";
if (file) // ref optional param
{
m_cts << "\"" << tagDir << file << htmlFileExtension;
m_cts << "\"" << tagDir << file << Doxygen::htmlFileExtension;
if (anchor) m_cts << "#" << anchor;
m_cts << "\"))";
}
......
......@@ -403,7 +403,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
Doxygen::tagFile << " <compound kind=\"group\">" << endl;
Doxygen::tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
Doxygen::tagFile << " <title>" << convertToXML(title) << "</title>" << endl;
Doxygen::tagFile << " <filename>" << convertToXML(getOutputFileBase()) << htmlFileExtension << "</filename>" << endl;
Doxygen::tagFile << " <filename>" << convertToXML(getOutputFileBase()) << Doxygen::htmlFileExtension << "</filename>" << endl;
}
ol.startMemberSections();
......
This diff is collapsed.
......@@ -30,6 +30,7 @@
#include "dot.h"
#include "language.h"
#include "htmlhelp.h"
#include "htmldocvisitor.h"
// #define GROUP_COLOR "#ff8080"
......@@ -202,7 +203,10 @@ void HtmlGenerator::startFile(const char *name,const char *,
//printf("HtmlGenerator::startFile(%s)\n",name);
QCString fileName=name;
lastTitle=title;
if (fileName.right(htmlFileExtensionLength)!=htmlFileExtension) fileName+=htmlFileExtension;
if (fileName.right(Doxygen::htmlFileExtension.length())!=Doxygen::htmlFileExtension)
{
fileName+=Doxygen::htmlFileExtension;
}
startPlainFile(fileName);
if (Config_getBool("GENERATE_HTMLHELP"))
{
......@@ -383,7 +387,7 @@ void HtmlGenerator::writeIndexItem(const char *ref,const char *f,
{
if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
}
if (f) t << f << htmlFileExtension << "\">";
if (f) t << f << Doxygen::htmlFileExtension << "\">";
}
else
{
......@@ -409,7 +413,7 @@ void HtmlGenerator::writeStartAnnoItem(const char *,const char *f,
{
t << "<li>";
if (path) docify(path);
t << "<a class=\"el\" href=\"" << f << htmlFileExtension << "\">";
t << "<a class=\"el\" href=\"" << f << Doxygen::htmlFileExtension << "\">";
docify(name);
t << "</a> ";
//if (Config_getBool("GENERATE_HTMLHELP") && f)
......@@ -438,7 +442,7 @@ void HtmlGenerator::writeObjectLink(const char *ref,const char *f,
{
if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
}
if (f) t << f << htmlFileExtension;
if (f) t << f << Doxygen::htmlFileExtension;
if (anchor) t << "#" << anchor;
t << "\">";
docify(name);
......@@ -465,7 +469,7 @@ void HtmlGenerator::writeCodeLink(const char *ref,const char *f,
{
if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
}
if (f) t << f << htmlFileExtension;
if (f) t << f << Doxygen::htmlFileExtension;
if (anchor) t << "#" << anchor;
t << "\">";
docify(name);
......@@ -476,7 +480,7 @@ void HtmlGenerator::writeCodeLink(const char *ref,const char *f,
void HtmlGenerator::startTextLink(const char *f,const char *anchor)
{
t << "<a href=\"";
if (f) t << f << htmlFileExtension;
if (f) t << f << Doxygen::htmlFileExtension;
if (anchor) t << "#" << anchor;
t << "\">";
}
......@@ -547,7 +551,10 @@ void HtmlGenerator::writeSectionRef(const char *ref,const char *name,
QCString *dest;
//printf("writeSectionRef(%s,%s,%s,%s)\n",ref,name,anchor,title);
QCString refName=name;
if (refName.right(htmlFileExtensionLength)!=htmlFileExtension) refName+=htmlFileExtension;
if (refName.right(Doxygen::htmlFileExtension.length())!=Doxygen::htmlFileExtension)
{
refName+=Doxygen::htmlFileExtension;
}
t << "<a ";
if (ref)
{
......@@ -569,7 +576,10 @@ void HtmlGenerator::writeSectionRefItem(const char *name,const char *lab,
const char *title)
{
QCString refName=name;
if (refName.right(htmlFileExtensionLength)!=htmlFileExtension) refName+=htmlFileExtension;
if (refName.right(Doxygen::htmlFileExtension.length())!=Doxygen::htmlFileExtension)
{
refName+=Doxygen::htmlFileExtension;
}
t << "<li><a href=\"" << refName << "#" << lab << "\">";
docify(title);
t << "</a>";
......@@ -1229,3 +1239,14 @@ 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
}
......@@ -43,6 +43,9 @@ class HtmlGenerator : public OutputGenerator
void disableIfNot(OutputType o) { if (o!=Html) active=FALSE; }
bool isEnabled(OutputType o) { return (o==Html && active); }
OutputGenerator *get(OutputType o) { return (o==Html) ? this : 0; }
void printDoc(DocNode *);
//void generateExternalIndex();
void startFile(const char *name,const char *manName,
......@@ -267,6 +270,9 @@ class HtmlGenerator : public OutputGenerator
void startSectionRefList();
void endSectionRefList();
void writeCodeAnchor(const char *anchor)
{ t << "<a name=\"" << anchor << "\"></a>"; }
private:
QCString lastTitle;
QCString lastFile;
......
......@@ -178,7 +178,7 @@ void HtmlHelpIndex::writeFields(QTextStream &t)
if (level2.isEmpty())
{
t << " <LI><OBJECT type=\"text/sitemap\">";
t << "<param name=\"Local\" value=\"" << f->url << htmlFileExtension;
t << "<param name=\"Local\" value=\"" << f->url << Doxygen::htmlFileExtension;
if (!f->anchor.isEmpty()) t << "#" << f->anchor;
t << "\">";
t << "<param name=\"Name\" value=\"" << level1 << "\">"
......@@ -189,7 +189,7 @@ void HtmlHelpIndex::writeFields(QTextStream &t)
if (f->link)
{
t << " <LI><OBJECT type=\"text/sitemap\">";
t << "<param name=\"Local\" value=\"" << f->url << htmlFileExtension << "\">";
t << "<param name=\"Local\" value=\"" << f->url << Doxygen::htmlFileExtension << "\">";
t << "<param name=\"Name\" value=\"" << level1 << "\">"
"</OBJECT>\n";
}
......@@ -215,7 +215,7 @@ void HtmlHelpIndex::writeFields(QTextStream &t)
if (level2Started)
{
t << " <LI><OBJECT type=\"text/sitemap\">";
t << "<param name=\"Local\" value=\"" << f->url << htmlFileExtension;
t << "<param name=\"Local\" value=\"" << f->url << Doxygen::htmlFileExtension;
if (!f->anchor.isEmpty()) t << "#" << f->anchor;
t << "\">";
t << "<param name=\"Name\" value=\"" << level2 << "\">"
......@@ -385,8 +385,8 @@ void HtmlHelp::createProjectFile()
QCString indexName="index"+htmlFileExtension;
if (Config_getBool("GENERATE_TREEVIEW")) indexName="main"+htmlFileExtension;
QCString indexName="index"+Doxygen::htmlFileExtension;
if (Config_getBool("GENERATE_TREEVIEW")) indexName="main"+Doxygen::htmlFileExtension;
t << "[OPTIONS]\n";
if (!Config_getString("CHM_FILE").isEmpty())
{
......@@ -500,7 +500,7 @@ void HtmlHelp::addContentsItem(bool isDir,
cts << "<param name=\"Name\" value=\"" << name << "\">";
if (ref) // made ref optional param - KPW
{
cts << "<param name=\"Local\" value=\"" << ref << htmlFileExtension;
cts << "<param name=\"Local\" value=\"" << ref << Doxygen::htmlFileExtension;
if (anchor) cts << "#" << anchor;
cts << "\">";
}
......
......@@ -181,11 +181,11 @@ void writeQuickLinks(OutputList &ol,bool compact ,bool ext=FALSE)
if (!compact) ol.writeListItem();
if (Config_getBool("GENERATE_TREEVIEW"))
{
ol.startQuickIndexItem(extLink,"main"+htmlFileExtension);
ol.startQuickIndexItem(extLink,"main"+Doxygen::htmlFileExtension);
}
else
{
ol.startQuickIndexItem(extLink,"index"+htmlFileExtension);
ol.startQuickIndexItem(extLink,"index"+Doxygen::htmlFileExtension);
}
parseText(ol,theTranslator->trMainPage());
ol.endQuickIndexItem();
......@@ -193,21 +193,21 @@ void writeQuickLinks(OutputList &ol,bool compact ,bool ext=FALSE)
//if (documentedPackages>0)
//{
// if (!compact) ol.writeListItem();
// ol.startQuickIndexItem(extLink,"packages"+htmlFileExtension);
// ol.startQuickIndexItem(extLink,"packages"+Doxygen::htmlFileExtension);
// parseText(ol,theTranslator->trPackages());
// ol.endQuickIndexItem();
//}
if (documentedGroups>0)
{
if (!compact) ol.writeListItem();
ol.startQuickIndexItem(extLink,"modules"+htmlFileExtension);
ol.startQuickIndexItem(extLink,"modules"+Doxygen::htmlFileExtension);
parseText(ol,theTranslator->trModules());
ol.endQuickIndexItem();
}
if (documentedNamespaces>0)
{
if (!compact) ol.writeListItem();
ol.startQuickIndexItem(extLink,"namespaces"+htmlFileExtension);
ol.startQuickIndexItem(extLink,"namespaces"+Doxygen::htmlFileExtension);
if (Config_getBool("OPTIMIZE_OUTPUT_JAVA"))
{
parseText(ol,theTranslator->trPackages());
......@@ -221,7 +221,7 @@ void writeQuickLinks(OutputList &ol,bool compact ,bool ext=FALSE)
if (hierarchyClasses>0)
{
if (!compact) ol.writeListItem();
ol.startQuickIndexItem(extLink,"hierarchy"+htmlFileExtension);
ol.startQuickIndexItem(extLink,"hierarchy"+Doxygen::htmlFileExtension);
parseText(ol,theTranslator->trClassHierarchy());
ol.endQuickIndexItem();
}
......@@ -230,68 +230,68 @@ void writeQuickLinks(OutputList &ol,bool compact ,bool ext=FALSE)
if (Config_getBool("ALPHABETICAL_INDEX"))
{
if (!compact) ol.writeListItem();
ol.startQuickIndexItem(extLink,"classes"+htmlFileExtension);
ol.startQuickIndexItem(extLink,"classes"+Doxygen::htmlFileExtension);
parseText(ol,theTranslator->trAlphabeticalList());
ol.endQuickIndexItem();
}
if (!compact) ol.writeListItem();
ol.startQuickIndexItem(extLink,"annotated"+htmlFileExtension);
ol.startQuickIndexItem(extLink,"annotated"+Doxygen::htmlFileExtension);
parseText(ol,theTranslator->trCompoundList());
ol.endQuickIndexItem();
}
if (documentedHtmlFiles>0)
{
if (!compact) ol.writeListItem();
ol.startQuickIndexItem(extLink,"files"+htmlFileExtension);
ol.startQuickIndexItem(extLink,"files"+Doxygen::htmlFileExtension);
parseText(ol,theTranslator->trFileList());
ol.endQuickIndexItem();
}
//if (documentedIncludeFiles>0 && Config_getBool("VERBATIM_HEADERS"))
//{
// if (!compact) ol.writeListItem();
// ol.startQuickIndexItem(extLink,"headers"+htmlFileExtension);
// ol.startQuickIndexItem(extLink,"headers"+Doxygen::htmlFileExtension);
// parseText(ol,theTranslator->trHeaderFiles());
// ol.endQuickIndexItem();
//}
//if (Config_getBool("SOURCE_BROWSER"))
//{
// if (!compact) ol.writeListItem();
// ol.startQuickIndexItem(extLink,"sources"+htmlFileExtension);
// ol.startQuickIndexItem(extLink,"sources"+Doxygen::htmlFileExtension);
// parseText(ol,theTranslator->trSources());
// ol.endQuickIndexItem();
//}
if (documentedNamespaceMembers>0)
{
if (!compact) ol.writeListItem();
ol.startQuickIndexItem(extLink,"namespacemembers"+htmlFileExtension);
ol.startQuickIndexItem(extLink,"namespacemembers"+Doxygen::htmlFileExtension);
parseText(ol,theTranslator->trNamespaceMembers());
ol.endQuickIndexItem();
}
if (documentedMembers>0)
{
if (!compact) ol.writeListItem();
ol.startQuickIndexItem(extLink,"functions"+htmlFileExtension);
ol.startQuickIndexItem(extLink,"functions"+Doxygen::htmlFileExtension);
parseText(ol,theTranslator->trCompoundMembers());
ol.endQuickIndexItem();
}
if (documentedFunctions>0)
{
if (!compact) ol.writeListItem();
ol.startQuickIndexItem(extLink,"globals"+htmlFileExtension);
ol.startQuickIndexItem(extLink,"globals"+Doxygen::htmlFileExtension);
parseText(ol,theTranslator->trFileMembers());
ol.endQuickIndexItem();
}
if (indexedPages>0)
{
if (!compact) ol.writeListItem();
ol.startQuickIndexItem(extLink,"pages"+htmlFileExtension);
ol.startQuickIndexItem(extLink,"pages"+Doxygen::htmlFileExtension);
parseText(ol,theTranslator->trRelatedPages());
ol.endQuickIndexItem();
}
if (Doxygen::exampleSDict->count()>0)
{
if (!compact) ol.writeListItem();
ol.startQuickIndexItem(extLink,"examples"+htmlFileExtension);
ol.startQuickIndexItem(extLink,"examples"+Doxygen::htmlFileExtension);
parseText(ol,theTranslator->trExamples());
ol.endQuickIndexItem();
}
......@@ -1430,7 +1430,7 @@ void writeAlphabeticalIndex(OutputList &ol)
if (annotatedClasses==0) return;
ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
startFile(ol,"classes"+htmlFileExtension,0,"Alphabetical index");
startFile(ol,"classes"+Doxygen::htmlFileExtension,0,"Alphabetical index");
startTitle(ol,0);
parseText(ol,Config_getString("PROJECT_NAME")+" "+theTranslator->trCompoundIndex());
endTitle(ol,0,0);
......@@ -2065,7 +2065,7 @@ void writeExampleIndex(OutputList &ol)
for (pdi.toFirst();(pi=pdi.current());++pdi)
{
ol.writeListItem();
QCString n=convertNameToFile(pi->name+"-example");
QCString n=pi->getOutputFileBase();
if (!pi->title.isEmpty())
{
ol.writeObjectLink(0,n,0,pi->title);
......@@ -2529,11 +2529,11 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level)
{
if(htmlHelp)
{
htmlHelp->addContentsItem(FALSE,convertToHtml(pi->name),convertNameToFile(pi->name+"-example"));
htmlHelp->addContentsItem(FALSE,pi->getReference(),pi->getOutputFileBase());
}
if(ftvHelp)
{
ftvHelp->addContentsItem(FALSE,pi->getReference(),convertToHtml(pi->name+"-example"),0,convertNameToFile(pi->name));
ftvHelp->addContentsItem(FALSE,pi->getReference(),pi->getOutputFileBase(),0,pi->name);
}
pi=++eli;
}
......
......@@ -784,12 +784,12 @@ void LatexGenerator::endIndexSection(IndexSections is)
PageInfo *pi=pdi.toFirst();
if (pi)
{
t << "\\input{" << convertNameToFile(pi->name+"-example") << "}\n";
t << "\\input{" << pi->getOutputFileBase() << "}\n";
}
for (++pdi;(pi=pdi.current());++pdi)
{
if (compactLatex) t << "\\input" ; else t << "\\include";
t << "{" << convertNameToFile(pi->name+"-example") << "}\n";
t << "{" << pi->getOutputFileBase() << "}\n";
}
}
break;
......@@ -803,13 +803,8 @@ void LatexGenerator::endIndexSection(IndexSections is)
{
if (!pi->getGroupDef() && !pi->isReference())
{
QCString pageName;
if (Config_getBool("CASE_SENSE_NAMES"))
pageName=pi->name.copy();
else
pageName=pi->name.lower();
if (compactLatex || first) t << "\\input" ; else t << "\\include";
t << "{" << pageName << "}\n";
t << "{" << pi->getOutputFileBase() << "}\n";
first=FALSE;
}
}
......
......@@ -284,6 +284,8 @@ class LatexGenerator : public OutputGenerator
void startSectionRefList();
void endSectionRefList();
void writeCodeAnchor(const char *) {}
private:
void latin2ToLatex(unsigned char);
LatexGenerator(const LatexGenerator &);
......
......@@ -251,6 +251,8 @@ class ManGenerator : public OutputGenerator
void startSectionRefList() {}
void endSectionRefList() {}
void writeCodeAnchor(const char *) {}
private:
bool firstCol;
bool paragraph;
......
......@@ -1704,7 +1704,7 @@ void MemberDef::addListReference(Definition *d)
}
//printf("*** addListReference %s todo=%d test=%d bug=%d\n",name().data(),todoId(),testId(),bugId());
addRefItem(specialListItems(),memLabel,
d->getOutputFileBase()+":"+anchor(),memName,argsString());
d->getOutputFileBase()+"#"+anchor(),memName,argsString());
}
MemberList *MemberDef::getSectionList(Definition *d) const
......
......@@ -239,7 +239,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
{
Doxygen::tagFile << " <compound kind=\"namespace\">" << endl;
Doxygen::tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
Doxygen::tagFile << " <filename>" << convertToXML(getOutputFileBase()) << htmlFileExtension << "</filename>" << endl;
Doxygen::tagFile << " <filename>" << convertToXML(getOutputFileBase()) << Doxygen::htmlFileExtension << "</filename>" << endl;
}
ol.startTextBlock();
......
......@@ -30,6 +30,41 @@ class ClassDiagram;
class DotClassGraph;
class DotInclDepGraph;
class DotGfxHierarchyTable;
class DocNode;
class MemberDef;
/*! \brief Output interface for code parser.
*/
class BaseCodeDocInterface
{
public:
/*! Writes an ASCII string to the output. This function should keep
* spaces visible, should break lines at a newline and should convert
* tabs to the right number of spaces.
*/
virtual void codify(const char *s) = 0;
/*! Writes a link to an object in a code fragment.
* \param ref If this is non-zero, the object is to be found in
* an external documentation file.
* \param file The file in which the object is located.
* \param anchor The anchor uniquely identifying the object within
* the file.
* \param name The text to display as a placeholder for the link.
*/
virtual void writeCodeLink(const char *ref,const char *file,
const char *anchor,const char *name) = 0;
virtual void writeLineNumber(const char *ref,const char *file,
const char *anchor,int lineNumber) = 0;
virtual void startCodeLine() = 0;
virtual void endCodeLine() = 0;
virtual void startCodeAnchor(const char *label) = 0;
virtual void endCodeAnchor() = 0;
virtual void startFontClass(const char *) = 0;
virtual void endFontClass() = 0;
virtual void writeCodeAnchor(const char *name) = 0;
};
/*! \brief Base Interface used for generating documentation.
*
......@@ -38,7 +73,7 @@ class DotGfxHierarchyTable;
* or a list of formats (see OutputList). This interface
* contains functions that generate output.
*/
class BaseOutputDocInterface
class BaseOutputDocInterface : public BaseCodeDocInterface
{
public:
enum ParamListTypes { Param, RetVal, Exception };
......@@ -50,6 +85,10 @@ class BaseOutputDocInterface
Examples
};
virtual void parseDoc(const char *,int, const char *,MemberDef *,
const QCString &)
{}
/*! Start of a bullet list: e.g. \c <ul> in html. writeListItem() is
* Used for the bullet items.
*/
......@@ -101,16 +140,6 @@ class BaseOutputDocInterface
virtual void writeObjectLink(const char *ref,const char *file,
const char *anchor, const char *name) = 0;
/*! Writes a link to an object in a code fragment.
* \param ref If this is non-zero, the object is to be found in
* an external documentation file.
* \param file The file in which the object is located.
* \param anchor The anchor uniquely identifying the object within
* the file.
* \param name The text to display as a placeholder for the link.
*/
virtual void writeCodeLink(const char *ref,const char *file,
const char *anchor,const char *name) = 0;
/*! Starts a (link to an) URL found in the documentation.
* \param url The URL to link to.
......@@ -260,14 +289,6 @@ class BaseOutputDocInterface
virtual void endPageRef(const char *,const char *) = 0;
virtual void writeLineNumber(const char *ref,const char *file,
const char *anchor,int lineNumber) = 0;
virtual void startCodeLine() = 0;
virtual void endCodeLine() = 0;
virtual void startCodeAnchor(const char *label) = 0;
virtual void endCodeAnchor() = 0;
virtual void startFontClass(const char *) = 0;
virtual void endFontClass() = 0;
virtual void startHtmlOnly() = 0;
virtual void endHtmlOnly() = 0;
......@@ -277,11 +298,6 @@ class BaseOutputDocInterface
virtual void startSectionRefList() = 0;
virtual void endSectionRefList() = 0;
/*! Writes an ASCII string to the output. This function should keep
* spaces visible, should break lines at a newline and should convert
* tabs to the right number of spaces.
*/
virtual void codify(const char *s) = 0;
};
......@@ -318,6 +334,8 @@ class OutputGenerator : public BaseOutputDocInterface
void pushGeneratorState();
void popGeneratorState();
virtual void printDoc(DocNode *) {}
///////////////////////////////////////////////////////////////
// structural output interface
///////////////////////////////////////////////////////////////
......
......@@ -27,6 +27,8 @@
#include "config.h"
#include "message.h"
#include "docparser.h"
OutputList::OutputList(bool)
{
//printf("OutputList::OutputList()\n");
......@@ -189,6 +191,23 @@ void OutputList::popGeneratorState()
}
}
void OutputList::parseDoc(const char *fileName,int startLine,
const char * clName,MemberDef * /*md*/,
const QCString &docStr)
{
DocNode *root = validatingParseDoc(fileName,startLine,clName,docStr);
OutputGenerator *og=outputs->first();
while (og)
{
if (og->isEnabled()) og->printDoc(root);
og=outputs->next();
}
delete root;
}
//--------------------------------------------------------------------------
// Create some overloaded definitions of the forall function.
// Using template functions here would have made it a little less
......
......@@ -46,6 +46,7 @@ class OutputList : public OutputDocInterface
OutputList &operator=(const OutputList &ol);
OutputList &operator+=(const OutputList &ol);
void add(const OutputGenerator *);
void disableAllBut(OutputGenerator::OutputType o);
......@@ -57,10 +58,14 @@ class OutputList : public OutputDocInterface
void pushGeneratorState();
void popGeneratorState();
//////////////////////////////////////////////////
// OutputDocInterface implementation
//////////////////////////////////////////////////
void parseDoc(const char *fileName,int startLine,
const char *clName,MemberDef *md,const QCString &docStr);
OutputDocInterface *clone()
{
return new OutputList(this);
......@@ -457,6 +462,8 @@ class OutputList : public OutputDocInterface
void endSectionRefList()
{ forall(&OutputGenerator::endSectionRefList); }
void writeCodeAnchor(const char *name)
{ forall(&OutputGenerator::writeCodeAnchor,name); }
#if 0
void startPlainFile(const char *name)
{ forall(&OutputGenerator::startPlainFile,name); }
......
......@@ -41,8 +41,7 @@ class PageInfo
QCString fileName;
// functions to get a uniform interface with Definitions
QCString getOutputFileBase() const
{ return fileName; }
QCString getOutputFileBase() const { return fileName; }
bool isReference() const { return !reference.isEmpty(); }
QCString getReference() const { return reference; }
......
......@@ -34,6 +34,11 @@ class PrintDocVisitor : public DocVisitor
indent_leaf();
printf("%s",w->word().data());
}
void visit(DocLinkedWord *w)
{
indent_leaf();
printf("%s",w->word().data());
}
void visit(DocWhiteSpace *w)
{
indent_leaf();
......@@ -137,11 +142,6 @@ class PrintDocVisitor : public DocVisitor
case DocVerbatim::LatexOnly: printf("</latexonly>"); break;
}
}
void visit(DocXRefItem *x)
{
indent_leaf();
printf("<xrefitem id=\"%d\"/>",x->id());
}
void visit(DocAnchor *a)
{
indent_leaf();
......@@ -181,7 +181,7 @@ class PrintDocVisitor : public DocVisitor
void visit(DocFormula *f)
{
indent_leaf();
printf("<formula id=%d/>",f->id());
printf("<formula name=%s test=%s/>",f->name().data(),f->text().data());
}
//--------------------------------------
......@@ -244,11 +244,12 @@ class PrintDocVisitor : public DocVisitor
{
indent_pre();
printf("<simplesect type=");
switch(s->sectionType())
switch(s->type())
{
case DocSimpleSect::See: printf("see"); break;
case DocSimpleSect::Return: printf("return"); break;
case DocSimpleSect::Author: printf("author"); break;
case DocSimpleSect::Authors: printf("authors"); break;
case DocSimpleSect::Version: printf("version"); break;
case DocSimpleSect::Since: printf("since"); break;
case DocSimpleSect::Date: printf("date"); break;
......@@ -260,48 +261,6 @@ class PrintDocVisitor : public DocVisitor
case DocSimpleSect::Remark: printf("remark"); break;
case DocSimpleSect::Attention: printf("attention"); break;
case DocSimpleSect::User: printf("user"); break;
case DocSimpleSect::Param:
{
printf("param[");
QStrListIterator li(s->parameters());
const char *s;
bool first=TRUE;
for (li.toFirst();(s=li.current());++li)
{
if (!first) printf(","); else first=FALSE;
printf("%s",s);
}
printf("]");
}
break;
case DocSimpleSect::RetVal:
{
printf("retval[");
QStrListIterator li(s->parameters());
const char *s;
bool first=TRUE;
for (li.toFirst();(s=li.current());++li)
{
if (!first) printf(","); else first=FALSE;
printf("%s",s);
}
printf("]");
}
break;
case DocSimpleSect::Exception: printf("exception"); break;
{
printf("exception[");
QStrListIterator li(s->parameters());
const char *s;
bool first=TRUE;
for (li.toFirst();(s=li.current());++li)
{
if (!first) printf(","); else first=FALSE;
printf("%s",s);
}
printf("]");
}
break;
case DocSimpleSect::Unknown: printf("unknown"); break;
}
printf(">\n");
......@@ -517,7 +476,8 @@ class PrintDocVisitor : public DocVisitor
void visitPre(DocLink *lnk)
{
indent_pre();
printf("<link target=\"%s\">\n",lnk->target().data());
printf("<link ref=\"%s\" file=\"%s\" anchor=\"%s\">\n",
lnk->ref().data(),lnk->file().data(),lnk->anchor().data());
}
void visitPost(DocLink *)
{
......@@ -527,7 +487,12 @@ class PrintDocVisitor : public DocVisitor
void visitPre(DocRef *ref)
{
indent_pre();
printf("<ref target=\"%s\">\n",ref->target().data());
printf("<ref ref=\"%s\" file=\"%s\" "
"anchor=\"%s\" targetTitle=\"%s\""
" hasLinkText=\"%s\" refToAnchor=\"%s\" refToSection=\"%s\">\n",
ref->ref().data(),ref->file().data(),ref->anchor().data(),
ref->targetTitle().data(),ref->hasLinkText()?"yes":"no",
ref->refToAnchor()?"yes":"no", ref->refToSection()?"yes":"no");
}
void visitPost(DocRef *)
{
......@@ -564,6 +529,61 @@ class PrintDocVisitor : public DocVisitor
indent_post();
printf("</language>\n");
}
void visitPre(DocParamList *pl)
{
indent_pre();
QStrListIterator sli(pl->parameters());
const char *s;
printf("<parameters>");
for (sli.toFirst();(s=sli.current());++sli)
{
printf("<param>%s</param>",s);
}
}
void visitPost(DocParamList *)
{
indent_post();
printf("</parameters>");
}
void visitPre(DocParamSect *ps)
{
indent_pre();
printf("<paramsect type=");
switch (ps->type())
{
case DocParamSect::Param: printf("param"); break;
case DocParamSect::RetVal: printf("retval"); break;
case DocParamSect::Exception: printf("exception"); break;
case DocParamSect::Unknown: printf("unknown"); break;
}
printf(">");
}
void visitPost(DocParamSect *)
{
indent_post();
printf("</paramsect>");
}
void visitPre(DocXRefItem *x)
{
indent_pre();
printf("<xrefitem file=\"%s\" anchor=\"%s\" title=\"%s\"/>",
x->file().data(),x->anchor().data(),x->title().data());
}
void visitPost(DocXRefItem *)
{
indent_post();
printf("<xrefitem/>");
}
void visitPre(DocInternalRef *r)
{
indent_pre();
printf("<internalref file=%s anchor=%s>\n",r->file().data(),r->anchor().data());
}
void visitPost(DocInternalRef *)
{
indent_post();
printf("</internalref>\n");
}
private:
// helper functions
......
......@@ -116,6 +116,7 @@ RTFGenerator::RTFGenerator() : OutputGenerator()
m_listLevel = 0;
m_bstartedBody = FALSE;
m_omitParagraph = FALSE;
m_numCols = 0;
}
RTFGenerator::~RTFGenerator()
......@@ -129,7 +130,6 @@ void RTFGenerator::append(const OutputGenerator *g)
//insideTabbing=insideTabbing || ((RTFGenerator *)g)->insideTabbing;
m_listLevel=((RTFGenerator *)g)->m_listLevel;
m_omitParagraph=((RTFGenerator *)g)->m_omitParagraph;
m_columnNumbers=((RTFGenerator *)g)->m_columnNumbers;
//printf("RTFGenerator::append(%s) insideTabbing=%s\n", g->getContents().data(),
// insideTabbing ? "TRUE" : "FALSE" );
}
......@@ -1336,7 +1336,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
{
t << "\\par " << Rtf_Style_Reset << endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << convertNameToFile(pi->name+"-example");
t << pi->getOutputFileBase();
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
}
for (++pdi;(pi=pdi.current());++pdi)
......@@ -1344,7 +1344,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
t << "\\par " << Rtf_Style_Reset << endl;
beginRTFSection();
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << convertNameToFile(pi->name+"-example");
t << pi->getOutputFileBase();
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
}
}
......@@ -1359,14 +1359,9 @@ void RTFGenerator::endIndexSection(IndexSections is)
{
if (!pi->getGroupDef() && !pi->isReference())
{
QCString pageName;
if (Config_getBool("CASE_SENSE_NAMES"))
pageName=pi->name.copy();
else
pageName=pi->name.lower();
if (first) t << "\\par " << Rtf_Style_Reset << endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << pageName;
t << pi->getOutputFileBase();
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
first=FALSE;
}
......@@ -1667,8 +1662,8 @@ void RTFGenerator::endSubsubsection()
void RTFGenerator::startTable(bool,int colNumbers)
{
m_columnNumbers=colNumbers;
t<<"\\par\n";
m_numCols=colNumbers;
t << "\\par\n";
}
void RTFGenerator::endTable(bool hasCaption)
......@@ -1681,8 +1676,8 @@ void RTFGenerator::endTable(bool hasCaption)
void RTFGenerator::startCaption()
{
endTableRow();
t<<"\\trowd \\trgaph108\\trleft-108\\trbrdrt\\brdrs\\brdrw10 \\trbrdrl\\brdrs\\brdrw10 \\trbrdrb\\brdrs\\brdrw10 \\trbrdrr\\brdrs\\brdrw10 \\trbrdrh\\brdrs\\brdrw10 \\trbrdrv\\brdrs\\brdrw10"<<endl;
t<<"\\clvertalt\\clbrdrt\\brdrs\\brdrw10 \\clbrdrl\\brdrs\\brdrw10 \\clbrdrb\\brdrs\\brdrw10 \\clbrdrr \\brdrs\\brdrw10 \\cltxlrtb \\cellx"<<PAGEWIDTH<<"\\pard \\qc\\nowidctlpar\\widctlpar\\intbl\\adjustright "<<endl;
t << "\\trowd \\trgaph108\\trleft-108\\trbrdrt\\brdrs\\brdrw10 \\trbrdrl\\brdrs\\brdrw10 \\trbrdrb\\brdrs\\brdrw10 \\trbrdrr\\brdrs\\brdrw10 \\trbrdrh\\brdrs\\brdrw10 \\trbrdrv\\brdrs\\brdrw10" << endl;
t << "\\clvertalt\\clbrdrt\\brdrs\\brdrw10 \\clbrdrl\\brdrs\\brdrw10 \\clbrdrb\\brdrs\\brdrw10 \\clbrdrr \\brdrs\\brdrw10 \\cltxlrtb \\cellx"<<PAGEWIDTH<<"\\pard \\qc\\nowidctlpar\\widctlpar\\intbl\\adjustright " << endl;
nextTableColumn();
}
......@@ -1694,28 +1689,34 @@ void RTFGenerator::endCaption()
void RTFGenerator::nextTableRow()
{
unsigned long columnWidth=PAGEWIDTH/m_columnNumbers;
t<<"\\trowd \\trgaph108\\trleft-108\\trbrdrt\\brdrs\\brdrw10 \\trbrdrl\\brdrs\\brdrw10 \\trbrdrb\\brdrs\\brdrw10 \\trbrdrr\\brdrs\\brdrw10 \\trbrdrh\\brdrs\\brdrw10 \\trbrdrv\\brdrs\\brdrw10 "<<endl;
for (int i=1;i<=m_columnNumbers;i++)
ASSERT(m_numCols>0 && m_numCols<25);
uint columnWidth=PAGEWIDTH/m_numCols;
t << "\\trowd \\trgaph108\\trleft-108\\trbrdrt\\brdrs\\brdrw10 "
"\\trbrdrl\\brdrs\\brdrw10 \\trbrdrb\\brdrs\\brdrw10 "
"\\trbrdrr\\brdrs\\brdrw10 \\trbrdrh\\brdrs\\brdrw10 "
"\\trbrdrv\\brdrs\\brdrw10 "<<endl;
for (int i=0;i<m_numCols;i++)
{
t<<"\\clvertalt\\clbrdrt\\brdrs\\brdrw10 \\clbrdrl\\brdrs\\brdrw10 \\clbrdrb\\brdrs\\brdrw10 \\clbrdrr \\brdrs\\brdrw10 \\cltxlrtb \\cellx"<<i*columnWidth<<endl;
t << "\\clvertalt\\clbrdrt\\brdrs\\brdrw10 \\clbrdrl\\brdrs\\brdrw10 "
"\\clbrdrb\\brdrs\\brdrw10 \\clbrdrr \\brdrs\\brdrw10 \\cltxlrtb "
"\\cellx" << (i*columnWidth) << endl;
}
t<<"\\pard \\widctlpar\\intbl\\adjustright\n{";
t << "\\pard \\widctlpar\\intbl\\adjustright\n{";
}
void RTFGenerator::endTableRow()
{
t<<"\n\\pard \\widctlpar\\intbl\\adjustright\n{\\row }\n";
t << "\n\\pard \\widctlpar\\intbl\\adjustright\n{\\row }\n";
}
void RTFGenerator::nextTableColumn()
{
t<<"{ ";
t << "{ ";
}
void RTFGenerator::endTableColumn()
{
t<<" \\cell }";
t << " \\cell }";
}
void RTFGenerator::startTextLink(const char *f,const char *anchor)
......
......@@ -254,6 +254,8 @@ class RTFGenerator : public OutputGenerator
void startSectionRefList() {}
void endSectionRefList() {}
void writeCodeAnchor(const char *) {}
static bool preProcessFileInplace(const char *path,const char *name);
private:
......@@ -273,7 +275,7 @@ class RTFGenerator : public OutputGenerator
bool m_bstartedBody; // has startbody been called yet?
int m_listLevel; // // RTF does not really have a addative indent...manually set list level.
bool m_omitParagraph; // should a the next paragraph command be ignored?
int m_columnNumbers; // number of columns in a table
int m_numCols; // number of columns in a table
void beginRTFDocument();
void beginRTFChapter();
......
......@@ -385,7 +385,7 @@ static void setContext()
QCString fileName = yyFileName;
insideIDL = fileName.right(4)==".idl";
insideJava = fileName.right(5)==".java";
insidePHP = fileName.right(4)==".php";
insidePHP = fileName.right(4)==".php" || fileName.right(4)==".inc";
if ( insidePHP )
{
useOverrideCommands = TRUE;
......@@ -444,15 +444,17 @@ static void addSpecialItem(const char *listName)
if (lii) // already found item of same type before
{
RefItem *item = refList->getRefItem(lii->itemId);
ASSERT(item!=0);
item->text += " <p>";
item->text += current->brief;
}
else // new item
{
int itemId = refList->addRefItem();
char anchorLabel[12];
char anchorLabel[1024];
sprintf(anchorLabel,"_%s%06d",listName,itemId);
RefItem *item = refList->getRefItem(itemId);
ASSERT(item!=0);
item->text = current->brief.copy();
item->listAnchor = anchorLabel;
current->addSpecialListItem(listName,itemId);
......@@ -3781,15 +3783,15 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<LineDoc,JavaDoc>{CMD}{CMD}"endif"/[^a-z_A-Z0-9] { current->brief+=yytext; }
/* conditional commands */
<ClassDoc,LineDoc,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"if"{B}+ {
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"if"{B}+ {
lastIfContext = YY_START;
BEGIN(IfGuard);
}
<ClassDoc,LineDoc,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"ifnot"{B}+ {
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"ifnot"{B}+ {
lastIfContext = YY_START;
BEGIN(IfNotGuard);
}
<ClassDoc,LineDoc,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"if"(\r?)\n |
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"if"(\r?)\n |
<IfGuard>\n {
warn(yyFileName,yyLineNr,"Missing guard for if statement!");
yyLineNr++;
......@@ -3850,33 +3852,33 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
yyLineNr++;
}
<SkipSection>"//"|"*/"
<ClassDoc,LineDoc,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"elseif"/[^a-z_A-Z0-9] {
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"elseif"/[^a-z_A-Z0-9] {
// previous section enabled => skip now
depthIf=1;
BEGIN(SkipSection);
}
<ClassDoc,LineDoc,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"else"/[^a-z_A-Z0-9] {
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"else"/[^a-z_A-Z0-9] {
// section was enabled => skip now
depthIf=1;
BEGIN(SkipSection);
}
<ClassDoc,LineDoc,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"endif"/[^a-z_A-Z0-9] {
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"endif"/[^a-z_A-Z0-9] {
// section enabled => absorb endif
}
<ClassDoc,LineDoc,Doc,JavaDoc,AfterDoc>{CMD}"ingroup"{B}+ {
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"ingroup"{B}+ {
lastGroupContext = YY_START;
lineCount();
BEGIN( GroupName );
}
<ClassDoc,LineDoc,Doc,JavaDoc,AfterDoc>{CMD}"nosubgrouping"/[^a-z_A-Z0-9] {
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"nosubgrouping"/[^a-z_A-Z0-9] {
current->subGrouping = FALSE;
}
<ClassDoc,LineDoc,Doc,JavaDoc,AfterDoc>{CMD}"showinitializer"/[^a-z_A-Z0-9] {
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"showinitializer"/[^a-z_A-Z0-9] {
current->initLines = 100000; // ON
}
<ClassDoc,LineDoc,Doc,JavaDoc,AfterDoc>{CMD}"hideinitializer"/[^a-z_A-Z0-9] {
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"hideinitializer"/[^a-z_A-Z0-9] {
current->initLines = 0; // OFF
}
<GroupName>{ID} {
......@@ -4478,7 +4480,9 @@ static void parseCompounds(Entry *rt)
// set default protection based on the compound type
if( ce->section==Entry::CLASS_SEC ) // class
{
if (ce->fileName.right(5)==".java" || ce->fileName.right(4)==".php")
if (ce->fileName.right(5)==".java" ||
ce->fileName.right(4)==".php" ||
ce->fileName.right(4)==".inc")
current->protection = protection = Public ; // Actually this should be package scope!
else
current->protection = protection = Private ;
......
......@@ -19,6 +19,7 @@
*
* Revision history
*
* 2002/08: translated new items used since version 1.2.17
* 2002/07: translated new items used since version 1.2.16
* 2002/06: modified trRelatedPagesDescription() method
* correct typo in trInclByDepGraph() method
......@@ -65,7 +66,7 @@
#ifndef TRANSLATOR_IT_H
#define TRANSLATOR_IT_H
class TranslatorItalian : public TranslatorAdapter_1_2_17
class TranslatorItalian : public Translator
{
public:
......@@ -1358,6 +1359,17 @@ class TranslatorItalian : public TranslatorAdapter_1_2_17
return "Sommario";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.17
//////////////////////////////////////////////////////////////////////////
/*! Used as the header of the list of item that have been
* flagged deprecated
*/
virtual QCString trDeprecatedList()
{
return "Lista degli elementi deprecati";
}
};
#endif
......@@ -13,7 +13,7 @@
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
* Polish translation was updated to version 1.2.16 by
* Polish translation was updated to version 1.2.17 by
* Piotr Kaminski (Piotr.Kaminski@ctm.gdynia.pl)
*/
......@@ -22,7 +22,7 @@
#include "translator_adapter.h"
class TranslatorPolish : public TranslatorAdapter_1_2_16
class TranslatorPolish : public TranslatorAdapter_1_2_17
{
public:
......@@ -82,7 +82,16 @@ class TranslatorPolish : public TranslatorAdapter_1_2_16
/*! header that is put before the list of member attributes. */
QCString trMemberDataDocumentation()
{ return "Dokumentacja Atrybutów Sk³adowych"; }
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return "Dokumentacja Pól";
}
else
{
return "Dokumentacja Atrybutów Sk³adowych";
}
}
/*! this is the text of a link put after brief descriptions. */
QCString trMore()
......@@ -146,7 +155,16 @@ class TranslatorPolish : public TranslatorAdapter_1_2_16
/*! This is put above each page as a link to the list of annotated classes */
QCString trCompoundList()
{ return "Lista Klas"; }
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return "Struktury Danych";
}
else
{
return "Lista Klas";
}
}
/*! This is put above each page as a link to the list of documented files */
QCString trFileList()
......@@ -158,11 +176,29 @@ class TranslatorPolish : public TranslatorAdapter_1_2_16
/*! This is put above each page as a link to all members of compounds. */
QCString trCompoundMembers()
{ return "Sk³adowe Klas"; }
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return "Pola Danych";
}
else
{
return "Sk³adowe Klas";
}
}
/*! This is put above each page as a link to all members of files. */
QCString trFileMembers()
{ return "Sk³adowe Plików"; }
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return "Globalne";
}
else
{
return "Sk³adowe Plików";
}
}
/*! This is put above each page as a link to all related pages. */
QCString trRelatedPages()
......@@ -193,20 +229,58 @@ class TranslatorPolish : public TranslatorAdapter_1_2_16
/*! This is an introduction to the annotated compound list. */
QCString trCompoundListDescription()
{ return "Tutaj znajduj± siê klasy, struktury, "
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return "Tutaj znajduj± siê struktury danych wraz z ich krótkimi opisami:";
}
else
{
return "Tutaj znajduj± siê klasy, struktury, "
"unie i interfejsy wraz z ich krótkimi opisami:";
}
}
/*! This is an introduction to the page with all class members. */
QCString trCompoundMembersDescription(bool extractAll)
{
QCString result="Tutaj znajduje siê lista wszystkich ";
if (!extractAll) result+="udokumentowanych ";
result+="sk³adowych wraz z odno¶nikami do ";
if (!extractAll)
{
result+="udokumentowanych ";
}
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
result+="pól struktur i unii";
}
else
{
result+="sk³adowych";
}
result+=" wraz z odno¶nikami do ";
if (extractAll)
result+="dokumentacji klas dla ka¿dej sk³adowej:";
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
result+="dokumentacji struktur/unii dla ka¿dego pola:";
}
else
{
result+="dokumentacji klas dla ka¿dej sk³adowej:";
}
}
else
result+="klas, do których dana sk³adowa nale¿y:";
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
result+="struktur/unii, do których dane pole nale¿y:";
}
else
{
result+="klas, do których dana sk³adowa nale¿y:";
}
}
return result;
}
......@@ -215,11 +289,19 @@ class TranslatorPolish : public TranslatorAdapter_1_2_16
{
QCString result="Tutaj znajduje siê lista wszystkich ";
if (!extractAll) result+="udokumentowanych ";
result+="sk³adowych wraz z odno¶nikami do ";
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
result+="funkcji, zmiennych, makr, wyliczeñ i definicji typów";
}
else
{
result+="sk³adowych plików";
}
result+=" wraz z odno¶nikami do ";
if (extractAll)
result+="dokumentacji plików dla ka¿dej sk³adowej:";
result+="plików, do których one nale¿±:";
else
result+="plików, do których dana sk³adowa nale¿y:";
result+="dokumentacji:";
return result;
}
......@@ -268,7 +350,16 @@ class TranslatorPolish : public TranslatorAdapter_1_2_16
* annotated compound index.
*/
QCString trCompoundIndex()
{ return "Indeks Klas"; }
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return "Indeks Struktur Danych";
}
else
{
return "Indeks Klas";
}
}
/*! This is used in LaTeX as the title of the chapter with the
* list of all files.
......@@ -286,7 +377,16 @@ class TranslatorPolish : public TranslatorAdapter_1_2_16
* the documentation of all classes, structs and unions.
*/
QCString trClassDocumentation()
{ return "Dokumentacja Klas"; }
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return "Dokumentacja Struktur Danych";
}
else
{
return "Dokumentacja Klas";
}
}
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all files.
......@@ -402,7 +502,16 @@ class TranslatorPolish : public TranslatorAdapter_1_2_16
* the list of links to documented compounds
*/
QCString trCompounds()
{ return "Komponenty"; }
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return "Struktury Danych";
}
else
{
return "Komponenty";
}
}
/*! This is used in the documentation of a group before the list of
* links to documented files
......@@ -521,7 +630,7 @@ class TranslatorPolish : public TranslatorAdapter_1_2_16
ClassDef::CompoundType compType,
bool isTemplate)
{
QCString result="Referencje";
QCString result="Dokumentacja";
if (isTemplate) result+=" Szablonu";
switch(compType)
{
......@@ -538,7 +647,7 @@ class TranslatorPolish : public TranslatorAdapter_1_2_16
/*! used as the title of the HTML page of a file */
QCString trFileReference(const char *fileName)
{
QCString result="Referencje Pliku ";
QCString result="Dokumentacja Pliku ";
result+=fileName;
return result;
}
......@@ -546,7 +655,7 @@ class TranslatorPolish : public TranslatorAdapter_1_2_16
/*! used as the title of the HTML page of a namespace */
QCString trNamespaceReference(const char *namespaceName)
{
QCString result="Referencje Przestrzeni Nazw ";
QCString result="Dokumentacja Przestrzeni Nazw ";
result+=namespaceName;
return result;
}
......@@ -829,7 +938,14 @@ class TranslatorPolish : public TranslatorAdapter_1_2_16
}
QCString trPublicAttribs()
{
return "Atrybuty Publiczne";
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return "Pola Danych";
}
else
{
return "Atrybuty Publiczne";
}
}
QCString trStaticPublicAttribs()
{
......@@ -881,7 +997,7 @@ class TranslatorPolish : public TranslatorAdapter_1_2_16
QCString trReferencedBy()
{
return "Referencje wed³ug";
return "Odwo³ania w";
}
QCString trRemarks()
{
......@@ -1210,7 +1326,7 @@ class TranslatorPolish : public TranslatorAdapter_1_2_16
*/
virtual QCString trReferences()
{
return "Wskazuje na";
return "Odwo³uje siê do";
}
......@@ -1229,6 +1345,18 @@ class TranslatorPolish : public TranslatorAdapter_1_2_16
return "Implementowany w "+trWriteList(numEntries)+".";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.16
//////////////////////////////////////////////////////////////////////////
/*! used in RTF documentation as a heading for the Table
* of Contents.
*/
virtual QCString trRTFTableOfContents()
{
return "Spis Tre¶ci";
}
};
#endif
This diff is collapsed.
This diff is collapsed.
......@@ -44,6 +44,7 @@ class Definition;
struct TagInfo;
class MemberNameInfoSDict;
struct ListItemInfo;
class PageInfo;
//--------------------------------------------------------------------
......@@ -91,10 +92,27 @@ extern bool getDefs(const QCString &scopeName,
bool checkCV=FALSE
);
extern bool resolveRef(/* in */ const char *scName,
/* in */ const char *name,
/* in */ bool inSeeBlock,
/* out */ Definition **resContext,
/* out */ MemberDef **resMember
);
extern bool resolveLink(/* in */ const char *scName,
/* in */ const char *lr,
/* in */ bool inSeeBlock,
/* out */ Definition **resContext,
/* out */ PageInfo **resPageInfo,
/* out */ QCString &resAnchor
);
extern bool generateRef(OutputDocInterface &od,const char *,
const char *,bool inSeeBlock,const char * =0);
extern bool generateLink(OutputDocInterface &od,const char *,
const char *,bool inSeeBlock,const char *);
extern void generateFileRef(OutputDocInterface &od,const char *,
const char *linkTxt=0);
void writePageRef(OutputDocInterface &od,const char *cn,const char *mn);
......
......@@ -895,6 +895,10 @@ class XMLGenerator : public OutputDocInterface
{
XML_DB(("(endSectionRefList)\n"));
}
void writeCodeAnchor(const char *anchor)
{
XML_DB(("(writeCodeAnchor(%s))\n",anchor));
}
// Generator specific functions
......@@ -1311,6 +1315,12 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
writeXMLString(t,emd->initializer());
t << "</initializer>" << endl;
}
t << " <briefdescription>" << endl;
writeXMLDocBlock(t,emd->getDefFileName(),emd->getDefLine(),scopeName,emd,emd->briefDescription());
t << " </briefdescription>" << endl;
t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,emd->getDefFileName(),emd->getDefLine(),scopeName,emd,emd->documentation());
t << " </detaileddescription>" << endl;
t << " </enumvalue>" << endl;
}
}
......
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