Commit deb9b8d4 authored by dimitri's avatar dimitri

Release-1.3.9

parent f08cd636
DOXYGEN Version 1.3.8-20040928 DOXYGEN Version 1.3.9
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 (28 September 2004) Dimitri van Heesch (05 October 2004)
DOXYGEN Version 1.3.8_20040928 DOXYGEN Version 1.3.9
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) (28 September 2004) Dimitri van Heesch (dimitri@stack.nl) (05 October 2004)
1.3.8-20040928 1.3.9
...@@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other ...@@ -23,7 +23,7 @@ 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.8-20040913), 30 languages Currently (version 1.3.9), 30 languages
are supported (sorted alphabetically): are supported (sorted alphabetically):
Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese
Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French, Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French,
...@@ -59,8 +59,8 @@ when the translator was updated. ...@@ -59,8 +59,8 @@ when the translator was updated.
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Brazilian Portuguese</td> <td>Brazilian Portuguese</td>
<td>Fabio "FJTC" Jun Takada Chino</td> <td>Fabio "FJTC" Jun Takada Chino</td>
<td>chino at icmc dot sc dot usp dot br</td> <td>jun-chino at uol dot com dot br</td>
<td>1.3.9</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Catalan</td> <td>Catalan</td>
...@@ -72,7 +72,7 @@ when the translator was updated. ...@@ -72,7 +72,7 @@ when the translator was updated.
<td>Chinese</td> <td>Chinese</td>
<td>Li Daobing<br>Wei Liu</td> <td>Li Daobing<br>Wei Liu</td>
<td>lidaobing at gmail dot com<br>liuwei at asiainfo dot com</td> <td>lidaobing at gmail dot com<br>liuwei at asiainfo dot com</td>
<td>1.3.9</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Chinese Traditional</td> <td>Chinese Traditional</td>
...@@ -84,7 +84,7 @@ when the translator was updated. ...@@ -84,7 +84,7 @@ when the translator was updated.
<td>Croatian</td> <td>Croatian</td>
<td>Boris Bralo</td> <td>Boris Bralo</td>
<td>boris.bralo at zg dot htnet dot hr</td> <td>boris.bralo at zg dot htnet dot hr</td>
<td>1.3.9</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Czech</td> <td>Czech</td>
...@@ -120,13 +120,13 @@ when the translator was updated. ...@@ -120,13 +120,13 @@ when the translator was updated.
<td>French</td> <td>French</td>
<td>Xavier Outhier</td> <td>Xavier Outhier</td>
<td>xouthier at yahoo dot fr</td> <td>xouthier at yahoo dot fr</td>
<td>1.3.8</td> <td>up-to-date</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 at users dot sf dot net</td> <td>jensseidel at users dot sf dot net</td>
<td>1.3.9</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Greek</td> <td>Greek</td>
...@@ -138,13 +138,13 @@ when the translator was updated. ...@@ -138,13 +138,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 lost at cyberspace<br>akiss at users dot sourceforge dot net</td> <td>foldvari lost at cyberspace<br>akiss at users dot sourceforge dot net</td>
<td>1.3.9</td> <td>up-to-date</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 at falappa dot net<br>aaf23 at cam dot ac dot uk</td> <td>alessandro at falappa dot net<br>aaf23 at cam dot ac dot uk</td>
<td>1.3.9</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Japanese</td> <td>Japanese</td>
...@@ -204,7 +204,7 @@ when the translator was updated. ...@@ -204,7 +204,7 @@ when the translator was updated.
<td>Russian</td> <td>Russian</td>
<td>Alexandr Chelpanov</td> <td>Alexandr Chelpanov</td>
<td>cav at cryptopro dot ru</td> <td>cav at cryptopro dot ru</td>
<td>1.3.9</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Serbian</td> <td>Serbian</td>
...@@ -234,7 +234,7 @@ when the translator was updated. ...@@ -234,7 +234,7 @@ when the translator was updated.
<td>Swedish</td> <td>Swedish</td>
<td>Mikael Hallin</td> <td>Mikael Hallin</td>
<td>mikaelhallin at yahoo dot se</td> <td>mikaelhallin at yahoo dot se</td>
<td>1.3.8</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Ukrainian</td> <td>Ukrainian</td>
...@@ -259,17 +259,17 @@ when the translator was updated. ...@@ -259,17 +259,17 @@ when the translator was updated.
\hline \hline
Afrikaans & Johan Prinsloo & {\tt\tiny johan@zippysnoek.com} & 1.3.9 \\ Afrikaans & Johan Prinsloo & {\tt\tiny johan@zippysnoek.com} & 1.3.9 \\
\hline \hline
Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny chino@icmc.sc.usp.br} & 1.3.9 \\ Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino@uol.com.br} & up-to-date \\
\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 & Li Daobing & {\tt\tiny lidaobing@gmail.com} & 1.3.9 \\ Chinese & Li Daobing & {\tt\tiny lidaobing@gmail.com} & up-to-date \\
~ & Wei Liu & {\tt\tiny liuwei@asiainfo.com} & ~ \\ ~ & Wei Liu & {\tt\tiny liuwei@asiainfo.com} & ~ \\
\hline \hline
Chinese Traditional & Daniel YC Lin & {\tt\tiny daniel@twpda.com} & 1.3.8 \\ 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.htnet.hr} & 1.3.9 \\ Croatian & Boris Bralo & {\tt\tiny boris.bralo@zg.htnet.hr} & up-to-date \\
\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} & up-to-date \\
\hline \hline
...@@ -281,16 +281,16 @@ when the translator was updated. ...@@ -281,16 +281,16 @@ when the translator was updated.
\hline \hline
Finnish & Olli Korhonen & {\tt\tiny olli.korhonen lost@cyberspace} & obsolete \\ Finnish & Olli Korhonen & {\tt\tiny olli.korhonen lost@cyberspace} & obsolete \\
\hline \hline
French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & 1.3.8 \\ French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & up-to-date \\
\hline \hline
German & Jens Seidel & {\tt\tiny jensseidel@users.sf.net} & 1.3.9 \\ German & Jens Seidel & {\tt\tiny jensseidel@users.sf.net} & up-to-date \\
\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 lost@cyberspace} & 1.3.9 \\ Hungarian & F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt\tiny foldvari lost@cyberspace} & up-to-date \\
~ & \'{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} & 1.3.9 \\ Italian & Alessandro Falappa & {\tt\tiny alessandro@falappa.net} & up-to-date \\
~ & 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.9 \\ Japanese & Ryunosuke Satoh & {\tt\tiny sun594@hotmail.com} & 1.3.9 \\
...@@ -316,7 +316,7 @@ when the translator was updated. ...@@ -316,7 +316,7 @@ when the translator was updated.
\hline \hline
Romanian & Alexandru Iosup & {\tt\tiny aiosup@yahoo.com} & 1.2.16 \\ Romanian & Alexandru Iosup & {\tt\tiny aiosup@yahoo.com} & 1.2.16 \\
\hline \hline
Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & 1.3.9 \\ Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & up-to-date \\
\hline \hline
Serbian & Dejan Milosavljevic & {\tt\tiny dmilos@email.com} & 1.3.8 \\ Serbian & Dejan Milosavljevic & {\tt\tiny dmilos@email.com} & 1.3.8 \\
\hline \hline
...@@ -326,7 +326,7 @@ when the translator was updated. ...@@ -326,7 +326,7 @@ when the translator was updated.
\hline \hline
Spanish & Francisco Oltra Thennet & {\tt\tiny foltra@puc.cl} & 1.3.8 \\ Spanish & Francisco Oltra Thennet & {\tt\tiny foltra@puc.cl} & 1.3.8 \\
\hline \hline
Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} & 1.3.8 \\ Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} & up-to-date \\
\hline \hline
Ukrainian & Olexij Tkatchenko & {\tt\tiny olexij.tkatchenko@parcs.de} & 1.2.11 \\ Ukrainian & Olexij Tkatchenko & {\tt\tiny olexij.tkatchenko@parcs.de} & 1.2.11 \\
\hline \hline
......
...@@ -13,7 +13,7 @@ TranslatorAfrikaans ...@@ -13,7 +13,7 @@ TranslatorAfrikaans
Johan Prinsloo: johan@zippysnoek.com Johan Prinsloo: johan@zippysnoek.com
TranslatorBrazilian TranslatorBrazilian
Fabio "FJTC" Jun Takada Chino: chino@icmc.sc.usp.br Fabio "FJTC" Jun Takada Chino: jun-chino@uol.com.br
TranslatorCatalan TranslatorCatalan
Albert Mora: amora@iua.upf.es Albert Mora: amora@iua.upf.es
......
...@@ -43,6 +43,7 @@ ...@@ -43,6 +43,7 @@
when the report is not restricted to selected languages when the report is not restricted to selected languages
explicitly via script arguments. explicitly via script arguments.
2004/07/26 - Better reporting of not-needed adapters. 2004/07/26 - Better reporting of not-needed adapters.
2004/10/04 - Reporting of not called translator methods added.
""" """
from __future__ import generators from __future__ import generators
...@@ -1357,6 +1358,83 @@ class TrManager: ...@@ -1357,6 +1358,83 @@ class TrManager:
self.lastModificationTime = tim self.lastModificationTime = tim
def __getNoTrSourceFilesLst(self):
"""Returns the list of sources to be checked.
All .cpp files and also .h files that do not declare and define
the translator methods are included in the list. The file names
are searched in doxygen directory recursively."""
lst = []
for path, dirs, files in os.walk(self.doxy_path):
# Files in doxygen/src should be processed first.
if path == self.doxy_path:
dirs.remove('src')
dirs.insert(0, 'src')
# Search for names with .cpp extension (case independent)
# and append them to the output list.
for fname in files:
name, ext = os.path.splitext(fname)
ext = ext.lower()
if ext == '.cpp' or (ext == '.h' and name.find('translator') == -1):
lst.append(os.path.join(path, fname))
return lst
def __removeUsedInFiles(self, fname, dic):
"""Removes items for method identifiers that are found in fname.
The method reads the content of the file as one string and searches
for all identifiers from dic. The identifiers that were found in
the file are removed from the dictionary.
Note: If more files is to be checked, the files where most items are
probably used should be checked first and the resulting reduced
dictionary should be used for checking the next files (speed up).
"""
lst_in = dic.keys() # identifiers to be searched for
# Read content of the file as one string.
assert os.path.isfile(fname)
f = file(fname)
cont = f.read()
f.close()
# Remove the items for identifiers that were found in the file.
while lst_in:
item = lst_in.pop(0)
if cont.find(item) != -1:
del dic[item]
def __checkForNotUsedTrMethods(self):
"""Returns the dictionary of not used translator methods.
The method can be called only after self.requiredMethodsDic has been
built. The stripped prototypes are the values, the method identifiers
are the keys.
"""
# Build the dictionary of the required method prototypes with
# method identifiers used as keys.
trdic = {}
for prototype in self.requiredMethodsDic.keys():
ri = prototype.split('(')[0]
identifier = ri.split()[1].strip()
trdic[identifier] = prototype
# Build the list of source files where translator method identifiers
# can be used.
files = self.__getNoTrSourceFilesLst()
# Loop through the files and reduce the dictionary of id -> proto.
for fname in files:
self.__removeUsedInFiles(fname, trdic)
# Return the dictionary of not used translator methods.
return trdic
def generateTranslatorReport(self): def generateTranslatorReport(self):
"""Generates the translator report.""" """Generates the translator report."""
...@@ -1478,6 +1556,27 @@ class TrManager: ...@@ -1478,6 +1556,27 @@ class TrManager:
f.write(' -- ' + obj.note) f.write(' -- ' + obj.note)
f.write('\n') f.write('\n')
# Check for not used translator methods and generate warning if found.
# The check is rather time consuming, so it is not done when report
# is restricted to explicitly given language identifiers.
if not self.script_argLst:
dic = self.__checkForNotUsedTrMethods()
if dic:
s = '''WARNING FOR DEVELOPERS: The following translator
methods are declared in the Translator class but their
identifiers do not appear in source files. The situation
should be checked. The .cpp files and .h files excluding
the 'translator*.h' files were simply searched for
occurence of the method identifiers:'''
f.write('\n' + '=' * 70 + '\n')
f.write(fill(s) + '\n\n')
keys = dic.keys()
keys.sort()
for key in keys:
f.write(' ' + dic[key] + '\n')
f.write('\n')
# Write the details for the translators. # Write the details for the translators.
f.write('\n' + '=' * 70) f.write('\n' + '=' * 70)
f.write('\nDetails for translators (classes sorted alphabetically):\n') f.write('\nDetails for translators (classes sorted alphabetically):\n')
...@@ -1494,8 +1593,6 @@ class TrManager: ...@@ -1494,8 +1593,6 @@ class TrManager:
f.close() f.close()
def __loadMaintainers(self): def __loadMaintainers(self):
"""Load and process the file with the maintainers. """Load and process the file with the maintainers.
...@@ -1547,6 +1644,7 @@ class TrManager: ...@@ -1547,6 +1644,7 @@ class TrManager:
self.__maintainersDic[classId].append(t) self.__maintainersDic[classId].append(t)
f.close() f.close()
def generateLanguageDoc(self): def generateLanguageDoc(self):
"""Checks the modtime of files and generates language.doc.""" """Checks the modtime of files and generates language.doc."""
self.__loadMaintainers() self.__loadMaintainers()
......
(1.3.8-20040913) (1.3.9)
Doxygen supports the following 30 languages (sorted alphabetically): Doxygen supports the following 30 languages (sorted alphabetically):
...@@ -8,7 +8,7 @@ German, Greek, Hungarian, Italian, Japanese (+En), Korean (+En), ...@@ -8,7 +8,7 @@ German, Greek, Hungarian, Italian, Japanese (+En), Korean (+En),
Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, Serbian, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, Serbian,
Slovak, Slovene, Spanish, Swedish, and Ukrainian. Slovak, Slovene, Spanish, Swedish, and Ukrainian.
Of them, 4 translators are up-to-date, 26 translators are based on Of them, 13 translators are up-to-date, 17 translators are based on
some adapter class, and 2 are English based. some adapter class, and 2 are English based.
---------------------------------------------------------------------- ----------------------------------------------------------------------
...@@ -17,10 +17,19 @@ alphabetically). This means that they derive from the Translator class ...@@ -17,10 +17,19 @@ alphabetically). This means that they derive from the Translator class
and they implement all 201 of the required methods. Anyway, there and they implement all 201 of the required methods. Anyway, there
still may be some details listed even for them: still may be some details listed even for them:
TranslatorBrazilian
TranslatorChinese
TranslatorCroatian
TranslatorCzech TranslatorCzech
TranslatorDutch TranslatorDutch
TranslatorEnglish TranslatorEnglish
TranslatorFrench
TranslatorGerman
TranslatorHungarian
TranslatorItalian
TranslatorPolish TranslatorPolish
TranslatorRussian
TranslatorSwedish
---------------------------------------------------------------------- ----------------------------------------------------------------------
The following translator classes need some maintenance (the most The following translator classes need some maintenance (the most
...@@ -28,23 +37,14 @@ obsolete at the end). The other info shows the estimation of Doxygen ...@@ -28,23 +37,14 @@ obsolete at the end). The other info shows the estimation of Doxygen
version when the class was last updated and number of methods that version when the class was last updated and number of methods that
must be implemented to become up-to-date: must be implemented to become up-to-date:
TranslatorRussian 1.3.9 6 methods to implement
TranslatorNorwegian 1.3.9 6 methods to implement TranslatorNorwegian 1.3.9 6 methods to implement
TranslatorJapanese 1.3.9 6 methods to implement TranslatorJapanese 1.3.9 6 methods to implement
TranslatorItalian 1.3.9 6 methods to implement
TranslatorHungarian 1.3.9 6 methods to implement
TranslatorGerman 1.3.9 6 methods to implement
TranslatorDanish 1.3.9 6 methods to implement TranslatorDanish 1.3.9 6 methods to implement
TranslatorCroatian 1.3.9 6 methods to implement
TranslatorChinese 1.3.9 6 methods to implement
TranslatorBrazilian 1.3.9 6 methods to implement
TranslatorAfrikaans 1.3.9 6 methods to implement TranslatorAfrikaans 1.3.9 6 methods to implement
TranslatorSwedish 1.3.8 7 methods to implement
TranslatorSpanish 1.3.8 7 methods to implement TranslatorSpanish 1.3.8 7 methods to implement
TranslatorSerbian 1.3.8 7 methods to implement TranslatorSerbian 1.3.8 7 methods to implement
TranslatorLithuanian 1.3.8 7 methods to implement TranslatorLithuanian 1.3.8 7 methods to implement
TranslatorKorean 1.3.8 7 methods to implement TranslatorKorean 1.3.8 7 methods to implement
TranslatorFrench 1.3.8 7 methods to implement
TranslatorChinesetraditional 1.3.8 7 methods to implement TranslatorChinesetraditional 1.3.8 7 methods to implement
TranslatorPortuguese 1.3.3 11 methods to implement TranslatorPortuguese 1.3.3 11 methods to implement
TranslatorSlovak 1.2.18 20 methods to implement TranslatorSlovak 1.2.18 20 methods to implement
...@@ -84,21 +84,6 @@ TranslatorAfrikaans (TranslatorAdapter_1_3_9) 6 methods to implement ...@@ -84,21 +84,6 @@ TranslatorAfrikaans (TranslatorAdapter_1_3_9) 6 methods to implement
virtual QCString trDir(bool first_capital, bool singular) virtual QCString trDir(bool first_capital, bool singular)
TranslatorBrazilian (TranslatorAdapter_1_3_9) 6 methods to implement
-------------------
Implements 195 of the required methods.
Missing methods (should be implemented):
virtual QCString trDirIndex()
virtual QCString trDirDocumentation()
virtual QCString trDirectories()
virtual QCString trDirDescription()
virtual QCString trDirReference(const char * dirName)
virtual QCString trDir(bool first_capital, bool singular)
TranslatorCatalan (TranslatorAdapter_1_2_17) 21 methods to implement TranslatorCatalan (TranslatorAdapter_1_2_17) 21 methods to implement
----------------- -----------------
...@@ -129,21 +114,6 @@ TranslatorCatalan (TranslatorAdapter_1_2_17) 21 methods to implement ...@@ -129,21 +114,6 @@ TranslatorCatalan (TranslatorAdapter_1_2_17) 21 methods to implement
virtual QCString trAll() virtual QCString trAll()
TranslatorChinese (TranslatorAdapter_1_3_9) 6 methods to implement
-----------------
Implements 195 of the required methods.
Missing methods (should be implemented):
virtual QCString trDirIndex()
virtual QCString trDirDocumentation()
virtual QCString trDirectories()
virtual QCString trDirDescription()
virtual QCString trDirReference(const char * dirName)
virtual QCString trDir(bool first_capital, bool singular)
TranslatorChinesetraditional (TranslatorAdapter_1_3_8) 7 methods to implement TranslatorChinesetraditional (TranslatorAdapter_1_3_8) 7 methods to implement
---------------------------- ----------------------------
...@@ -160,21 +130,6 @@ TranslatorChinesetraditional (TranslatorAdapter_1_3_8) 7 methods to implement ...@@ -160,21 +130,6 @@ TranslatorChinesetraditional (TranslatorAdapter_1_3_8) 7 methods to implement
virtual QCString trDir(bool first_capital, bool singular) virtual QCString trDir(bool first_capital, bool singular)
TranslatorCroatian (TranslatorAdapter_1_3_9) 6 methods to implement
------------------
Implements 195 of the required methods.
Missing methods (should be implemented):
virtual QCString trDirIndex()
virtual QCString trDirDocumentation()
virtual QCString trDirectories()
virtual QCString trDirDescription()
virtual QCString trDirReference(const char * dirName)
virtual QCString trDir(bool first_capital, bool singular)
TranslatorDanish (TranslatorAdapter_1_3_9) 6 methods to implement TranslatorDanish (TranslatorAdapter_1_3_9) 6 methods to implement
---------------- ----------------
...@@ -298,44 +253,9 @@ TranslatorFinnish (TranslatorEnglish) 98 methods to implement ...@@ -298,44 +253,9 @@ TranslatorFinnish (TranslatorEnglish) 98 methods to implement
Obsolete methods (should be removed, never used): Obsolete methods (should be removed, never used):
QCString trGeneratedFrom(const char * s, bool single)
QCString trVerbatimText(const char * f)
QCString trFiles() QCString trFiles()
virtual QCString updateNeededMessage() virtual QCString updateNeededMessage()
QCString trAuthors() QCString trAuthors()
QCString latexBabelPackage()
QCString trAuthor()
TranslatorFrench (TranslatorAdapter_1_3_8) 7 methods to implement
----------------
Implements 194 of the required methods.
Missing methods (should be implemented):
virtual QCString trDirIndex()
virtual QCString trDirDocumentation()
virtual QCString trDirectories()
virtual QCString trDirDescription()
virtual QCString trSourceFile(QCString & filename)
virtual QCString trDirReference(const char * dirName)
virtual QCString trDir(bool first_capital, bool singular)
TranslatorGerman (TranslatorAdapter_1_3_9) 6 methods to implement
----------------
Implements 195 of the required methods.
Missing methods (should be implemented):
virtual QCString trDirIndex()
virtual QCString trDirDocumentation()
virtual QCString trDirectories()
virtual QCString trDirDescription()
virtual QCString trDirReference(const char * dirName)
virtual QCString trDir(bool first_capital, bool singular)
TranslatorGreek (TranslatorAdapter_1_2_11) 25 methods to implement TranslatorGreek (TranslatorAdapter_1_2_11) 25 methods to implement
...@@ -371,40 +291,6 @@ TranslatorGreek (TranslatorAdapter_1_2_11) 25 methods to implement ...@@ -371,40 +291,6 @@ TranslatorGreek (TranslatorAdapter_1_2_11) 25 methods to implement
virtual QCString trAll() virtual QCString trAll()
virtual QCString trRTFTableOfContents() virtual QCString trRTFTableOfContents()
Obsolete methods (should be removed, never used):
virtual QCString latexBabelPackage()
TranslatorHungarian (TranslatorAdapter_1_3_9) 6 methods to implement
-------------------
Implements 195 of the required methods.
Missing methods (should be implemented):
virtual QCString trDirIndex()
virtual QCString trDirDocumentation()
virtual QCString trDirectories()
virtual QCString trDirDescription()
virtual QCString trDirReference(const char * dirName)
virtual QCString trDir(bool first_capital, bool singular)
TranslatorItalian (TranslatorAdapter_1_3_9) 6 methods to implement
-----------------
Implements 195 of the required methods.
Missing methods (should be implemented):
virtual QCString trDirIndex()
virtual QCString trDirDocumentation()
virtual QCString trDirectories()
virtual QCString trDirDescription()
virtual QCString trDirReference(const char * dirName)
virtual QCString trDir(bool first_capital, bool singular)
TranslatorJapanese (TranslatorAdapter_1_3_9) 6 methods to implement TranslatorJapanese (TranslatorAdapter_1_3_9) 6 methods to implement
------------------ ------------------
...@@ -547,21 +433,6 @@ TranslatorRomanian (TranslatorAdapter_1_2_16) 22 methods to implement ...@@ -547,21 +433,6 @@ TranslatorRomanian (TranslatorAdapter_1_2_16) 22 methods to implement
virtual QCString trRTFTableOfContents() virtual QCString trRTFTableOfContents()
TranslatorRussian (TranslatorAdapter_1_3_9) 6 methods to implement
-----------------
Implements 195 of the required methods.
Missing methods (should be implemented):
virtual QCString trDirIndex()
virtual QCString trDirDocumentation()
virtual QCString trDirectories()
virtual QCString trDirDescription()
virtual QCString trDirReference(const char * dirName)
virtual QCString trDir(bool first_capital, bool singular)
TranslatorSerbian (TranslatorAdapter_1_3_8) 7 methods to implement TranslatorSerbian (TranslatorAdapter_1_3_8) 7 methods to implement
----------------- -----------------
...@@ -653,29 +524,6 @@ TranslatorSpanish (TranslatorAdapter_1_3_8) 7 methods to implement ...@@ -653,29 +524,6 @@ TranslatorSpanish (TranslatorAdapter_1_3_8) 7 methods to implement
virtual QCString trDirReference(const char * dirName) virtual QCString trDirReference(const char * dirName)
virtual QCString trDir(bool first_capital, bool singular) virtual QCString trDir(bool first_capital, bool singular)
Obsolete methods (should be removed, never used):
virtual QCString trVerbatimText(const char * f)
virtual QCString trFiles()
virtual QCString trAuthors()
virtual QCString latexBabelPackage()
TranslatorSwedish (TranslatorAdapter_1_3_8) 7 methods to implement
-----------------
Implements 194 of the required methods.
Missing methods (should be implemented):
virtual QCString trDirIndex()
virtual QCString trDirDocumentation()
virtual QCString trDirectories()
virtual QCString trDirDescription()
virtual QCString trSourceFile(QCString & filename)
virtual QCString trDirReference(const char * dirName)
virtual QCString trDir(bool first_capital, bool singular)
TranslatorUkrainian (TranslatorAdapter_1_2_11) 25 methods to implement TranslatorUkrainian (TranslatorAdapter_1_2_11) 25 methods to implement
------------------- -------------------
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.3.8_20040928 Version: 1.3.9
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
......
...@@ -1807,6 +1807,10 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) ...@@ -1807,6 +1807,10 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
g_code->codify(yytext); g_code->codify(yytext);
g_curlyCount++; g_curlyCount++;
g_inClass=TRUE; g_inClass=TRUE;
if (YY_START==ClassVar)
{
g_curClassName = g_name.copy();
}
if (g_searchingForBody) if (g_searchingForBody)
{ {
g_searchingForBody=FALSE; g_searchingForBody=FALSE;
...@@ -2397,12 +2401,12 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) ...@@ -2397,12 +2401,12 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
BEGIN( SkipInits ); BEGIN( SkipInits );
} }
} }
<CallEnd>("const"|"volatile")({BN}+("const"|"volatile"))*{BN}*/";" { <CallEnd>("const"|"volatile")({BN}+("const"|"volatile"))*{BN}*/[;=] {
startFontClass("keyword"); startFontClass("keyword");
codifyLines(yytext); codifyLines(yytext);
endFontClass(); endFontClass();
} }
<CallEnd,OldStyleArgs>("const"|"volatile")*({BN}+("const"|"volatile"))*"{" { <CallEnd,OldStyleArgs>("const"|"volatile")*({BN}+("const"|"volatile"))*{BN}*"{" {
if (g_insideBody) if (g_insideBody)
{ {
g_theVarContext.pushScope(); g_theVarContext.pushScope();
......
...@@ -4454,6 +4454,20 @@ static void findMember(Entry *root, ...@@ -4454,6 +4454,20 @@ static void findMember(Entry *root,
scopeName=stripTemplateSpecifiersFromScope( scopeName=stripTemplateSpecifiersFromScope(
removeRedundantWhiteSpace(scopeName),FALSE,&funcSpec); removeRedundantWhiteSpace(scopeName),FALSE,&funcSpec);
// funcSpec contains the last template specifiers of the given scope.
// If this method does not have any template arguments or they are
// empty while funcSpec is not empty we assume this is a
// specialization of a method. If not, we clear the funcSpec and treat
// this as a normal method of a template class.
if (!(root->tArgLists &&
root->tArgLists->count()>0 &&
root->tArgLists->first()->count()==0
)
)
{
funcSpec.resize(0);
}
// split scope into a namespace and a class part // split scope into a namespace and a class part
extractNamespaceName(scopeName,className,namespaceName,TRUE); extractNamespaceName(scopeName,className,namespaceName,TRUE);
//printf("scopeName=`%s' className=`%s' namespaceName=`%s'\n", //printf("scopeName=`%s' className=`%s' namespaceName=`%s'\n",
...@@ -4897,7 +4911,7 @@ static void findMember(Entry *root, ...@@ -4897,7 +4911,7 @@ static void findMember(Entry *root,
} }
else else
{ {
//printf("Specialized member %s of unknown scope %s%s found!\n", //printf("*** Specialized member %s of unknown scope %s%s found!\n",
// scopeName.data(),funcName.data(),funcArgs.data()); // scopeName.data(),funcName.data(),funcArgs.data());
} }
} }
......
...@@ -235,13 +235,15 @@ class Entry ...@@ -235,13 +235,15 @@ class Entry
}; };
enum MemberSpecifier enum MemberSpecifier
{ {
Inline = 0x01, Inline = 0x0001,
Explicit = 0x02, Explicit = 0x0002,
Mutable = 0x04, Mutable = 0x0004,
Settable = 0x08, Settable = 0x0008,
Gettable = 0x10, Gettable = 0x0010,
Readable = 0x20, Readable = 0x0020,
Writable = 0x40 Writable = 0x0040,
Final = 0x0080,
Abstract = 0x0100,
}; };
Entry(); Entry();
......
...@@ -189,7 +189,7 @@ static const char *defaultStyleSheet = ...@@ -189,7 +189,7 @@ static const char *defaultStyleSheet =
"}\n" "}\n"
".mdescLeft {\n" ".mdescLeft {\n"
" padding: 0px 8px 4px 8px;\n" " padding: 0px 8px 4px 8px;\n"
" font-size: 14px;\n" " font-size: 12px;\n"
" font-style: italic;\n" " font-style: italic;\n"
" background-color: #FAFAFA;\n" " background-color: #FAFAFA;\n"
" border-top: 1px none #E0E0E0;\n" " border-top: 1px none #E0E0E0;\n"
...@@ -200,7 +200,7 @@ static const char *defaultStyleSheet = ...@@ -200,7 +200,7 @@ static const char *defaultStyleSheet =
"}\n" "}\n"
".mdescRight {\n" ".mdescRight {\n"
" padding: 0px 8px 4px 8px;\n" " padding: 0px 8px 4px 8px;\n"
" font-size: 14px;\n" " font-size: 12px;\n"
" font-style: italic;\n" " font-style: italic;\n"
" background-color: #FAFAFA;\n" " background-color: #FAFAFA;\n"
" border-top: 1px none #E0E0E0;\n" " border-top: 1px none #E0E0E0;\n"
...@@ -216,11 +216,11 @@ static const char *defaultStyleSheet = ...@@ -216,11 +216,11 @@ static const char *defaultStyleSheet =
" border-right-width: 1px;\n" " border-right-width: 1px;\n"
" border-bottom-width: 1px;\n" " border-bottom-width: 1px;\n"
" border-left-width: 1px;\n" " border-left-width: 1px;\n"
" border-top-style: solid;\n"
" border-top-color: #E0E0E0;\n" " border-top-color: #E0E0E0;\n"
" border-right-color: #E0E0E0;\n" " border-right-color: #E0E0E0;\n"
" border-bottom-color: #E0E0E0;\n" " border-bottom-color: #E0E0E0;\n"
" border-left-color: #E0E0E0;\n" " border-left-color: #E0E0E0;\n"
" border-top-style: solid;\n"
" border-right-style: none;\n" " border-right-style: none;\n"
" border-bottom-style: none;\n" " border-bottom-style: none;\n"
" border-left-style: none;\n" " border-left-style: none;\n"
...@@ -234,17 +234,72 @@ static const char *defaultStyleSheet = ...@@ -234,17 +234,72 @@ static const char *defaultStyleSheet =
" border-right-width: 1px;\n" " border-right-width: 1px;\n"
" border-bottom-width: 1px;\n" " border-bottom-width: 1px;\n"
" border-left-width: 1px;\n" " border-left-width: 1px;\n"
" border-top-color: #E0E0E0;\n"
" border-right-color: #E0E0E0;\n"
" border-bottom-color: #E0E0E0;\n"
" border-left-color: #E0E0E0;\n"
" border-top-style: solid;\n" " border-top-style: solid;\n"
" border-right-style: none;\n"
" border-bottom-style: none;\n"
" border-left-style: none;\n"
" background-color: #FAFAFA;\n"
" font-size: 13px;\n"
"}\n"
".memTemplItemLeft {\n"
" padding: 1px 0px 0px 8px;\n"
" margin: 4px;\n"
" border-top-width: 1px;\n"
" border-right-width: 1px;\n"
" border-bottom-width: 1px;\n"
" border-left-width: 1px;\n"
" border-top-color: #E0E0E0;\n" " border-top-color: #E0E0E0;\n"
" border-right-color: #E0E0E0;\n" " border-right-color: #E0E0E0;\n"
" border-bottom-color: #E0E0E0;\n" " border-bottom-color: #E0E0E0;\n"
" border-left-color: #E0E0E0;\n" " border-left-color: #E0E0E0;\n"
" border-top-style: none;\n"
" border-right-style: none;\n"
" border-bottom-style: none;\n"
" border-left-style: none;\n"
" background-color: #FAFAFA;\n"
" font-size: 12px;\n"
"}\n"
".memTemplItemRight {\n"
" padding: 1px 8px 0px 8px;\n"
" margin: 4px;\n"
" border-top-width: 1px;\n"
" border-right-width: 1px;\n"
" border-bottom-width: 1px;\n"
" border-left-width: 1px;\n"
" border-top-color: #E0E0E0;\n"
" border-right-color: #E0E0E0;\n"
" border-bottom-color: #E0E0E0;\n"
" border-left-color: #E0E0E0;\n"
" border-top-style: none;\n"
" border-right-style: none;\n" " border-right-style: none;\n"
" border-bottom-style: none;\n" " border-bottom-style: none;\n"
" border-left-style: none;\n" " border-left-style: none;\n"
" background-color: #FAFAFA;\n" " background-color: #FAFAFA;\n"
" font-size: 13px;\n" " font-size: 13px;\n"
"}\n" "}\n"
".memTemplParams {\n"
" padding: 1px 0px 0px 8px;\n"
" margin: 4px;\n"
" border-top-width: 1px;\n"
" border-right-width: 1px;\n"
" border-bottom-width: 1px;\n"
" border-left-width: 1px;\n"
" border-top-color: #E0E0E0;\n"
" border-right-color: #E0E0E0;\n"
" border-bottom-color: #E0E0E0;\n"
" border-left-color: #E0E0E0;\n"
" border-top-style: solid;\n"
" border-right-style: none;\n"
" border-bottom-style: none;\n"
" border-left-style: none;\n"
" color: #606060;\n"
" background-color: #FAFAFA;\n"
" font-size: 12px;\n"
"}\n"
".search { color: #003399;\n" ".search { color: #003399;\n"
" font-weight: bold;\n" " font-weight: bold;\n"
"}\n" "}\n"
...@@ -866,7 +921,8 @@ void HtmlGenerator::startMemberItem(int annoType) ...@@ -866,7 +921,8 @@ void HtmlGenerator::startMemberItem(int annoType)
{ {
case 0: t << "<td class=\"memItemLeft\" nowrap align=\"right\" valign=\"top\">"; break; case 0: t << "<td class=\"memItemLeft\" nowrap align=\"right\" valign=\"top\">"; break;
case 1: t << "<td class=\"memItemLeft\" nowrap>"; break; case 1: t << "<td class=\"memItemLeft\" nowrap>"; break;
default: t << "<td class=\"memItemLeft\" nowrap valign=\"top\">"; break; case 2: t << "<td class=\"memItemLeft\" nowrap valign=\"top\">"; break;
default: t << "<td class=\"memTemplParams\" nowrap colspan=\"2\">"; break;
} }
} }
else else
...@@ -885,13 +941,27 @@ void HtmlGenerator::endMemberItem() ...@@ -885,13 +941,27 @@ void HtmlGenerator::endMemberItem()
t << endl; t << endl;
} }
void HtmlGenerator::startMemberTemplateParams()
{
}
void HtmlGenerator::endMemberTemplateParams()
{
if (Config_getBool("HTML_ALIGN_MEMBERS"))
{
t << "</td></tr>" << endl;
t << "<tr><td class=\"memTemplItemLeft\" nowrap align=\"right\" valign=\"top\">";
}
}
void HtmlGenerator::insertMemberAlign() void HtmlGenerator::insertMemberAlign(bool templ)
{ {
DBG_HTML(t << "<!-- insertMemberAlign -->" << endl) DBG_HTML(t << "<!-- insertMemberAlign -->" << endl)
if (Config_getBool("HTML_ALIGN_MEMBERS")) if (Config_getBool("HTML_ALIGN_MEMBERS"))
{ {
t << "&nbsp;</td><td class=\"memItemRight\" valign=\"bottom\">"; QCString className = templ ? "memTemplItemRight" : "memItemRight";
t << "&nbsp;</td><td class=\"" << className << "\" valign=\"bottom\">";
} }
} }
......
...@@ -100,6 +100,8 @@ class HtmlGenerator : public OutputGenerator ...@@ -100,6 +100,8 @@ class HtmlGenerator : public OutputGenerator
void endAnonTypeScope(int) {} void endAnonTypeScope(int) {}
void startMemberItem(int); void startMemberItem(int);
void endMemberItem(); void endMemberItem();
void startMemberTemplateParams();
void endMemberTemplateParams();
void startMemberGroupHeader(bool); void startMemberGroupHeader(bool);
void endMemberGroupHeader(); void endMemberGroupHeader();
...@@ -108,7 +110,7 @@ class HtmlGenerator : public OutputGenerator ...@@ -108,7 +110,7 @@ class HtmlGenerator : public OutputGenerator
void startMemberGroup(); void startMemberGroup();
void endMemberGroup(bool); void endMemberGroup(bool);
void insertMemberAlign(); void insertMemberAlign(bool);
void startMemberDescription(); void startMemberDescription();
void endMemberDescription(); void endMemberDescription();
......
...@@ -159,7 +159,7 @@ void LatexGenerator::init() ...@@ -159,7 +159,7 @@ void LatexGenerator::init()
QTextStream t(&file); QTextStream t(&file);
if (!Config_getBool("USE_PDFLATEX")) // use plain old latex if (!Config_getBool("USE_PDFLATEX")) // use plain old latex
{ {
t << "all: refman.dvi" << endl t << "all clean: refman.dvi" << endl
<< endl << endl
<< "ps: refman.ps" << endl << "ps: refman.ps" << endl
<< endl << endl
...@@ -208,7 +208,7 @@ void LatexGenerator::init() ...@@ -208,7 +208,7 @@ void LatexGenerator::init()
} }
else // use pdflatex for higher quality output else // use pdflatex for higher quality output
{ {
t << "all: refman.pdf" << endl << endl; t << "all clean: refman.pdf" << endl << endl;
t << "refman.pdf: refman.tex" << endl; t << "refman.pdf: refman.tex" << endl;
t << "\tpdflatex refman.tex" << endl; t << "\tpdflatex refman.tex" << endl;
t << "\tmakeindex refman.idx" << endl; t << "\tmakeindex refman.idx" << endl;
...@@ -1391,6 +1391,7 @@ void LatexGenerator::endMemberDescription() ...@@ -1391,6 +1391,7 @@ void LatexGenerator::endMemberDescription()
else else
{ {
t << "}\\\\"; t << "}\\\\";
m_indent=0;
} }
} }
......
...@@ -98,6 +98,8 @@ class LatexGenerator : public OutputGenerator ...@@ -98,6 +98,8 @@ class LatexGenerator : public OutputGenerator
void endAnonTypeScope(int); void endAnonTypeScope(int);
void startMemberItem(int); void startMemberItem(int);
void endMemberItem(); void endMemberItem();
void startMemberTemplateParams() {}
void endMemberTemplateParams() {}
void startMemberGroupHeader(bool); void startMemberGroupHeader(bool);
void endMemberGroupHeader(); void endMemberGroupHeader();
...@@ -106,7 +108,7 @@ class LatexGenerator : public OutputGenerator ...@@ -106,7 +108,7 @@ class LatexGenerator : public OutputGenerator
void startMemberGroup(); void startMemberGroup();
void endMemberGroup(bool); void endMemberGroup(bool);
void insertMemberAlign() {} void insertMemberAlign(bool) {}
void writeRuler() { t << endl << endl; /*t << "\\vspace{0.4cm}\\hrule\\vspace{0.2cm}" << endl; */ } void writeRuler() { t << endl << endl; /*t << "\\vspace{0.4cm}\\hrule\\vspace{0.2cm}" << endl; */ }
void writeAnchor(const char *fileName,const char *name); void writeAnchor(const char *fileName,const char *name);
......
...@@ -93,7 +93,7 @@ class ManGenerator : public OutputGenerator ...@@ -93,7 +93,7 @@ class ManGenerator : public OutputGenerator
void endMemberSections() {} void endMemberSections() {}
void startMemberHeader(); void startMemberHeader();
void endMemberHeader(); void endMemberHeader();
void insertMemberAlign() {} void insertMemberAlign(bool) {}
void startMemberSubtitle() {} void startMemberSubtitle() {}
void endMemberSubtitle() {} void endMemberSubtitle() {}
void writeListItem(); void writeListItem();
...@@ -103,6 +103,8 @@ class ManGenerator : public OutputGenerator ...@@ -103,6 +103,8 @@ class ManGenerator : public OutputGenerator
void endAnonTypeScope(int); void endAnonTypeScope(int);
void startMemberItem(int); void startMemberItem(int);
void endMemberItem(); void endMemberItem();
void startMemberTemplateParams() {}
void endMemberTemplateParams() {}
void startMemberGroupHeader(bool); void startMemberGroupHeader(bool);
void endMemberGroupHeader(); void endMemberGroupHeader();
......
...@@ -178,7 +178,7 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -178,7 +178,7 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd,
} }
if (!a->name.isEmpty() || (a->name.isEmpty() && a->type=="...")) // argument has a name if (!a->name.isEmpty() || (a->name.isEmpty() && a->type=="...")) // argument has a name
{ {
if (!hasFuncPtrType); if (!hasFuncPtrType)
{ {
ol.docify(" "); ol.docify(" ");
} }
...@@ -886,8 +886,9 @@ void MemberDef::writeDeclaration(OutputList &ol, ...@@ -886,8 +886,9 @@ void MemberDef::writeDeclaration(OutputList &ol,
ClassDef *annoClassDef=getClassDefOfAnonymousType(); ClassDef *annoClassDef=getClassDefOfAnonymousType();
// start a new member declaration // start a new member declaration
bool isAnonymous = annoClassDef || annMemb || annEnumType;
///printf("startMemberItem for %s\n",name().data()); ///printf("startMemberItem for %s\n",name().data());
ol.startMemberItem((annoClassDef || annMemb || annEnumType) ? 1 : 0); ol.startMemberItem( isAnonymous ? 1 : tArgList ? 3 : 0);
// If there is no detailed description we need to write the anchor here. // If there is no detailed description we need to write the anchor here.
bool detailsVisible = isDetailedSectionLinkable(); bool detailsVisible = isDetailedSectionLinkable();
...@@ -915,8 +916,9 @@ void MemberDef::writeDeclaration(OutputList &ol, ...@@ -915,8 +916,9 @@ void MemberDef::writeDeclaration(OutputList &ol,
if (tArgList) if (tArgList)
{ {
if (!isAnonymous) ol.startMemberTemplateParams();
writeTemplatePrefix(ol,tArgList); writeTemplatePrefix(ol,tArgList);
//ol.lineBreak(); if (!isAnonymous) ol.endMemberTemplateParams();
} }
QCString ltype(type); QCString ltype(type);
...@@ -1001,7 +1003,7 @@ void MemberDef::writeDeclaration(OutputList &ol, ...@@ -1001,7 +1003,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
} }
else else
{ {
ol.insertMemberAlign(); ol.insertMemberAlign(tArgList!=0);
} }
// write name // write name
...@@ -1433,7 +1435,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1433,7 +1435,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
isMutable() || (isInline() && Config_getBool("INLINE_INFO")) || isMutable() || (isInline() && Config_getBool("INLINE_INFO")) ||
isSignal() || isSlot() || isSignal() || isSlot() ||
isStatic() || (classDef && classDef!=container) || isStatic() || (classDef && classDef!=container) ||
isSettable() || isGettable() || isReadable() || isWritable() isSettable() || isGettable() || isReadable() || isWritable() ||
isFinal() || isAbstract()
) )
) )
{ {
...@@ -1455,6 +1458,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1455,6 +1458,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
if (isSettable()) sl.append("set"); if (isSettable()) sl.append("set");
if (isReadable()) sl.append("read"); if (isReadable()) sl.append("read");
if (isWritable()) sl.append("write"); if (isWritable()) sl.append("write");
if (isFinal()) sl.append("final");
if (isAbstract()) sl.append("abstract");
if (protection()==Protected) sl.append("protected"); if (protection()==Protected) sl.append("protected");
else if (protection()==Private) sl.append("private"); else if (protection()==Private) sl.append("private");
else if (protection()==Package) sl.append("package"); else if (protection()==Package) sl.append("package");
......
...@@ -132,6 +132,8 @@ class MemberDef : public Definition ...@@ -132,6 +132,8 @@ class MemberDef : public Definition
bool isSettable() const { return (memSpec&Entry::Settable)!=0; } bool isSettable() const { return (memSpec&Entry::Settable)!=0; }
bool isReadable() const { return (memSpec&Entry::Readable)!=0; } bool isReadable() const { return (memSpec&Entry::Readable)!=0; }
bool isWritable() const { return (memSpec&Entry::Writable)!=0; } bool isWritable() const { return (memSpec&Entry::Writable)!=0; }
bool isFinal() const { return (memSpec&Entry::Final)!=0; }
bool isAbstract() const { return (memSpec&Entry::Abstract)!=0; }
bool isImplementation() const { return m_implOnly; } bool isImplementation() const { return m_implOnly; }
bool isExternal() const { return explExt; } bool isExternal() const { return explExt; }
bool isTemplateSpecialization() const { return tspec; } bool isTemplateSpecialization() const { return tspec; }
......
...@@ -307,13 +307,15 @@ class OutputGenerator : public BaseOutputDocInterface ...@@ -307,13 +307,15 @@ class OutputGenerator : public BaseOutputDocInterface
virtual void endAnonTypeScope(int) = 0; virtual void endAnonTypeScope(int) = 0;
virtual void startMemberItem(int) = 0; virtual void startMemberItem(int) = 0;
virtual void endMemberItem() = 0; virtual void endMemberItem() = 0;
virtual void startMemberTemplateParams() = 0;
virtual void endMemberTemplateParams() = 0;
virtual void startMemberGroupHeader(bool) = 0; virtual void startMemberGroupHeader(bool) = 0;
virtual void endMemberGroupHeader() = 0; virtual void endMemberGroupHeader() = 0;
virtual void startMemberGroupDocs() = 0; virtual void startMemberGroupDocs() = 0;
virtual void endMemberGroupDocs() = 0; virtual void endMemberGroupDocs() = 0;
virtual void startMemberGroup() = 0; virtual void startMemberGroup() = 0;
virtual void endMemberGroup(bool) = 0; virtual void endMemberGroup(bool) = 0;
virtual void insertMemberAlign() = 0; virtual void insertMemberAlign(bool) = 0;
virtual void startMemberDoc(const char *,const char *, virtual void startMemberDoc(const char *,const char *,
const char *,const char *) = 0; const char *,const char *) = 0;
virtual void endMemberDoc(bool) = 0; virtual void endMemberDoc(bool) = 0;
......
...@@ -170,6 +170,10 @@ class OutputList : public OutputDocInterface ...@@ -170,6 +170,10 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startMemberItem,i1); } { forall(&OutputGenerator::startMemberItem,i1); }
void endMemberItem() void endMemberItem()
{ forall(&OutputGenerator::endMemberItem); } { forall(&OutputGenerator::endMemberItem); }
void startMemberTemplateParams()
{ forall(&OutputGenerator::startMemberTemplateParams); }
void endMemberTemplateParams()
{ forall(&OutputGenerator::endMemberTemplateParams); }
void startMemberGroupHeader(bool b) void startMemberGroupHeader(bool b)
{ forall(&OutputGenerator::startMemberGroupHeader,b); } { forall(&OutputGenerator::startMemberGroupHeader,b); }
void endMemberGroupHeader() void endMemberGroupHeader()
...@@ -182,8 +186,8 @@ class OutputList : public OutputDocInterface ...@@ -182,8 +186,8 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startMemberGroup); } { forall(&OutputGenerator::startMemberGroup); }
void endMemberGroup(bool last) void endMemberGroup(bool last)
{ forall(&OutputGenerator::endMemberGroup,last); } { forall(&OutputGenerator::endMemberGroup,last); }
void insertMemberAlign() void insertMemberAlign(bool templ=FALSE)
{ forall(&OutputGenerator::insertMemberAlign); } { forall(&OutputGenerator::insertMemberAlign,templ); }
void writeRuler() void writeRuler()
{ forall(&OutputGenerator::writeRuler); } { forall(&OutputGenerator::writeRuler); }
void writeAnchor(const char *fileName,const char *name) void writeAnchor(const char *fileName,const char *name)
......
...@@ -106,9 +106,11 @@ class RTFGenerator : public OutputGenerator ...@@ -106,9 +106,11 @@ class RTFGenerator : public OutputGenerator
void endAnonTypeScope(int) {} void endAnonTypeScope(int) {}
void startMemberItem(int); void startMemberItem(int);
void endMemberItem(); void endMemberItem();
void startMemberTemplateParams() {}
void endMemberTemplateParams() {}
//void memberGroupSpacing(bool) {} //void memberGroupSpacing(bool) {}
//void memberGroupSeparator() {} //void memberGroupSeparator() {}
void insertMemberAlign() {} void insertMemberAlign(bool) {}
void writeRuler() { rtfwriteRuler_thin(); } void writeRuler() { rtfwriteRuler_thin(); }
......
...@@ -1209,8 +1209,12 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -1209,8 +1209,12 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
if (!insidePHP) if (!insidePHP)
{ {
current->type += " abstract "; current->type += " abstract ";
}
current->virt = Pure; current->virt = Pure;
}
else
{
current->memSpec|=Entry::Abstract;
}
lineCount(); lineCount();
} }
<FindMembers>{B}*"inline"{BN}+ { current->memSpec|=Entry::Inline; <FindMembers>{B}*"inline"{BN}+ { current->memSpec|=Entry::Inline;
...@@ -3295,6 +3299,19 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -3295,6 +3299,19 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
} }
} }
//printf("Adding entry `%s'\n",current->name.data()); //printf("Adding entry `%s'\n",current->name.data());
if ( insidePHP)
{
if (current->type.left(6) == "final " )
{
current->type = current->type.mid(6);
current->memSpec |= Entry::Final;
}
if (current->type.left(9) == "abstract " )
{
current->type = current->type.mid(9);
current->memSpec |= Entry::Abstract;
}
}
if ( insidePHP && current->type.left(8) != "function" ) if ( insidePHP && current->type.left(8) != "function" )
{ {
initEntry(); initEntry();
......
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
* Version: 1.3.8 (2004/06/30) * Version: 1.3.8 (2004/06/30)
* *
* History: * History:
* 1.3.9
* - Updated to Doxygen 1.3.9
* 1.3.8 * 1.3.8
* - Updated to Doxygen 1.3.8 * - Updated to Doxygen 1.3.8
* 1.3.3: * 1.3.3:
...@@ -32,7 +34,7 @@ ...@@ -32,7 +34,7 @@
#ifndef TRANSLATOR_BR_H #ifndef TRANSLATOR_BR_H
#define TRANSLATOR_BR_H #define TRANSLATOR_BR_H
class TranslatorBrazilian : public TranslatorAdapter_1_3_9 class TranslatorBrazilian : public Translator
{ {
public: public:
...@@ -1548,5 +1550,52 @@ class TranslatorBrazilian : public TranslatorAdapter_1_3_9 ...@@ -1548,5 +1550,52 @@ class TranslatorBrazilian : public TranslatorAdapter_1_3_9
return "Código-Fonte de " + filename; return "Código-Fonte de " + filename;
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.3.9
//////////////////////////////////////////////////////////////////////////
/*! This is used as the name of the chapter containing the directory
* hierarchy.
*/
virtual QCString trDirIndex()
{ return "Hierarquia de Diretórios"; }
/*! This is used as the name of the chapter containing the documentation
* of the directories.
*/
virtual QCString trDirDocumentation()
{ return "Documentação do Directório"; }
/*! This is used as the title of the directory index and also in the
* Quick links of a HTML page, to link to the directory hierarchy.
*/
virtual QCString trDirectories()
{ return "Diretórios"; }
/*! This returns a sentences that introduces the directory hierarchy.
* and the fact that it is sorted alphabetically per level
*/
virtual QCString trDirDescription()
{ return "Esta Hierarquia de Diretórios está parcialmente ordenada (ordem alfabética)"; }
/*! This returns the title of a directory page. The name of the
* directory is passed via \a dirName.
*/
virtual QCString trDirReference(const char *dirName)
{
QCString result = "Referência do diretório ";
result += dirName;
return result;
}
/*! This returns the word directory with or without starting capital
* (\a first_capital) and in sigular or plural form (\a singular).
*/
virtual QCString trDir(bool first_capital, bool singular)
{
QCString result((first_capital ? "Diretório" : "diretório"));
if (!singular) result+="s";
return result;
}
}; };
#endif #endif
...@@ -30,9 +30,6 @@ class TranslatorSpanish : public TranslatorAdapter_1_3_8 ...@@ -30,9 +30,6 @@ class TranslatorSpanish : public TranslatorAdapter_1_3_8
public: public:
virtual QCString idLanguage() virtual QCString idLanguage()
{ return "spanish"; } { return "spanish"; }
/*! returns the name of the package that is included by LaTeX */
virtual QCString latexBabelPackage()
{ return ""; }
/*! Used to get the LaTeX command(s) for the language support. /*! Used to get the LaTeX command(s) for the language support.
* This method should return string with commands that switch * This method should return string with commands that switch
...@@ -129,12 +126,6 @@ class TranslatorSpanish : public TranslatorAdapter_1_3_8 ...@@ -129,12 +126,6 @@ class TranslatorSpanish : public TranslatorAdapter_1_3_8
virtual QCString trDefinedIn() virtual QCString trDefinedIn()
{ return "definido en"; } { return "definido en"; }
/*! put as in introduction in the verbatim header file of a class.
* parameter f is the name of the include file.
*/
virtual QCString trVerbatimText(const char *f)
{ return (QCString)"Este es el texto al pie de la letra del archivo "+f+" adjunto."; }
// quick reference sections // quick reference sections
/*! This is put above each page as a link to the list of all groups of /*! This is put above each page as a link to the list of all groups of
...@@ -412,12 +403,6 @@ class TranslatorSpanish : public TranslatorAdapter_1_3_8 ...@@ -412,12 +403,6 @@ class TranslatorSpanish : public TranslatorAdapter_1_3_8
virtual QCString trCompounds() virtual QCString trCompounds()
{ return "Clases"; } { return "Clases"; }
/*! This is used in the documentation of a group before the list of
* links to documented files
*/
virtual QCString trFiles()
{ return "Archivos"; }
/*! This is used in the standard footer of each page and indicates when /*! This is used in the standard footer of each page and indicates when
* the page was generated * the page was generated
*/ */
...@@ -465,10 +450,6 @@ class TranslatorSpanish : public TranslatorAdapter_1_3_8 ...@@ -465,10 +450,6 @@ class TranslatorSpanish : public TranslatorAdapter_1_3_8
virtual QCString trDate() virtual QCString trDate()
{ return "Fecha"; } { return "Fecha"; }
/*! this text is generated when the \\author command is used. */
virtual QCString trAuthors()
{ return "Autor(es)"; }
/*! this text is generated when the \return command is used. */ /*! this text is generated when the \return command is used. */
virtual QCString trReturns() virtual QCString trReturns()
{ return "Devuelve"; } { return "Devuelve"; }
......
...@@ -90,9 +90,6 @@ class TranslatorFinnish : public TranslatorEnglish ...@@ -90,9 +90,6 @@ class TranslatorFinnish : public TranslatorEnglish
QCString idLanguage() QCString idLanguage()
{ return "finnish"; } { return "finnish"; }
QCString latexBabelPackage()
// returns the name of the package that is included by LaTeX
{ return "finnish"; }
QCString trRelatedFunctions() QCString trRelatedFunctions()
// used in the compound documentation before a list of related functions. // used in the compound documentation before a list of related functions.
...@@ -124,18 +121,6 @@ class TranslatorFinnish : public TranslatorEnglish ...@@ -124,18 +121,6 @@ class TranslatorFinnish : public TranslatorEnglish
// header that is put before the list of member attributes. // header that is put before the list of member attributes.
{ return "Jäsen Datan Dokumentaatio"; } // "Member Data Documentation" { return "Jäsen Datan Dokumentaatio"; } // "Member Data Documentation"
QCString trGeneratedFrom(const char *s,bool single)
{ // here s is one of " Class", " Struct" or " Union"
// single is true implies a single file
QCString result=(QCString)"Tämän "+s+ // "The documentation for this"+s+
" dokumentaatio on generoitu ";// " was generated from the following file";
if (single)
result+="seuraavasta tiedostosta:";
else
result+="seuraavista tiedostoista:";
return result;
}
QCString trMore() QCString trMore()
// this is the text of a link put after brief descriptions. // this is the text of a link put after brief descriptions.
{ return "Lisää..."; } // "More..." { return "Lisää..."; } // "More..."
...@@ -180,11 +165,6 @@ class TranslatorFinnish : public TranslatorEnglish ...@@ -180,11 +165,6 @@ class TranslatorFinnish : public TranslatorEnglish
// put after an undocumented member in the list of all members // put after an undocumented member in the list of all members
{ return "määritelty"; } // "defined in" { return "määritelty"; } // "defined in"
QCString trVerbatimText(const char *f)
// put as in introduction in the verbatim header file of a class.
// parameter f is the name of the include file.
{ return (QCString)"Tämä on lyhennetty esitys "+f+" include tiedostosta."; } // "This is the verbatim text of the "+f+" include file."
// quick reference sections // quick reference sections
QCString trModules() QCString trModules()
// This is put above each page as a link to the list of all groups of // This is put above each page as a link to the list of all groups of
...@@ -349,10 +329,6 @@ class TranslatorFinnish : public TranslatorEnglish ...@@ -349,10 +329,6 @@ class TranslatorFinnish : public TranslatorEnglish
// list of (global) variables // list of (global) variables
{ return "Enumeraation arvot"; } // "Enumeration values" { return "Enumeraation arvot"; } // "Enumeration values"
QCString trAuthor()
// This is used in man pages as the author section.
{ return "Tekijä"; } // "Author"
QCString trDefineDocumentation() QCString trDefineDocumentation()
// This is used in the documentation of a file before the list of // This is used in the documentation of a file before the list of
// documentation blocks for defines // documentation blocks for defines
......
...@@ -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 TranslatorAdapter_1_3_8 class TranslatorFrench : public Translator
{ {
public: public:
...@@ -1590,6 +1590,66 @@ class TranslatorFrench : public TranslatorAdapter_1_3_8 ...@@ -1590,6 +1590,66 @@ class TranslatorFrench : public TranslatorAdapter_1_3_8
return "Correspondances:"; return "Correspondances:";
} }
//////////////////////////////////////////////////////////////////////////
// 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 " Fichier source de " + filename;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.9
//////////////////////////////////////////////////////////////////////////
/*! This is used as the name of the chapter containing the directory
* hierarchy.
*/
virtual QCString trDirIndex()
{ return "Hiérarchie de répertoires"; }
/*! This is used as the name of the chapter containing the documentation
* of the directories.
*/
virtual QCString trDirDocumentation()
{ return "Documentation des répertoires"; }
/*! This is used as the title of the directory index and also in the
* Quick links of a HTML page, to link to the directory hierarchy.
*/
virtual QCString trDirectories()
{ return "Répertoires"; }
/*! This returns a sentences that introduces the directory hierarchy.
* and the fact that it is sorted alphabetically per level
*/
virtual QCString trDirDescription()
{ return "Cette hiérarchie de répertoire est triée approximativement, "
"mais pas complètement, par ordre alphabétique:";
}
/*! This returns the title of a directory page. The name of the
* directory is passed via \a dirName.
*/
virtual QCString trDirReference(const char *dirName)
{
QCString result="Répertoire de référence de "; result+=dirName;
return result;
}
/*! This returns the word directory with or without starting capital
* (\a first_capital) and in sigular or plural form (\a singular).
*/
virtual QCString trDir(bool first_capital, bool singular)
{
QCString result((first_capital ? "Répertoire" : "répertoire"));
if (singular) result+=""; else result+="s";
return result;
}
}; };
#endif #endif
...@@ -37,10 +37,7 @@ class TranslatorGreek : public TranslatorAdapter_1_2_11 ...@@ -37,10 +37,7 @@ class TranslatorGreek : public TranslatorAdapter_1_2_11
*/ */
virtual QCString idLanguage() virtual QCString idLanguage()
{ return "greek"; } { return "greek"; }
virtual QCString latexBabelPackage()
{
return "greek";
}
virtual QCString latexLanguageSupportCommand() virtual QCString latexLanguageSupportCommand()
{ {
return "\\usepackage[greek,english]{babel}\n\\usepackage[iso-8859-7]{inputenc}\n"; return "\\usepackage[greek,english]{babel}\n\\usepackage[iso-8859-7]{inputenc}\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