Commit 6b195c8d authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.3.7-20040617

parent 62039dd4
DOXYGEN Version 1.3.7-20040526 DOXYGEN Version 1.3.7-20040617
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 (26 May 2004) Dimitri van Heesch (17 June 2004)
DOXYGEN Version 1.3.7_20040526 DOXYGEN Version 1.3.7_20040617
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) (26 May 2004) Dimitri van Heesch (dimitri@stack.nl) (17 June 2004)
1.3.7-20040526 1.3.7-20040617
...@@ -89,7 +89,8 @@ static bool saveConfig( QString saveFile ) ...@@ -89,7 +89,8 @@ static bool saveConfig( QString saveFile )
return FALSE; // failure return FALSE; // failure
} }
Config::instance()->writeTemplate(&f,TRUE,FALSE); // write brief config file QTextStream t(&f);
Config::instance()->writeTemplate(t,TRUE,FALSE); // write brief config file
return TRUE; // success return TRUE; // success
} }
......
...@@ -440,11 +440,11 @@ doxygen. Unrecognized commands are treated as normal text. ...@@ -440,11 +440,11 @@ doxygen. Unrecognized commands are treated as normal text.
\verbatim \verbatim
/*! \mainpage My Personal Index Page /*! \mainpage My Personal Index Page
* *
* \section intro Introduction * \section intro_sec Introduction
* *
* This is the introduction. * This is the introduction.
* *
* \section install Installation * \section install_sec Installation
* *
* \subsection step1 Step 1: Opening the box * \subsection step1 Step 1: Opening the box
* *
...@@ -603,13 +603,6 @@ See section \ref memgroup for an example. ...@@ -603,13 +603,6 @@ See section \ref memgroup for an example.
non-friend functions that are nevertheless strongly coupled to a certain non-friend functions that are nevertheless strongly coupled to a certain
class. It only works for functions. class. It only works for functions.
\par Example:
\verbinclude relates.cpp
\htmlonly
Click <a href="$(DOXYGEN_DOCDIR)/examples/relates/html/globals.html">here</a>
for the corresponding HTML documentation that is generated by doxygen.
\endhtmlonly
<hr> <hr>
\section cmdshowinitializer \showinitializer \section cmdshowinitializer \showinitializer
......
...@@ -359,14 +359,6 @@ followed by the descriptions of the tags grouped by category. ...@@ -359,14 +359,6 @@ followed by the descriptions of the tags grouped by category.
(but less readable) file names. This can be useful is your file systems (but less readable) file names. This can be useful is your file systems
doesn't support long names like on DOS, Mac, or CD-ROM. doesn't support long names like on DOS, Mac, or CD-ROM.
\anchor cfg_verbatim_headers
<dt>\c VERBATIM_HEADERS <dd>
\addindex VERBATIM_HEADERS
If the \c VERBATIM_HEADERS tag is set the \c YES (the default) then doxygen
will generate a verbatim copy of the header file for each class for
which an include is specified. Set to NO to disable this.
\sa Section \ref cmdclass "\\class".
\anchor cfg_javadoc_autobrief \anchor cfg_javadoc_autobrief
<dt>\c JAVADOC_AUTOBRIEF <dd> <dt>\c JAVADOC_AUTOBRIEF <dd>
\addindex JAVADOC_AUTOBRIEF \addindex JAVADOC_AUTOBRIEF
...@@ -830,6 +822,14 @@ function's detailed documentation block. ...@@ -830,6 +822,14 @@ function's detailed documentation block.
then for each documented function all documented entities then for each documented function all documented entities
called/used by that function will be listed. called/used by that function will be listed.
\anchor cfg_verbatim_headers
<dt>\c VERBATIM_HEADERS <dd>
\addindex VERBATIM_HEADERS
If the \c VERBATIM_HEADERS tag is set the \c YES (the default) then doxygen
will generate a verbatim copy of the header file for each class for
which an include is specified. Set to NO to disable this.
\sa Section \ref cmdclass "\\class".
</dl> </dl>
\section alphabetical_index Alphabetical index options \section alphabetical_index Alphabetical index options
......
...@@ -23,11 +23,11 @@ You should use the \\mainpage command inside a comment block like this: ...@@ -23,11 +23,11 @@ You should use the \\mainpage command inside a comment block like this:
\verbatim \verbatim
/*! \mainpage My Personal Index Page /*! \mainpage My Personal Index Page
* *
* \section intro Introduction * \section intro_sec Introduction
* *
* This is the introduction. * This is the introduction.
* *
* \section install Installation * \section install_sec Installation
* *
* \subsection step1 Step 1: Opening the box * \subsection step1 Step 1: Opening the box
* *
......
...@@ -23,13 +23,12 @@ text fragments, generated by doxygen, can be produced in languages other ...@@ -23,13 +23,12 @@ text fragments, generated by doxygen, can be produced in languages other
than English (the default). The output language is chosen through the than English (the default). The output language is chosen through the
configuration file (with default name and known as Doxyfile). configuration file (with default name and known as Doxyfile).
Currently (version 1.3.7), 29 languages Currently (version 1.3.7-20040616), 29 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, French, German, Greek, Czech, Danish, Dutch, English, Finnish, French, German, Greek,
Hungarian, Italian, Japanese (+En), Korean (+En), Lithuanian, Hungarian, Italian, Japanese (+En), Korean (+En), Lithuanian,
Norwegian, Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Norwegian, Polish, Portuguese, Romanian, Russian, Serbian, Slovak,.
Slovene, Spanish, Swedish, and Ukrainian..
The table of information related to the supported languages follows. The table of information related to the supported languages follows.
It is sorted by language alphabetically. The <b>Status</b> column It is sorted by language alphabetically. The <b>Status</b> column
...@@ -54,7 +53,7 @@ when the translator was updated. ...@@ -54,7 +53,7 @@ when the translator was updated.
<td>Brazilian Portuguese</td> <td>Brazilian Portuguese</td>
<td>Fabio "FJTC" Jun Takada Chino</td> <td>Fabio "FJTC" Jun Takada Chino</td>
<td>chino@NOSPAM.icmc.sc.usp.br</td> <td>chino@NOSPAM.icmc.sc.usp.br</td>
<td>up-to-date</td> <td>1.3.8</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Catalan</td> <td>Catalan</td>
...@@ -72,31 +71,31 @@ when the translator was updated. ...@@ -72,31 +71,31 @@ when the translator was updated.
<td>Chinese Traditional</td> <td>Chinese Traditional</td>
<td>Daniel YC Lin<br>Gary Lee</td> <td>Daniel YC Lin<br>Gary Lee</td>
<td>daniel@NOSPAM.twpda.com<br>garylee@NOSPAM.ecosine.com.tw</td> <td>daniel@NOSPAM.twpda.com<br>garylee@NOSPAM.ecosine.com.tw</td>
<td>up-to-date</td> <td>1.3.8</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<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>up-to-date</td> <td>1.3.8</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Czech</td> <td>Czech</td>
<td>Petr P&#x0159;ikryl</td> <td>Petr P&#x0159;ikryl</td>
<td>prikrylp@NOSPAM.skil.cz</td> <td>prikrylp@NOSPAM.skil.cz</td>
<td>up-to-date</td> <td>1.3.8</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Danish</td> <td>Danish</td>
<td>Erik S&oslash;e S&oslash;rensen</td> <td>Erik S&oslash;e S&oslash;rensen</td>
<td>erik@NOSPAM.mail.nu</td> <td>erik@NOSPAM.mail.nu</td>
<td>up-to-date</td> <td>1.3.8</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Dutch</td> <td>Dutch</td>
<td>Dimitri van Heesch</td> <td>Dimitri van Heesch</td>
<td>dimitri@NOSPAM.stack.nl</td> <td>dimitri@NOSPAM.stack.nl</td>
<td>up-to-date</td> <td>1.3.8</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>English</td> <td>English</td>
...@@ -114,13 +113,13 @@ when the translator was updated. ...@@ -114,13 +113,13 @@ when the translator was updated.
<td>French</td> <td>French</td>
<td>Xavier Outhier</td> <td>Xavier Outhier</td>
<td>xouthier@NOSPAM.yahoo.fr</td> <td>xouthier@NOSPAM.yahoo.fr</td>
<td>up-to-date</td> <td>1.3.8</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>German</td> <td>German</td>
<td>Jens Seidel</td> <td>Jens Seidel</td>
<td>jensseidel@NOSPAM.users.sf.net</td> <td>jensseidel@NOSPAM.users.sf.net</td>
<td>up-to-date</td> <td>1.3.8</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Greek</td> <td>Greek</td>
...@@ -132,13 +131,13 @@ when the translator was updated. ...@@ -132,13 +131,13 @@ when the translator was updated.
<td>Hungarian</td> <td>Hungarian</td>
<td>F&ouml;ldv&aacute;ri Gy&ouml;rgy<br>&Aacute;kos Kiss</td> <td>F&ouml;ldv&aacute;ri Gy&ouml;rgy<br>&Aacute;kos Kiss</td>
<td>foldvari@NOSPAM.diatronltd.com<br>akiss@NOSPAM.users.sourceforge.net</td> <td>foldvari@NOSPAM.diatronltd.com<br>akiss@NOSPAM.users.sourceforge.net</td>
<td>up-to-date</td> <td>1.3.8</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Italian</td> <td>Italian</td>
<td>Alessandro Falappa<br>Ahmed Aldo Faisal</td> <td>Alessandro Falappa<br>Ahmed Aldo Faisal</td>
<td>alessandro@NOSPAM.falappa.net<br>aaf23@NOSPAM.cam.ac.uk</td> <td>alessandro@NOSPAM.falappa.net<br>aaf23@NOSPAM.cam.ac.uk</td>
<td>up-to-date</td> <td>1.3.8</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Japanese</td> <td>Japanese</td>
...@@ -156,7 +155,7 @@ when the translator was updated. ...@@ -156,7 +155,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>up-to-date</td> <td>1.3.8</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>KoreanEn</td> <td>KoreanEn</td>
...@@ -168,7 +167,7 @@ when the translator was updated. ...@@ -168,7 +167,7 @@ when the translator was updated.
<td>Lithuanian</td> <td>Lithuanian</td>
<td>Tomas Simonaitis<br>Mindaugas Radzius<br>Aidas Berukstis</td> <td>Tomas Simonaitis<br>Mindaugas Radzius<br>Aidas Berukstis</td>
<td>haden@NOSPAM.homelan.lt<br>mindaugasradzius@NOSPAM.takas.lt<br>aidasber@NOSPAM.takas.lt</td> <td>haden@NOSPAM.homelan.lt<br>mindaugasradzius@NOSPAM.takas.lt<br>aidasber@NOSPAM.takas.lt</td>
<td>up-to-date</td> <td>1.3.8</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Norwegian</td> <td>Norwegian</td>
...@@ -204,7 +203,7 @@ when the translator was updated. ...@@ -204,7 +203,7 @@ when the translator was updated.
<td>Serbian</td> <td>Serbian</td>
<td>Dejan Milosavljevic</td> <td>Dejan Milosavljevic</td>
<td>dmilos@NOSPAM.email.com</td> <td>dmilos@NOSPAM.email.com</td>
<td>up-to-date</td> <td>1.3.8</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Slovak</td> <td>Slovak</td>
...@@ -222,7 +221,7 @@ when the translator was updated. ...@@ -222,7 +221,7 @@ when the translator was updated.
<td>Spanish</td> <td>Spanish</td>
<td>Francisco Oltra Thennet</td> <td>Francisco Oltra Thennet</td>
<td>foltra@NOSPAM.puc.cl</td> <td>foltra@NOSPAM.puc.cl</td>
<td>up-to-date</td> <td>1.3.08</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Swedish</td> <td>Swedish</td>
...@@ -251,38 +250,38 @@ when the translator was updated. ...@@ -251,38 +250,38 @@ when the translator was updated.
\hline \hline
\hline \hline
Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny chino@icmc.sc.usp.br} & up-to-date \\ Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny chino@icmc.sc.usp.br} & 1.3.8 \\
\hline \hline
Catalan & Albert Mora & {\tt\tiny amora@iua.upf.es} & 1.2.17 \\ Catalan & Albert Mora & {\tt\tiny amora@iua.upf.es} & 1.2.17 \\
\hline \hline
Chinese & Wei Liu & {\tt\tiny liuwei@asiainfo.com} & 1.2.13 \\ Chinese & Wei Liu & {\tt\tiny liuwei@asiainfo.com} & 1.2.13 \\
~ & Wang Weihan & {\tt\tiny wangweihan@capinfo.com.cn} & ~ \\ ~ & Wang Weihan & {\tt\tiny wangweihan@capinfo.com.cn} & ~ \\
\hline \hline
Chinese Traditional & Daniel YC Lin & {\tt\tiny daniel@twpda.com} & up-to-date \\ Chinese Traditional & Daniel YC Lin & {\tt\tiny daniel@twpda.com} & 1.3.8 \\
~ & Gary Lee & {\tt\tiny garylee@ecosine.com.tw} & ~ \\ ~ & Gary Lee & {\tt\tiny garylee@ecosine.com.tw} & ~ \\
\hline \hline
Croatian & Boris Bralo & {\tt\tiny boris.bralo@zg.tel.hr} & up-to-date \\ Croatian & Boris Bralo & {\tt\tiny boris.bralo@zg.tel.hr} & 1.3.8 \\
\hline \hline
Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & up-to-date \\ Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & 1.3.8 \\
\hline \hline
Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny erik@mail.nu} & up-to-date \\ Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny erik@mail.nu} & 1.3.8 \\
\hline \hline
Dutch & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\ Dutch & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & 1.3.8 \\
\hline \hline
English & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\ English & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\
\hline \hline
Finnish & Olli Korhonen & {\tt\tiny Olli.Korhonen@ccc.fi} & obsolete \\ Finnish & Olli Korhonen & {\tt\tiny Olli.Korhonen@ccc.fi} & obsolete \\
\hline \hline
French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & up-to-date \\ French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & 1.3.8 \\
\hline \hline
German & Jens Seidel & {\tt\tiny jensseidel@users.sf.net} & up-to-date \\ German & Jens Seidel & {\tt\tiny jensseidel@users.sf.net} & 1.3.8 \\
\hline \hline
Greek & Harry Kalogirou & {\tt\tiny harkal@rainbow.cs.unipi.gr} & 1.2.11 \\ Greek & Harry Kalogirou & {\tt\tiny harkal@rainbow.cs.unipi.gr} & 1.2.11 \\
\hline \hline
Hungarian & F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt\tiny foldvari@diatronltd.com} & up-to-date \\ Hungarian & F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt\tiny foldvari@diatronltd.com} & 1.3.8 \\
~ & \'{A}kos Kiss & {\tt\tiny akiss@users.sourceforge.net} & ~ \\ ~ & \'{A}kos Kiss & {\tt\tiny akiss@users.sourceforge.net} & ~ \\
\hline \hline
Italian & Alessandro Falappa & {\tt\tiny alessandro@falappa.net} & up-to-date \\ Italian & Alessandro Falappa & {\tt\tiny alessandro@falappa.net} & 1.3.8 \\
~ & Ahmed Aldo Faisal & {\tt\tiny aaf23@cam.ac.uk} & ~ \\ ~ & Ahmed Aldo Faisal & {\tt\tiny aaf23@cam.ac.uk} & ~ \\
\hline \hline
Japanese & Ryunosuke Satoh & {\tt\tiny sun594@hotmail.com} & 1.3.3 \\ Japanese & Ryunosuke Satoh & {\tt\tiny sun594@hotmail.com} & 1.3.3 \\
...@@ -290,11 +289,11 @@ when the translator was updated. ...@@ -290,11 +289,11 @@ when the translator was updated.
\hline \hline
JapaneseEn & see the Japanese language & {\tt\tiny ~} & English based \\ JapaneseEn & see the Japanese language & {\tt\tiny ~} & English based \\
\hline \hline
Korean & Richard Kim & {\tt\tiny ryk@dspwiz.com} & up-to-date \\ Korean & Richard Kim & {\tt\tiny ryk@dspwiz.com} & 1.3.8 \\
\hline \hline
KoreanEn & see the Korean language & {\tt\tiny ~} & English based \\ KoreanEn & see the Korean language & {\tt\tiny ~} & English based \\
\hline \hline
Lithuanian & Tomas Simonaitis & {\tt\tiny haden@homelan.lt} & up-to-date \\ Lithuanian & Tomas Simonaitis & {\tt\tiny haden@homelan.lt} & 1.3.8 \\
~ & Mindaugas Radzius & {\tt\tiny mindaugasradzius@takas.lt} & ~ \\ ~ & Mindaugas Radzius & {\tt\tiny mindaugasradzius@takas.lt} & ~ \\
~ & Aidas Berukstis & {\tt\tiny aidasber@takas.lt} & ~ \\ ~ & Aidas Berukstis & {\tt\tiny aidasber@takas.lt} & ~ \\
\hline \hline
...@@ -309,13 +308,13 @@ when the translator was updated. ...@@ -309,13 +308,13 @@ when the translator was updated.
\hline \hline
Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & up-to-date \\ Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & up-to-date \\
\hline \hline
Serbian & Dejan Milosavljevic & {\tt\tiny dmilos@email.com} & up-to-date \\ Serbian & Dejan Milosavljevic & {\tt\tiny dmilos@email.com} & 1.3.8 \\
\hline \hline
Slovak & Stanislav Kudl\'{a}\v{c} & {\tt\tiny skudlac@pobox.sk} & 1.2.18 \\ Slovak & Stanislav Kudl\'{a}\v{c} & {\tt\tiny skudlac@pobox.sk} & 1.2.18 \\
\hline \hline
Slovene & Matjaz Ostroversnik & {\tt\tiny matjaz.ostroversnik@zrs-tk.si} & 1.2.16 \\ Slovene & Matjaz Ostroversnik & {\tt\tiny matjaz.ostroversnik@zrs-tk.si} & 1.2.16 \\
\hline \hline
Spanish & Francisco Oltra Thennet & {\tt\tiny foltra@puc.cl} & up-to-date \\ Spanish & Francisco Oltra Thennet & {\tt\tiny foltra@puc.cl} & 1.3.08 \\
\hline \hline
Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} & 1.3.3 \\ Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} & 1.3.3 \\
\hline \hline
......
...@@ -40,17 +40,90 @@ ...@@ -40,17 +40,90 @@
content should be more useful for developers. content should be more useful for developers.
2004/02/11 - Some tuning-up to provide more useful information. 2004/02/11 - Some tuning-up to provide more useful information.
2004/04/16 - Added new tokens to the tokenizer (to remove some warnings). 2004/04/16 - Added new tokens to the tokenizer (to remove some warnings).
2004/05/25 - Added from __future__ import generators not to force Python 2.3.
2004/06/03 - Removed dependency on textwrap module.
""" """
import os, re, sys, textwrap from __future__ import generators
import os, re, sys
def fill(s): def fill(s):
"""Returns string formated to the wrapped paragraph multiline string. """Returns string formated to the wrapped paragraph multiline string.
Replaces whitespaces by one space and then uses he textwrap.fill().""" Replaces whitespaces by one space and then uses he textwrap.fill()."""
# Replace all whitespace by spaces, remove whitespaces that are not
# necessary, strip the left and right whitespaces, and break the string
# to list of words.
rexWS = re.compile(r'\s+') rexWS = re.compile(r'\s+')
return textwrap.fill(rexWS.sub(' ', s)) lst = rexWS.sub(' ', s).strip().split()
# If the list is not empty, put the words together and form the lines
# of maximum 70 characters. Build the list of lines.
lines = []
if lst:
line = lst.pop(0) # no separation space in front of the first word
for word in lst:
if len(line) + len(word) < 70:
line += ' ' + word
else:
lines.append(line) # another full line formed
line = word # next line started
return '\n'.join(lines)
# The following function dedent() is the verbatim copy from the textwrap.py
# module. The textwrap.py was introduced in Python 2.3. To make this script
# working also in older Python versions, I have decided to copy it.
# Notice that the textwrap.py is copyrighted:
#
# Copyright (C) 1999-2001 Gregory P. Ward.
# Copyright (C) 2002, 2003 Python Software Foundation.
# Written by Greg Ward <gward@python.net>
#
# The explicit permission to use the code here was sent by Guido van Rossum
# (4th June, 2004).
#
def dedent(text):
"""dedent(text : string) -> string
Remove any whitespace than can be uniformly removed from the left
of every line in `text`.
This can be used e.g. to make triple-quoted strings line up with
the left edge of screen/whatever, while still presenting it in the
source code in indented form.
For example:
def test():
# end first line with \ to avoid the empty line!
s = '''\
hello
world
'''
print repr(s) # prints ' hello\n world\n '
print repr(dedent(s)) # prints 'hello\n world\n'
"""
lines = text.expandtabs().split('\n')
margin = None
for line in lines:
content = line.lstrip()
if not content:
continue
indent = len(line) - len(content)
if margin is None:
margin = indent
else:
margin = min(margin, indent)
if margin is not None and margin > 0:
for i in range(len(lines)):
lines[i] = lines[i][margin:]
return '\n'.join(lines)
class Transl: class Transl:
...@@ -1521,7 +1594,7 @@ class TrManager: ...@@ -1521,7 +1594,7 @@ class TrManager:
</table> </table>
\\endhtmlonly \\endhtmlonly
''' '''
htmlTableTpl = textwrap.dedent(htmlTableTpl) htmlTableTpl = dedent(htmlTableTpl)
htmlTrTpl = '\n <tr bgcolor="#ffffff">%s\n </tr>' htmlTrTpl = '\n <tr bgcolor="#ffffff">%s\n </tr>'
htmlTdTpl = '\n <td>%s</td>' htmlTdTpl = '\n <td>%s</td>'
...@@ -1585,7 +1658,7 @@ class TrManager: ...@@ -1585,7 +1658,7 @@ class TrManager:
\end{tabular} \end{tabular}
\endlatexonly \endlatexonly
''' '''
latexTableTpl = textwrap.dedent(latexTableTpl) latexTableTpl = dedent(latexTableTpl)
latexLineTpl = '\n' + r' %s & %s & {\tt\tiny %s} & %s \\' latexLineTpl = '\n' + r' %s & %s & {\tt\tiny %s} & %s \\'
# Loop through transl objects in the order of sorted readable names # Loop through transl objects in the order of sorted readable names
......
...@@ -18,7 +18,6 @@ int strcmp(const String &s1,const String &s2) ...@@ -18,7 +18,6 @@ int strcmp(const String &s1,const String &s2)
/*! \relates String /*! \relates String
* A string debug function. * A string debug function.
*/ */
void stringDebug() void stringDebug()
{ {
} }
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.3.7_20040526 Version: 1.3.7_20040617
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
......
...@@ -86,6 +86,7 @@ ClassDef::ClassDef( ...@@ -86,6 +86,7 @@ ClassDef::ClassDef(
m_innerClasses = new ClassSDict(17); m_innerClasses = new ClassSDict(17);
m_subGrouping=Config_getBool("SUBGROUPING"); m_subGrouping=Config_getBool("SUBGROUPING");
m_templateInstances = 0; m_templateInstances = 0;
m_variableInstances = 0;
m_templateMaster =0; m_templateMaster =0;
m_templBaseClassNames = 0; m_templBaseClassNames = 0;
m_artificial = FALSE; m_artificial = FALSE;
...@@ -123,6 +124,7 @@ ClassDef::~ClassDef() ...@@ -123,6 +124,7 @@ ClassDef::~ClassDef()
delete memberGroupSDict; delete memberGroupSDict;
delete m_innerClasses; delete m_innerClasses;
delete m_templateInstances; delete m_templateInstances;
delete m_variableInstances;
delete m_templBaseClassNames; delete m_templBaseClassNames;
delete m_tempArgs; delete m_tempArgs;
} }
...@@ -937,21 +939,16 @@ void ClassDef::writeDetailedDescription(OutputList &ol, const QCString &pageType ...@@ -937,21 +939,16 @@ void ClassDef::writeDetailedDescription(OutputList &ol, const QCString &pageType
// write all documentation for this class // write all documentation for this class
void ClassDef::writeDocumentation(OutputList &ol) void ClassDef::writeDocumentation(OutputList &ol)
{ {
// write title QCString pageType = " ";
QCString pageTitle=displayName().copy(); pageType += compoundTypeString();
QCString pageType; toupper(pageType.at(1));
QCString cType=compoundTypeString(); QCString pageTitle = theTranslator->trCompoundReference(displayName(),
//printf("ClassDef::writeDocumentation() cType=%s\n",cType.data()); m_compType == Interface && m_isObjC ? Class : m_compType,
toupper(cType.at(0)); m_tempArgs != 0);
pageType+=" ";
pageType+=cType; startFile(ol,getOutputFileBase(),name(),pageTitle);
pageTitle+=pageType+" Reference";
if (m_tempArgs) pageTitle.prepend(" Template");
startFile(ol,getOutputFileBase(),name(),pageTitle);
startTitle(ol,getOutputFileBase()); startTitle(ol,getOutputFileBase());
ol.parseText(theTranslator->trCompoundReference(displayName(), ol.parseText(pageTitle);
m_isObjC && m_compType==Interface ? Class : m_compType,
m_tempArgs!=0));
addGroupListToTitle(ol,this); addGroupListToTitle(ol,this);
endTitle(ol,getOutputFileBase(),name()); endTitle(ol,getOutputFileBase(),name());
...@@ -2642,6 +2639,26 @@ ClassDef *ClassDef::insertTemplateInstance(const QCString &fileName, ...@@ -2642,6 +2639,26 @@ ClassDef *ClassDef::insertTemplateInstance(const QCString &fileName,
return templateClass; return templateClass;
} }
ClassDef *ClassDef::getVariableInstance(const char *templSpec)
{
if (m_variableInstances==0)
{
m_variableInstances = new QDict<ClassDef>(17);
m_variableInstances->setAutoDelete(TRUE);
}
ClassDef *templateClass=m_variableInstances->find(templSpec);
if (templateClass==0)
{
Debug::print(Debug::Classes,0," New template variable instance class `%s'`%s'\n",name().data(),templSpec);
templateClass = new ClassDef("<code>",1,name()+templSpec,
ClassDef::Class,0,0,FALSE);
templateClass->addMembersToTemplateInstance( this, templSpec );
templateClass->setTemplateMaster(this);
m_variableInstances->insert(templSpec,templateClass);
}
return templateClass;
}
void ClassDef::setTemplateBaseClassNames(QDict<int> *templateNames) void ClassDef::setTemplateBaseClassNames(QDict<int> *templateNames)
{ {
if (templateNames==0) return; if (templateNames==0) return;
......
...@@ -290,6 +290,7 @@ class ClassDef : public Definition ...@@ -290,6 +290,7 @@ class ClassDef : public Definition
//QCString getTemplateArgumentMapping(const char *formal) const; //QCString getTemplateArgumentMapping(const char *formal) const;
ClassDef *insertTemplateInstance(const QCString &fileName,int startLine, ClassDef *insertTemplateInstance(const QCString &fileName,int startLine,
const QCString &templSpec,bool &freshInstance); const QCString &templSpec,bool &freshInstance);
ClassDef *getVariableInstance(const char *templSpec);
void setTemplateBaseClassNames(QDict<int> *templateNames); void setTemplateBaseClassNames(QDict<int> *templateNames);
QDict<int> *getTemplateBaseClassNames() const; QDict<int> *getTemplateBaseClassNames() const;
void setTemplateMaster(ClassDef *tm) { m_templateMaster=tm; } void setTemplateMaster(ClassDef *tm) { m_templateMaster=tm; }
...@@ -416,6 +417,12 @@ class ClassDef : public Definition ...@@ -416,6 +417,12 @@ class ClassDef : public Definition
*/ */
QDict<ClassDef> *m_templateInstances; QDict<ClassDef> *m_templateInstances;
/*! Template instances that exists of this class, as defined by variables.
* We do NOT want to document these individually. The key in the
* dictionary is the template argument list.
*/
QDict<ClassDef> *m_variableInstances;
QDict<int> *m_templBaseClassNames; QDict<int> *m_templBaseClassNames;
/*! The class this class is an instance of. */ /*! The class this class is an instance of. */
......
...@@ -227,8 +227,30 @@ void VariableContext::addVariable(const QCString &type,const QCString &name) ...@@ -227,8 +227,30 @@ void VariableContext::addVariable(const QCString &type,const QCString &name)
} }
else if ((i=ltype.find('<'))!=-1) else if ((i=ltype.find('<'))!=-1)
{ {
// probably a template class, try without template arguments as well // probably a template class
addVariable(ltype.left(i),name); QCString typeName(ltype.left(i));
ClassDef* newDef = 0;
QCString templateArgs(ltype.right(ltype.length() - i));
if (
( // look for class definitions inside the code block
(varType=g_codeClassSDict[typeName]) ||
// otherwise look for global class definitions
(varType=getResolvedClass(g_currentDefinition,g_sourceFileDef,typeName))
) && // and it must be a template
varType->templateArguments())
{
newDef = varType->getVariableInstance( templateArgs );
}
if (newDef)
{
DBG_CTX((stderr,"** addVariable type=%s templ=%s name=%s\n",typeName.data(),templateArgs.data(),lname.data()));
scope->append(lname, newDef);
}
else
{
// Doesn't seem to be a template. Try just the base name.
addVariable(typeName,name);
}
} }
else // add a dummy entry so the name is hidden to avoid false links else // add a dummy entry so the name is hidden to avoid false links
{ {
...@@ -914,6 +936,8 @@ static bool generateClassMemberLink(BaseCodeDocInterface &ol,ClassDef *mcd,const ...@@ -914,6 +936,8 @@ static bool generateClassMemberLink(BaseCodeDocInterface &ol,ClassDef *mcd,const
//printf("g_currentDefiniton=%p g_currentMemberDef=%p xmd=%p g_insideBody=%d\n",g_currentDefinition,g_currentMemberDef,xmd,g_insideBody); //printf("g_currentDefiniton=%p g_currentMemberDef=%p xmd=%p g_insideBody=%d\n",g_currentDefinition,g_currentMemberDef,xmd,g_insideBody);
if (xmd->templateMaster()) xmd = xmd->templateMaster();
// add usage reference // add usage reference
if (g_currentDefinition && g_currentMemberDef && if (g_currentDefinition && g_currentMemberDef &&
xmd!=g_currentMemberDef && g_insideBody) xmd!=g_currentMemberDef && g_insideBody)
......
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
<xsd:complexType name="compoundRefType" mixed="true"> <xsd:complexType name="compoundRefType" mixed="true">
<xsd:simpleContent> <xsd:simpleContent>
<xsd:extension base="xsd:string"> <xsd:extension base="xsd:string">
<xsd:attribute name="refid" type="xsd:string" /> <xsd:attribute name="refid" type="xsd:string" use="optional" />
<xsd:attribute name="prot" type="DoxProtectionKind" /> <xsd:attribute name="prot" type="DoxProtectionKind" />
<xsd:attribute name="virt" type="DoxVirtualKind" /> <xsd:attribute name="virt" type="DoxVirtualKind" />
</xsd:extension> </xsd:extension>
...@@ -106,6 +106,7 @@ ...@@ -106,6 +106,7 @@
<xsd:complexType name="sectiondefType"> <xsd:complexType name="sectiondefType">
<xsd:sequence> <xsd:sequence>
<xsd:element name="header" type="xsd:string" minOccurs="0" /> <xsd:element name="header" type="xsd:string" minOccurs="0" />
<xsd:element name="description" type="descriptionType" minOccurs="0" />
<xsd:element name="memberdef" type="memberdefType" maxOccurs="unbounded" /> <xsd:element name="memberdef" type="memberdefType" maxOccurs="unbounded" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="kind" type="DoxSectionKind" /> <xsd:attribute name="kind" type="DoxSectionKind" />
...@@ -156,9 +157,9 @@ ...@@ -156,9 +157,9 @@
<xsd:complexType name="enumvalueType" mixed="true"> <xsd:complexType name="enumvalueType" mixed="true">
<xsd:sequence> <xsd:sequence>
<xsd:element name="name" /> <xsd:element name="name" />
<xsd:element name="initializer" type="linkedTextType" minOccurs="0" />
<xsd:element name="briefdescription" type="descriptionType" minOccurs="0" /> <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
<xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" /> <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" />
<xsd:element name="initializer" type="linkedTextType" minOccurs="0" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="id" type="xsd:string" /> <xsd:attribute name="id" type="xsd:string" />
<xsd:attribute name="prot" type="DoxProtectionKind" /> <xsd:attribute name="prot" type="DoxProtectionKind" />
......
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
" <xsd:complexType name=\"compoundRefType\" mixed=\"true\">\n" " <xsd:complexType name=\"compoundRefType\" mixed=\"true\">\n"
" <xsd:simpleContent>\n" " <xsd:simpleContent>\n"
" <xsd:extension base=\"xsd:string\">\n" " <xsd:extension base=\"xsd:string\">\n"
" <xsd:attribute name=\"refid\" type=\"xsd:string\" />\n" " <xsd:attribute name=\"refid\" type=\"xsd:string\" use=\"optional\" />\n"
" <xsd:attribute name=\"prot\" type=\"DoxProtectionKind\" />\n" " <xsd:attribute name=\"prot\" type=\"DoxProtectionKind\" />\n"
" <xsd:attribute name=\"virt\" type=\"DoxVirtualKind\" />\n" " <xsd:attribute name=\"virt\" type=\"DoxVirtualKind\" />\n"
" </xsd:extension>\n" " </xsd:extension>\n"
...@@ -106,6 +106,7 @@ ...@@ -106,6 +106,7 @@
" <xsd:complexType name=\"sectiondefType\">\n" " <xsd:complexType name=\"sectiondefType\">\n"
" <xsd:sequence>\n" " <xsd:sequence>\n"
" <xsd:element name=\"header\" type=\"xsd:string\" minOccurs=\"0\" />\n" " <xsd:element name=\"header\" type=\"xsd:string\" minOccurs=\"0\" />\n"
" <xsd:element name=\"description\" type=\"descriptionType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"memberdef\" type=\"memberdefType\" maxOccurs=\"unbounded\" />\n" " <xsd:element name=\"memberdef\" type=\"memberdefType\" maxOccurs=\"unbounded\" />\n"
" </xsd:sequence>\n" " </xsd:sequence>\n"
" <xsd:attribute name=\"kind\" type=\"DoxSectionKind\" />\n" " <xsd:attribute name=\"kind\" type=\"DoxSectionKind\" />\n"
...@@ -156,9 +157,9 @@ ...@@ -156,9 +157,9 @@
" <xsd:complexType name=\"enumvalueType\" mixed=\"true\">\n" " <xsd:complexType name=\"enumvalueType\" mixed=\"true\">\n"
" <xsd:sequence>\n" " <xsd:sequence>\n"
" <xsd:element name=\"name\" />\n" " <xsd:element name=\"name\" />\n"
" <xsd:element name=\"initializer\" type=\"linkedTextType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"briefdescription\" type=\"descriptionType\" minOccurs=\"0\" />\n" " <xsd:element name=\"briefdescription\" type=\"descriptionType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"detaileddescription\" type=\"descriptionType\" minOccurs=\"0\" />\n" " <xsd:element name=\"detaileddescription\" type=\"descriptionType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"initializer\" type=\"linkedTextType\" minOccurs=\"0\" />\n"
" </xsd:sequence>\n" " </xsd:sequence>\n"
" <xsd:attribute name=\"id\" type=\"xsd:string\" />\n" " <xsd:attribute name=\"id\" type=\"xsd:string\" />\n"
" <xsd:attribute name=\"prot\" type=\"DoxProtectionKind\" />\n" " <xsd:attribute name=\"prot\" type=\"DoxProtectionKind\" />\n"
......
...@@ -502,11 +502,11 @@ class Config ...@@ -502,11 +502,11 @@ class Config
} }
/*! @} */ /*! @} */
/*! Writes a template configuration file to \a f. If \a shortIndex /*! Writes a template configuration to stream \a t. If \a shortIndex
* is \c TRUE the description of each configuration option will * is \c TRUE the description of each configuration option will
* be omitted. * be omitted.
*/ */
void writeTemplate(QFile *f,bool shortIndex,bool updateOnly); void writeTemplate(QTextStream &t,bool shortIndex,bool updateOnly);
///////////////////////////// /////////////////////////////
// internal API // internal API
...@@ -530,6 +530,12 @@ class Config ...@@ -530,6 +530,12 @@ class Config
/*! Initialize config variables to their default value */ /*! Initialize config variables to their default value */
void init(); void init();
/*! Parse a configuration data in string \a str.
* \returns TRUE if successful, or FALSE if the string could not be
* parsed.
*/
bool parseString(const char *fn,const char *str);
/*! Parse a configuration file with name \a fn. /*! Parse a configuration file with name \a fn.
* \returns TRUE if successful, FALSE if the file could not be * \returns TRUE if successful, FALSE if the file could not be
* opened or read. * opened or read.
......
...@@ -660,9 +660,8 @@ static void writeStringList(QTextStream &t,QStrList &l) ...@@ -660,9 +660,8 @@ static void writeStringList(QTextStream &t,QStrList &l)
} }
#endif #endif
void Config::writeTemplate(QFile *f,bool sl,bool upd) void Config::writeTemplate(QTextStream &t,bool sl,bool upd)
{ {
QTextStream t(f);
t << "# Doxyfile " << versionString << endl << endl; t << "# Doxyfile " << versionString << endl << endl;
if (!sl) if (!sl)
{ {
...@@ -1708,8 +1707,12 @@ void Config::create() ...@@ -1708,8 +1707,12 @@ void Config::create()
"file names in lower-case letters. If set to YES upper-case letters are also \n" "file names in lower-case letters. If set to YES upper-case letters are also \n"
"allowed. This is useful if you have classes or files whose names only differ \n" "allowed. This is useful if you have classes or files whose names only differ \n"
"in case and if your file system supports case sensitive file names. Windows \n" "in case and if your file system supports case sensitive file names. Windows \n"
"users are advised to set this option to NO.\n", "and Mac users are advised to set this option to NO.\n",
TRUE #if defined(_WIN32) || defined(macintosh) || defined(__MACOSX__) || defined(__APPLE__)
FALSE // case insensitive file system expected
#else
TRUE // case sensitive file system expected
#endif
); );
cb = addBool( cb = addBool(
"HIDE_SCOPE_NAMES", "HIDE_SCOPE_NAMES",
...@@ -2824,15 +2827,13 @@ static QCString configFileToString(const char *name) ...@@ -2824,15 +2827,13 @@ static QCString configFileToString(const char *name)
return ""; return "";
} }
bool Config::parseString(const char *fn,const char *str)
bool Config::parse(const char *fn)
{ {
QCString contents = configFileToString(fn);
config = Config::instance(); config = Config::instance();
inputString = contents.data(); inputString = str;
inputPosition = 0; inputPosition = 0;
yyFileName = fn;
yyLineNr = 1; yyLineNr = 1;
yyFileName=fn;
includeStack.setAutoDelete(TRUE); includeStack.setAutoDelete(TRUE);
includeStack.clear(); includeStack.clear();
includeDepth = 0; includeDepth = 0;
...@@ -2843,6 +2844,11 @@ bool Config::parse(const char *fn) ...@@ -2843,6 +2844,11 @@ bool Config::parse(const char *fn)
return TRUE; return TRUE;
} }
bool Config::parse(const char *fn)
{
return parseString(fn,configFileToString(fn));
}
extern "C" { // some bogus code to keep the compiler happy extern "C" { // some bogus code to keep the compiler happy
//int configYYwrap() { return 1 ; } //int configYYwrap() { return 1 ; }
} }
...@@ -704,6 +704,7 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children) ...@@ -704,6 +704,7 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children)
Definition *compound=0; Definition *compound=0;
MemberDef *member=0; MemberDef *member=0;
QString name = linkToText(g_token->name,TRUE); QString name = linkToText(g_token->name,TRUE);
int len = g_token->name.length();
if (!g_insideHtmlLink && if (!g_insideHtmlLink &&
resolveRef(g_context,g_token->name,g_inSeeBlock,&compound,&member)) resolveRef(g_context,g_token->name,g_inSeeBlock,&compound,&member))
{ {
...@@ -733,7 +734,15 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children) ...@@ -733,7 +734,15 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children)
); );
} }
} }
else // normal word else if (!g_insideHtmlLink && g_token->name.at(len-1)==':')
{
// special case, where matching Foo: fails to be an Obj-C reference,
// but Foo itself might be linkable.
g_token->name=g_token->name.left(len-1);
handleLinkedWord(parent,children);
children.append(new DocWord(parent,":"));
}
else // normal non-linkable word
{ {
children.append(new DocWord(parent,g_token->name)); children.append(new DocWord(parent,g_token->name));
} }
......
...@@ -295,7 +295,9 @@ FUNCCHAR [a-z_A-Z0-9,:\<\> \t\*\&] ...@@ -295,7 +295,9 @@ FUNCCHAR [a-z_A-Z0-9,:\<\> \t\*\&]
SCOPESEP "::"|"#"|"." SCOPESEP "::"|"#"|"."
SCOPEPRE {ID}("<"{TEMPCHAR}*">")?{SCOPESEP} SCOPEPRE {ID}("<"{TEMPCHAR}*">")?{SCOPESEP}
SCOPEKEYS ":"({ID}":")* SCOPEKEYS ":"({ID}":")*
SCOPEMASK {SCOPEPRE}*(~)?{ID}{SCOPEKEYS}?("<"{TEMPCHAR}*">")? SCOPECPP {SCOPEPRE}*(~)?{ID}("<"{TEMPCHAR}*">")?
SCOPEOBJC {ID}{SCOPEKEYS}?
SCOPEMASK {SCOPECPP}|{SCOPEOBJC}
FUNCARG "("{FUNCCHAR}*")" FUNCARG "("{FUNCCHAR}*")"
OPNEW {BLANK}+"new"({BLANK}*"[]")? OPNEW {BLANK}+"new"({BLANK}*"[]")?
OPDEL {BLANK}+"delete"({BLANK}*"[]")? OPDEL {BLANK}+"delete"({BLANK}*"[]")?
...@@ -462,6 +464,7 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]* ...@@ -462,6 +464,7 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]*
g_token->name = yytext; g_token->name = yytext;
return TK_LNKWORD; return TK_LNKWORD;
} }
<St_Para>{LNKWORD1}/"<br>" | // prevent <br> html tag to be parsed as template arguments
<St_Para>{LNKWORD1} | <St_Para>{LNKWORD1} |
<St_Para>{LNKWORD1}{FUNCARG} | <St_Para>{LNKWORD1}{FUNCARG} |
<St_Para>{LNKWORD2} { <St_Para>{LNKWORD2} {
...@@ -794,7 +797,7 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]* ...@@ -794,7 +797,7 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]*
g_secType = SectionInfo::Paragraph; g_secType = SectionInfo::Paragraph;
BEGIN(St_SecLabel2); BEGIN(St_SecLabel2);
} }
<St_Sections>{CMD}"verbatim"{BLANK}+ { <St_Sections>{CMD}"verbatim"/[^a-z_A-Z0-9] {
g_endMarker="endverbatim"; g_endMarker="endverbatim";
BEGIN(St_SecSkip); BEGIN(St_SecSkip);
} }
......
...@@ -6586,7 +6586,7 @@ static void generateExampleDocs() ...@@ -6586,7 +6586,7 @@ static void generateExampleDocs()
{ {
msg("Generating docs for example %s...\n",pd->name().data()); msg("Generating docs for example %s...\n",pd->name().data());
QCString n=pd->getOutputFileBase(); QCString n=pd->getOutputFileBase();
startFile(*outputList,n,n,"Example Documentation"); startFile(*outputList,n,n,pd->name());
startTitle(*outputList,n); startTitle(*outputList,n);
outputList->docify(pd->name()); outputList->docify(pd->name());
endTitle(*outputList,n,0); endTitle(*outputList,n,0);
...@@ -6849,7 +6849,8 @@ static void generateConfigFile(const char *configFile,bool shortList, ...@@ -6849,7 +6849,8 @@ static void generateConfigFile(const char *configFile,bool shortList,
bool writeToStdout=(configFile[0]=='-' && configFile[1]=='\0'); bool writeToStdout=(configFile[0]=='-' && configFile[1]=='\0');
if (fileOpened) if (fileOpened)
{ {
Config::instance()->writeTemplate(&f,shortList,updateOnly); QTextStream t(&f);
Config::instance()->writeTemplate(t,shortList,updateOnly);
if (!writeToStdout) if (!writeToStdout)
{ {
if (!updateOnly) if (!updateOnly)
......
...@@ -211,10 +211,10 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -211,10 +211,10 @@ void FileDef::writeDocumentation(OutputList &ol)
//printf("WriteDocumentation diskname=%s\n",diskname.data()); //printf("WriteDocumentation diskname=%s\n",diskname.data());
QCString pageTitle=name()+" File Reference"; QCString pageTitle=theTranslator->trFileReference(docname);
startFile(ol,getOutputFileBase(),name(),pageTitle); startFile(ol,getOutputFileBase(),name(),pageTitle);
startTitle(ol,getOutputFileBase()); startTitle(ol,getOutputFileBase());
ol.parseText(theTranslator->trFileReference(docname)); ol.parseText(pageTitle);
addGroupListToTitle(ol,this); addGroupListToTitle(ol,this);
endTitle(ol,getOutputFileBase(),docName()); endTitle(ol,getOutputFileBase(),docName());
//ol.newParagraph(); //ol.newParagraph();
...@@ -490,7 +490,7 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -490,7 +490,7 @@ void FileDef::writeDocumentation(OutputList &ol)
void FileDef::writeSource(OutputList &ol) void FileDef::writeSource(OutputList &ol)
{ {
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
startFile(ol,getSourceFileBase(),0,docname+" Source File"); startFile(ol,getSourceFileBase(),0,theTranslator->trSourceFile(docname));
startTitle(ol,0); startTitle(ol,0);
ol.parseText(docname); ol.parseText(docname);
endTitle(ol,0,0); endTitle(ol,0,0);
......
...@@ -125,7 +125,7 @@ static const char *defaultStyleSheet = ...@@ -125,7 +125,7 @@ static const char *defaultStyleSheet =
" font-weight: bold;\n" " font-weight: bold;\n"
" font-family: Geneva, Arial, Helvetica, sans-serif;\n" " font-family: Geneva, Arial, Helvetica, sans-serif;\n"
"}\n" "}\n"
"DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }\n" "DIV.groupText { margin-left: 16px; font-style: italic; font-size: 14px }\n"
"BODY {\n" "BODY {\n"
" background: white;\n" " background: white;\n"
" color: black;\n" " color: black;\n"
...@@ -179,10 +179,10 @@ static const char *defaultStyleSheet = ...@@ -179,10 +179,10 @@ static const char *defaultStyleSheet =
" padding: 8px 10px;\n" " padding: 8px 10px;\n"
"}\n" "}\n"
".mdescLeft {\n" ".mdescLeft {\n"
" font-size: smaller;\n" " padding: 0px 8px 4px 8px;\n"
" font-size: 14px;\n"
" font-style: italic;\n" " font-style: italic;\n"
" background-color: #FAFAFA;\n" " background-color: #FAFAFA;\n"
" padding-left: 8px;\n"
" border-top: 1px none #E0E0E0;\n" " border-top: 1px none #E0E0E0;\n"
" border-right: 1px none #E0E0E0;\n" " border-right: 1px none #E0E0E0;\n"
" border-bottom: 1px none #E0E0E0;\n" " border-bottom: 1px none #E0E0E0;\n"
...@@ -190,17 +190,15 @@ static const char *defaultStyleSheet = ...@@ -190,17 +190,15 @@ static const char *defaultStyleSheet =
" margin: 0px;\n" " margin: 0px;\n"
"}\n" "}\n"
".mdescRight {\n" ".mdescRight {\n"
" font-size: smaller;\n" " padding: 0px 8px 4px 8px;\n"
" font-size: 14px;\n"
" font-style: italic;\n" " font-style: italic;\n"
" background-color: #FAFAFA;\n" " background-color: #FAFAFA;\n"
" padding-left: 4px;\n"
" border-top: 1px none #E0E0E0;\n" " border-top: 1px none #E0E0E0;\n"
" border-right: 1px none #E0E0E0;\n" " border-right: 1px none #E0E0E0;\n"
" border-bottom: 1px none #E0E0E0;\n" " border-bottom: 1px none #E0E0E0;\n"
" border-left: 1px none #E0E0E0;\n" " border-left: 1px none #E0E0E0;\n"
" margin: 0px;\n" " margin: 0px;\n"
" padding-bottom: 0px;\n"
" padding-right: 8px;\n"
"}\n" "}\n"
".memItemLeft {\n" ".memItemLeft {\n"
" padding: 1px 0px 0px 8px;\n" " padding: 1px 0px 0px 8px;\n"
...@@ -222,7 +220,7 @@ static const char *defaultStyleSheet = ...@@ -222,7 +220,7 @@ static const char *defaultStyleSheet =
" font-size: 12px;\n" " font-size: 12px;\n"
"}\n" "}\n"
".memItemRight {\n" ".memItemRight {\n"
" padding: 1px 0px 0px 8px;\n" " padding: 1px 8px 0px 8px;\n"
" margin: 4px;\n" " margin: 4px;\n"
" border-top-width: 1px;\n" " border-top-width: 1px;\n"
" border-right-width: 1px;\n" " border-right-width: 1px;\n"
...@@ -399,7 +397,7 @@ void HtmlGenerator::startFile(const char *name,const char *, ...@@ -399,7 +397,7 @@ void HtmlGenerator::startFile(const char *name,const char *,
} }
else else
{ {
t << substituteKeywords(g_header,convertToHtml(lastTitle),relPath); t << substituteKeywords(g_header,convertToHtml(dispTitle),relPath);
} }
t << "<!-- " << theTranslator->trGeneratedBy() << " Doxygen " t << "<!-- " << theTranslator->trGeneratedBy() << " Doxygen "
<< versionString << " -->" << endl; << versionString << " -->" << endl;
...@@ -906,11 +904,11 @@ void HtmlGenerator::endMemberDescription() ...@@ -906,11 +904,11 @@ void HtmlGenerator::endMemberDescription()
DBG_HTML(t << "<!-- endMemberDescription -->" << endl) DBG_HTML(t << "<!-- endMemberDescription -->" << endl)
if (Config_getBool("HTML_ALIGN_MEMBERS")) if (Config_getBool("HTML_ALIGN_MEMBERS"))
{ {
t << "<br><br></td></tr>" << endl; t << "<br></td></tr>" << endl;
} }
else else
{ {
t << "<br><br></dl>"; t << "<br></dl>";
} }
} }
...@@ -1498,7 +1496,7 @@ void HtmlGenerator::writeSearchPage() ...@@ -1498,7 +1496,7 @@ void HtmlGenerator::writeSearchPage()
#endif #endif
if (g_header.isEmpty()) if (g_header.isEmpty())
{ {
writeDefaultHeaderFile(t,"Search",0,FALSE); writeDefaultHeaderFile(t,theTranslator->trSearch().data(),0,FALSE);
} }
else else
{ {
......
This diff is collapsed.
...@@ -264,18 +264,19 @@ void NamespaceDef::writeDetailedDocumentation(OutputList &ol) ...@@ -264,18 +264,19 @@ void NamespaceDef::writeDetailedDocumentation(OutputList &ol)
void NamespaceDef::writeDocumentation(OutputList &ol) void NamespaceDef::writeDocumentation(OutputList &ol)
{ {
QCString pageTitle=displayName()+" Namespace Reference"; QCString pageTitle;
startFile(ol,getOutputFileBase(),name(),pageTitle);
startTitle(ol,getOutputFileBase());
//ol.docify(pageTitle);
if (Config_getBool("OPTIMIZE_OUTPUT_JAVA")) if (Config_getBool("OPTIMIZE_OUTPUT_JAVA"))
{ {
ol.parseText(theTranslator->trPackage(displayName())); pageTitle = theTranslator->trPackage(displayName());
} }
else else
{ {
ol.parseText(theTranslator->trNamespaceReference(displayName())); pageTitle = theTranslator->trNamespaceReference(displayName());
} }
startFile(ol,getOutputFileBase(),name(),pageTitle);
startTitle(ol,getOutputFileBase());
//ol.docify(pageTitle);
//ol.parseText(pageTitle);
addGroupListToTitle(ol,this); addGroupListToTitle(ol,this);
endTitle(ol,getOutputFileBase(),displayName()); endTitle(ol,getOutputFileBase(),displayName());
......
...@@ -1485,21 +1485,31 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -1485,21 +1485,31 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
BEGIN(Using); BEGIN(Using);
} }
<Using>"namespace"{BN}+ { lineCount(); BEGIN(UsingDirective); } <Using>"namespace"{BN}+ { lineCount(); BEGIN(UsingDirective); }
<Using>{ID}{BN}*"::"{BN}*{ID}({BN}*"::"{BN}*{ID})* { <Using>{ID}{BN}*({BN}*("::"|"."){BN}*{ID})* {
lineCount(); lineCount();
current->name=yytext; current->name=yytext;
current->fileName = yyFileName; current->fileName = yyFileName;
current->section=Entry::USINGDECL_SEC; current->section=Entry::USINGDECL_SEC;
//printf("Found using declaration %s\n",yytext);
current_root->addSubEntry(current); current_root->addSubEntry(current);
current = new Entry ; current = new Entry ;
if (insideCS) /* Hack: in C# a using declaration and
directive have the same syntax, so we
also add it as a using directive here
*/
{
current->name=yytext;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->section=Entry::USINGDIR_SEC;
current_root->addSubEntry(current);
current = new Entry ;
}
initEntry(); initEntry();
BEGIN(Using); BEGIN(Using);
} }
<UsingDirective>{SCOPENAME} { current->name=yytext; <UsingDirective>{SCOPENAME} { current->name=yytext;
current->fileName = yyFileName; current->fileName = yyFileName;
current->section=Entry::USINGDIR_SEC; current->section=Entry::USINGDIR_SEC;
//printf("Found using directive %s\n",yytext);
current_root->addSubEntry(current); current_root->addSubEntry(current);
current = new Entry ; current = new Entry ;
initEntry(); initEntry();
...@@ -3616,6 +3626,39 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -3616,6 +3626,39 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
} }
BEGIN( FindMembers ); BEGIN( FindMembers );
} }
<Bases,ClassVar>"///"/[^/] {
if (!insideObjC)
{
REJECT;
}
else
{
lineCount();
current->program+=yytext;
current->fileName = yyFileName ;
current->startLine = yyLineNr ;
curlyCount=0;
BEGIN( ReadBodyIntf );
}
}
<Bases,ClassVar>("//"{B}*)?"/**"/[^/*] |
<Bases,ClassVar>("//"{B}*)?"/*!" |
<Bases,ClassVar>"//!" |
<Bases,ClassVar>[\-+]{BN}+ {
if (!insideObjC)
{
REJECT;
}
else
{
lineCount();
current->program+=yytext;
current->fileName = yyFileName ;
current->startLine = yyLineNr ;
curlyCount=0;
BEGIN( ReadBodyIntf );
}
}
<CompoundName,ClassVar>{B}*"{"{B}* { <CompoundName,ClassVar>{B}*"{"{B}* {
current->fileName = yyFileName ; current->fileName = yyFileName ;
current->startLine = yyLineNr ; current->startLine = yyLineNr ;
...@@ -3666,7 +3709,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -3666,7 +3709,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
else else
{ {
yyLineNr++; yyLineNr++;
unput('{'); //unput('{');
} }
} }
<ClassVar,Bases>"@end" { // empty ObjC interface <ClassVar,Bases>"@end" { // empty ObjC interface
......
...@@ -416,6 +416,12 @@ class Translator ...@@ -416,6 +416,12 @@ class Translator
virtual QCString trSearchResults(int numDocuments) = 0; virtual QCString trSearchResults(int numDocuments) = 0;
virtual QCString trSearchMatches() = 0; virtual QCString trSearchMatches() = 0;
//////////////////////////////////////////////////////////////////////////
// new since 1.3.8
//////////////////////////////////////////////////////////////////////////
virtual QCString trSourceFile(QCString& filename) = 0;
}; };
#endif #endif
...@@ -40,7 +40,17 @@ class TranslatorAdapterBase : public Translator ...@@ -40,7 +40,17 @@ class TranslatorAdapterBase : public Translator
}; };
class TranslatorAdapter_1_3_3 : public TranslatorAdapterBase class TranslatorAdapter_1_3_8 : public TranslatorAdapterBase
{
public:
virtual QCString updateNeededMessage()
{ return createUpdateNeededMessage(idLanguage(),"release 1.3.8"); }
virtual QCString trSourceFile(QCString& filename)
{ return english.trSourceFile(filename); }
};
class TranslatorAdapter_1_3_3 : public TranslatorAdapter_1_3_8
{ {
public: public:
virtual QCString updateNeededMessage() virtual QCString updateNeededMessage()
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
#ifndef TRANSLATOR_BR_H #ifndef TRANSLATOR_BR_H
#define TRANSLATOR_BR_H #define TRANSLATOR_BR_H
class TranslatorBrazilian: public Translator class TranslatorBrazilian: public TranslatorAdapter_1_3_8
{ {
public: public:
......
...@@ -148,7 +148,7 @@ ...@@ -148,7 +148,7 @@
// Windows version. The version which does not call the function is // Windows version. The version which does not call the function is
// probably slightly faster. // probably slightly faster.
class TranslatorCzech : public Translator class TranslatorCzech : public TranslatorAdapter_1_3_8
{ {
private: private:
/*! The decode() inline assumes the source written in the /*! The decode() inline assumes the source written in the
......
...@@ -90,7 +90,7 @@ ...@@ -90,7 +90,7 @@
#ifndef TRANSLATOR_DE_H #ifndef TRANSLATOR_DE_H
#define TRANSLATOR_DE_H #define TRANSLATOR_DE_H
class TranslatorGerman : public Translator class TranslatorGerman : public TranslatorAdapter_1_3_8
{ {
public: public:
......
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
#ifndef TRANSLATOR_DK_H #ifndef TRANSLATOR_DK_H
#define TRANSLATOR_DK_H #define TRANSLATOR_DK_H
class TranslatorDanish : public Translator class TranslatorDanish : public TranslatorAdapter_1_3_8
{ {
public: public:
......
...@@ -1544,6 +1544,17 @@ class TranslatorEnglish : public Translator ...@@ -1544,6 +1544,17 @@ class TranslatorEnglish : public Translator
return "Matches:"; return "Matches:";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.3.8
//////////////////////////////////////////////////////////////////////////
/*! This is used in HTML as the title of page with source code for file filename
*/
virtual QCString trSourceFile(QCString& filename)
{
return filename + " Source File";
}
}; };
#endif #endif
...@@ -85,7 +85,7 @@ ...@@ -85,7 +85,7 @@
// Translator class (by the local maintainer) when the localized // Translator class (by the local maintainer) when the localized
// translator is made up-to-date again. // translator is made up-to-date again.
class TranslatorFrench : public Translator class TranslatorFrench : public TranslatorAdapter_1_3_8
{ {
public: public:
......
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
#ifndef TRANSLATOR_HR_H #ifndef TRANSLATOR_HR_H
#define TRANSLATOR_HR_H #define TRANSLATOR_HR_H
class TranslatorCroatian : public Translator class TranslatorCroatian : public TranslatorAdapter_1_3_8
{ {
private: private:
/*! to avoid macro redefinition from translator_cz.h */ /*! to avoid macro redefinition from translator_cz.h */
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
#include "translator.h" #include "translator.h"
#include "../qtools/qdatetime.h" #include "../qtools/qdatetime.h"
class TranslatorHungarian : public Translator class TranslatorHungarian : public TranslatorAdapter_1_3_8
{ {
private: private:
const char * zed(char c) const char * zed(char c)
......
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
#ifndef TRANSLATOR_IT_H #ifndef TRANSLATOR_IT_H
#define TRANSLATOR_IT_H #define TRANSLATOR_IT_H
class TranslatorItalian : public Translator class TranslatorItalian : public TranslatorAdapter_1_3_8
{ {
public: public:
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#ifndef TRANSLATOR_KR_H #ifndef TRANSLATOR_KR_H
#define TRANSLATOR_KR_H #define TRANSLATOR_KR_H
class TranslatorKorean : public Translator class TranslatorKorean : public TranslatorAdapter_1_3_8
{ {
public: public:
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
#define TRANSLATOR_LT_H #define TRANSLATOR_LT_H
class TranslatorLithuanian : public Translator class TranslatorLithuanian : public TranslatorAdapter_1_3_8
{ {
public: public:
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
#ifndef TRANSLATOR_NL_H #ifndef TRANSLATOR_NL_H
#define TRANSLATOR_NL_H #define TRANSLATOR_NL_H
class TranslatorDutch : public Translator class TranslatorDutch : public TranslatorAdapter_1_3_8
{ {
public: public:
QCString idLanguage() QCString idLanguage()
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
* *
* Nickolay Semyonov * Nickolay Semyonov
* Andrey V. Stolyarov released Feb 14, 2001 * Andrey V. Stolyarov released Feb 14, 2001
* Alexandr V. Chelpanov <cav@cryptopro.ru> released Sep 16, 2003 * Alexandr V. Chelpanov <cav@cryptopro.ru> released Jun 16, 2004
* *
* list documentation . * list documentation .
* *
...@@ -42,7 +42,8 @@ ...@@ -42,7 +42,8 @@
* *
* ?? . * ?? .
* *
* : Vitaly A. Repin <vitaly@radio.hop.stu.neva.ru> * : Vitaly A. Repin <vitaly@radio.hop.stu.neva.ru>,
* <bbman@mail.ru>
*/ */
#ifndef TRANSLATOR_RU_H #ifndef TRANSLATOR_RU_H
...@@ -236,7 +237,7 @@ class TranslatorRussian : public Translator ...@@ -236,7 +237,7 @@ class TranslatorRussian : public Translator
/*??*/ /*??*/
virtual QCString trFileMembers() virtual QCString trFileMembers()
{ {
return decode( " " ); return decode( " " );
} }
/*! This is put above each page as a link to all related pages. */ /*! This is put above each page as a link to all related pages. */
...@@ -638,7 +639,7 @@ class TranslatorRussian : public Translator ...@@ -638,7 +639,7 @@ class TranslatorRussian : public Translator
* related classes * related classes
*/ */
virtual QCString trRelatedFunctionDocumentation() virtual QCString trRelatedFunctionDocumentation()
{ return decode(" " { return decode(" , "
" "); } " "); }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -779,14 +780,14 @@ class TranslatorRussian : public Translator ...@@ -779,14 +780,14 @@ class TranslatorRussian : public Translator
/*! This is put above each page as a link to all members of namespaces. */ /*! This is put above each page as a link to all members of namespaces. */
virtual QCString trNamespaceMembers() virtual QCString trNamespaceMembers()
{ return decode(" "); } { return decode(" "); }
/*! This is an introduction to the page with all namespace members */ /*! This is an introduction to the page with all namespace members */
virtual QCString trNamespaceMemberDescription(bool extractAll) virtual QCString trNamespaceMemberDescription(bool extractAll)
{ {
QCString result=" "; QCString result=" ";
if (!extractAll) result+=" "; if (!extractAll) result+=" ";
result+=" ."; result+=" .";
return decode(result); return decode(result);
} }
...@@ -794,7 +795,7 @@ class TranslatorRussian : public Translator ...@@ -794,7 +795,7 @@ class TranslatorRussian : public Translator
* index of all namespaces. * index of all namespaces.
*/ */
virtual QCString trNamespaceIndex() virtual QCString trNamespaceIndex()
{ return decode(" "); } { return decode(" "); }
/*! This is used in LaTeX as the title of the chapter containing /*! This is used in LaTeX as the title of the chapter containing
* the documentation of all namespaces. * the documentation of all namespaces.
...@@ -1061,7 +1062,7 @@ class TranslatorRussian : public Translator ...@@ -1061,7 +1062,7 @@ class TranslatorRussian : public Translator
} }
virtual QCString trInclByDepGraph() virtual QCString trInclByDepGraph()
{ {
return decode(" , :"); return decode(" , :");
} }
virtual QCString trSince() virtual QCString trSince()
/*??*/ /*??*/
...@@ -1128,16 +1129,16 @@ class TranslatorRussian : public Translator ...@@ -1128,16 +1129,16 @@ class TranslatorRussian : public Translator
"</ul>\n" "</ul>\n"
" :\n" " :\n"
"<ul>\n" "<ul>\n"
"<li> " "<li>- "
" .\n" " .\n"
"<li> .\n" "<li>- .\n"
"<li> .\n" "<li>- .\n"
"<li> , " "<li> , "
" ." " ."
" , " " , "
" . \n" " . \n"
"<li> " "<li> "
", . " ", . "
" .\n" " .\n"
"</ul>\n"); "</ul>\n");
} }
...@@ -1545,13 +1546,12 @@ class TranslatorRussian : public Translator ...@@ -1545,13 +1546,12 @@ class TranslatorRussian : public Translator
} }
else if( numDocuments == 1 ) else if( numDocuments == 1 )
{ {
return decode( " <b>$num</b> " ) + as_documents( numDocuments ) return decode( " 1 ." );
+ ".";
} }
else else
{ {
return decode( " <b>$num</b> " ) + as_documents( numDocuments ) return decode( "() <b>$num</b> (). "
+ decode( ". ." ); " ." );
} }
} }
/*! This string is put before the list of matched words, for each search /*! This string is put before the list of matched words, for each search
...@@ -1562,12 +1562,15 @@ class TranslatorRussian : public Translator ...@@ -1562,12 +1562,15 @@ class TranslatorRussian : public Translator
return decode( ":" ); return decode( ":" );
} }
private: //////////////////////////////////////////////////////////////////////////
QCString as_documents( int num ) // new since 1.3.8
//////////////////////////////////////////////////////////////////////////
/*! This is used in HTML as the title of page with source code for file filename
*/
virtual QCString trSourceFile(QCString& filename)
{ {
if( num % 10 == 1 ) return ""; return " " + filename;
if( (num % 10) >= 2 && (num % 10) <= 4 ) return decode( "" );
return decode( "" );
} }
}; };
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
// translation by Dejan D. M. Milosavljevic <dmilos@email.com>;<dmilosx@ptt.yu> // translation by Dejan D. M. Milosavljevic <dmilos@email.com>;<dmilosx@ptt.yu>
// // 10x 2 Ivana Miletic for gramatical consutation. // // 10x 2 Ivana Miletic for gramatical consutation.
class TranslatorSerbian : public Translator class TranslatorSerbian : public TranslatorAdapter_1_3_8
{ {
private: private:
QCString decode(const QCString& sInput) QCString decode(const QCString& sInput)
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
// Translator class (by the local maintainer) when the localized // Translator class (by the local maintainer) when the localized
// translator is made up-to-date again. // translator is made up-to-date again.
class TranslatorChinesetraditional : public Translator class TranslatorChinesetraditional : public TranslatorAdapter_1_3_8
{ {
public: public:
......
...@@ -810,7 +810,8 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -810,7 +810,8 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
} }
static void generateXMLSection(Definition *d,QTextStream &ti,QTextStream &t, static void generateXMLSection(Definition *d,QTextStream &ti,QTextStream &t,
MemberList *ml,const char *kind,const char *header=0) MemberList *ml,const char *kind,const char *header=0,
const char *documentation=0)
{ {
if (ml->count()==0) return; // empty list if (ml->count()==0) return; // empty list
...@@ -819,6 +820,12 @@ static void generateXMLSection(Definition *d,QTextStream &ti,QTextStream &t, ...@@ -819,6 +820,12 @@ static void generateXMLSection(Definition *d,QTextStream &ti,QTextStream &t,
{ {
t << " <header>" << convertToXML(header) << "</header>" << endl; t << " <header>" << convertToXML(header) << "</header>" << endl;
} }
if (documentation)
{
t << " <description>";
writeXMLDocBlock(t,d->docFile(),d->docLine(),d,0,documentation);
t << "</description>" << endl;
}
MemberListIterator mli(*ml); MemberListIterator mli(*ml);
MemberDef *md; MemberDef *md;
for (mli.toFirst();(md=mli.current());++mli) for (mli.toFirst();(md=mli.current());++mli)
...@@ -928,9 +935,12 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) ...@@ -928,9 +935,12 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
BaseClassDef *bcd; BaseClassDef *bcd;
for (bcli.toFirst();(bcd=bcli.current());++bcli) for (bcli.toFirst();(bcd=bcli.current());++bcli)
{ {
t << " <basecompoundref refid=\"" t << " <basecompoundref ";
<< bcd->classDef->getOutputFileBase() if (bcd->classDef->isLinkable())
<< "\" prot=\""; {
t << "refid=\"" << bcd->classDef->getOutputFileBase() << "\" ";
}
t << "prot=\"";
switch (bcd->prot) switch (bcd->prot)
{ {
case Public: t << "public"; break; case Public: t << "public"; break;
...@@ -1013,7 +1023,8 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) ...@@ -1013,7 +1023,8 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
generateXMLSection(cd,ti,t,mg->members(),"user-defined",mg->header()); generateXMLSection(cd,ti,t,mg->members(),"user-defined",mg->header(),
mg->documentation());
} }
generateXMLSection(cd,ti,t,&cd->pubTypes,"public-type"); generateXMLSection(cd,ti,t,&cd->pubTypes,"public-type");
...@@ -1145,7 +1156,8 @@ static void generateXMLForNamespace(NamespaceDef *nd,QTextStream &ti) ...@@ -1145,7 +1156,8 @@ static void generateXMLForNamespace(NamespaceDef *nd,QTextStream &ti)
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
generateXMLSection(nd,ti,t,mg->members(),"user-defined",mg->header()); generateXMLSection(nd,ti,t,mg->members(),"user-defined",mg->header(),
mg->documentation());
} }
generateXMLSection(nd,ti,t,&nd->decDefineMembers,"define"); generateXMLSection(nd,ti,t,&nd->decDefineMembers,"define");
...@@ -1280,7 +1292,8 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti) ...@@ -1280,7 +1292,8 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti)
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
generateXMLSection(fd,ti,t,mg->members(),"user-defined",mg->header()); generateXMLSection(fd,ti,t,mg->members(),"user-defined",mg->header(),
mg->documentation());
} }
generateXMLSection(fd,ti,t,&fd->decDefineMembers,"define"); generateXMLSection(fd,ti,t,&fd->decDefineMembers,"define");
...@@ -1411,7 +1424,8 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti) ...@@ -1411,7 +1424,8 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
generateXMLSection(gd,ti,t,mg->members(),"user-defined",mg->header()); generateXMLSection(gd,ti,t,mg->members(),"user-defined",mg->header(),
mg->documentation());
} }
generateXMLSection(gd,ti,t,&gd->decDefineMembers,"define"); generateXMLSection(gd,ti,t,&gd->decDefineMembers,"define");
...@@ -1580,12 +1594,23 @@ void generateXML() ...@@ -1580,12 +1594,23 @@ void generateXML()
t << "xsi:noNamespaceSchemaLocation=\"index.xsd\" "; t << "xsi:noNamespaceSchemaLocation=\"index.xsd\" ";
t << "version=\"" << versionString << "\">" << endl; t << "version=\"" << versionString << "\">" << endl;
ClassSDict::Iterator cli(Doxygen::classSDict);
ClassDef *cd;
for (cli.toFirst();(cd=cli.current());++cli)
{ {
msg("Generating XML output for class %s\n",cd->name().data()); ClassSDict::Iterator cli(Doxygen::classSDict);
generateXMLForClass(cd,t); ClassDef *cd;
for (cli.toFirst();(cd=cli.current());++cli)
{
msg("Generating XML output for class %s\n",cd->name().data());
generateXMLForClass(cd,t);
}
}
{
ClassSDict::Iterator cli(Doxygen::hiddenClasses);
ClassDef *cd;
for (cli.toFirst();(cd=cli.current());++cli)
{
msg("Generating XML output for class %s\n",cd->name().data());
generateXMLForClass(cd,t);
}
} }
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict); NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
NamespaceDef *nd; NamespaceDef *nd;
......
...@@ -21,9 +21,9 @@ if ($target eq "msvc") ...@@ -21,9 +21,9 @@ if ($target eq "msvc")
# create config file # create config file
open(FILE,">makeconfig") || die "Cannot create file makeconfig!"; open(FILE,">makeconfig") || die "Cannot create file makeconfig!";
print FILE "DOXYGEN = $pwd\n"; print FILE "DOXYGEN = \"$pwd\"\n";
print FILE "TMAKEPATH = $pwd\\tmake\\lib\\win32-$target\n"; print FILE "TMAKEPATH = \"$pwd\\tmake\\lib\\win32-$target\"\n";
print FILE "TMAKE = $pwd\\tmake\\bin\\tmake\n"; print FILE "TMAKE = \"$pwd\\tmake\\bin\\tmake\"\n";
print FILE "MAKE = $make\n"; print FILE "MAKE = $make\n";
print FILE "PERL = perl\n"; print FILE "PERL = perl\n";
print FILE "RM = del /s /q\n"; print FILE "RM = del /s /q\n";
......
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