Commit 89f2e4c8 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.3.9

parent b7473cd8
DOXYGEN Version 1.3.8-20040928
DOXYGEN Version 1.3.9
Please read the installation section of the manual
(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.
......@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
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
than English (the default). The output language is chosen through the
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):
Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese
Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French,
......@@ -59,8 +59,8 @@ when the translator was updated.
<tr bgcolor="#ffffff">
<td>Brazilian Portuguese</td>
<td>Fabio "FJTC" Jun Takada Chino</td>
<td>chino at icmc dot sc dot usp dot br</td>
<td>1.3.9</td>
<td>jun-chino at uol dot com dot br</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Catalan</td>
......@@ -72,7 +72,7 @@ when the translator was updated.
<td>Chinese</td>
<td>Li Daobing<br>Wei Liu</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 bgcolor="#ffffff">
<td>Chinese Traditional</td>
......@@ -84,7 +84,7 @@ when the translator was updated.
<td>Croatian</td>
<td>Boris Bralo</td>
<td>boris.bralo at zg dot htnet dot hr</td>
<td>1.3.9</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Czech</td>
......@@ -120,13 +120,13 @@ when the translator was updated.
<td>French</td>
<td>Xavier Outhier</td>
<td>xouthier at yahoo dot fr</td>
<td>1.3.8</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>German</td>
<td>Jens Seidel</td>
<td>jensseidel at users dot sf dot net</td>
<td>1.3.9</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Greek</td>
......@@ -138,13 +138,13 @@ when the translator was updated.
<td>Hungarian</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>1.3.9</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Italian</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>1.3.9</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Japanese</td>
......@@ -204,7 +204,7 @@ when the translator was updated.
<td>Russian</td>
<td>Alexandr Chelpanov</td>
<td>cav at cryptopro dot ru</td>
<td>1.3.9</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Serbian</td>
......@@ -234,7 +234,7 @@ when the translator was updated.
<td>Swedish</td>
<td>Mikael Hallin</td>
<td>mikaelhallin at yahoo dot se</td>
<td>1.3.8</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Ukrainian</td>
......@@ -259,17 +259,17 @@ when the translator was updated.
\hline
Afrikaans & Johan Prinsloo & {\tt\tiny johan@zippysnoek.com} & 1.3.9 \\
\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
Catalan & Albert Mora & {\tt\tiny amora@iua.upf.es} & 1.2.17 \\
\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} & ~ \\
\hline
Chinese Traditional & Daniel YC Lin & {\tt\tiny daniel@twpda.com} & 1.3.8 \\
~ & Gary Lee & {\tt\tiny garylee@ecosine.com.tw} & ~ \\
\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
Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & up-to-date \\
\hline
......@@ -281,16 +281,16 @@ when the translator was updated.
\hline
Finnish & Olli Korhonen & {\tt\tiny olli.korhonen lost@cyberspace} & obsolete \\
\hline
French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & 1.3.8 \\
French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & up-to-date \\
\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
Greek & Harry Kalogirou & {\tt\tiny harkal@rainbow.cs.unipi.gr} & 1.2.11 \\
\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} & ~ \\
\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} & ~ \\
\hline
Japanese & Ryunosuke Satoh & {\tt\tiny sun594@hotmail.com} & 1.3.9 \\
......@@ -316,7 +316,7 @@ when the translator was updated.
\hline
Romanian & Alexandru Iosup & {\tt\tiny aiosup@yahoo.com} & 1.2.16 \\
\hline
Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & 1.3.9 \\
Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & up-to-date \\
\hline
Serbian & Dejan Milosavljevic & {\tt\tiny dmilos@email.com} & 1.3.8 \\
\hline
......@@ -326,7 +326,7 @@ when the translator was updated.
\hline
Spanish & Francisco Oltra Thennet & {\tt\tiny foltra@puc.cl} & 1.3.8 \\
\hline
Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} & 1.3.8 \\
Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} & up-to-date \\
\hline
Ukrainian & Olexij Tkatchenko & {\tt\tiny olexij.tkatchenko@parcs.de} & 1.2.11 \\
\hline
......
......@@ -13,7 +13,7 @@ TranslatorAfrikaans
Johan Prinsloo: johan@zippysnoek.com
TranslatorBrazilian
Fabio "FJTC" Jun Takada Chino: chino@icmc.sc.usp.br
Fabio "FJTC" Jun Takada Chino: jun-chino@uol.com.br
TranslatorCatalan
Albert Mora: amora@iua.upf.es
......
......@@ -43,6 +43,7 @@
when the report is not restricted to selected languages
explicitly via script arguments.
2004/07/26 - Better reporting of not-needed adapters.
2004/10/04 - Reporting of not called translator methods added.
"""
from __future__ import generators
......@@ -1160,7 +1161,7 @@ class Transl:
class TrManager:
"""Collects basic info and builds subordinate Transl objects."""
def __init__(self):
def __init__(self):
"""Determines paths, creates and initializes structures.
The arguments of the script may explicitly say what languages should
......@@ -1355,7 +1356,84 @@ class TrManager:
tim = tr.getmtime()
if tim > self.lastModificationTime:
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):
......@@ -1478,6 +1556,27 @@ class TrManager:
f.write(' -- ' + obj.note)
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.
f.write('\n' + '=' * 70)
f.write('\nDetails for translators (classes sorted alphabetically):\n')
......@@ -1494,8 +1593,6 @@ class TrManager:
f.close()
def __loadMaintainers(self):
"""Load and process the file with the maintainers.
......@@ -1545,7 +1642,8 @@ class TrManager:
assert(len(lst) == 2)
t = (lst[0].strip(), lst[1].strip())
self.__maintainersDic[classId].append(t)
f.close()
f.close()
def generateLanguageDoc(self):
"""Checks the modtime of files and generates language.doc."""
......
(1.3.8-20040913)
(1.3.9)
Doxygen supports the following 30 languages (sorted alphabetically):
......@@ -8,7 +8,7 @@ German, Greek, Hungarian, Italian, Japanese (+En), Korean (+En),
Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, Serbian,
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.
----------------------------------------------------------------------
......@@ -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
still may be some details listed even for them:
TranslatorBrazilian
TranslatorChinese
TranslatorCroatian
TranslatorCzech
TranslatorDutch
TranslatorEnglish
TranslatorFrench
TranslatorGerman
TranslatorHungarian
TranslatorItalian
TranslatorPolish
TranslatorRussian
TranslatorSwedish
----------------------------------------------------------------------
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
version when the class was last updated and number of methods that
must be implemented to become up-to-date:
TranslatorRussian 1.3.9 6 methods to implement
TranslatorNorwegian 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
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
TranslatorSwedish 1.3.8 7 methods to implement
TranslatorSpanish 1.3.8 7 methods to implement
TranslatorSerbian 1.3.8 7 methods to implement
TranslatorLithuanian 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
TranslatorPortuguese 1.3.3 11 methods to implement
TranslatorSlovak 1.2.18 20 methods to implement
......@@ -84,21 +84,6 @@ TranslatorAfrikaans (TranslatorAdapter_1_3_9) 6 methods to implement
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
-----------------
......@@ -129,21 +114,6 @@ TranslatorCatalan (TranslatorAdapter_1_2_17) 21 methods to implement
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
----------------------------
......@@ -160,21 +130,6 @@ TranslatorChinesetraditional (TranslatorAdapter_1_3_8) 7 methods to implement
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
----------------
......@@ -298,44 +253,9 @@ TranslatorFinnish (TranslatorEnglish) 98 methods to implement
Obsolete methods (should be removed, never used):
QCString trGeneratedFrom(const char * s, bool single)
QCString trVerbatimText(const char * f)
QCString trFiles()
virtual QCString updateNeededMessage()
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
......@@ -371,40 +291,6 @@ TranslatorGreek (TranslatorAdapter_1_2_11) 25 methods to implement
virtual QCString trAll()
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
------------------
......@@ -547,21 +433,6 @@ TranslatorRomanian (TranslatorAdapter_1_2_16) 22 methods to implement
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
-----------------
......@@ -653,29 +524,6 @@ TranslatorSpanish (TranslatorAdapter_1_3_8) 7 methods to implement
virtual QCString trDirReference(const char * dirName)
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
-------------------
......
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.3.8_20040928
Version: 1.3.9
Release: 1
Epoch: 1
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}"'"))
g_code->codify(yytext);
g_curlyCount++;
g_inClass=TRUE;
if (YY_START==ClassVar)
{
g_curClassName = g_name.copy();
}
if (g_searchingForBody)
{
g_searchingForBody=FALSE;
......@@ -2397,12 +2401,12 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
BEGIN( SkipInits );
}
}
<CallEnd>("const"|"volatile")({BN}+("const"|"volatile"))*{BN}*/";" {
<CallEnd>("const"|"volatile")({BN}+("const"|"volatile"))*{BN}*/[;=] {
startFontClass("keyword");
codifyLines(yytext);
endFontClass();
}
<CallEnd,OldStyleArgs>("const"|"volatile")*({BN}+("const"|"volatile"))*"{" {
<CallEnd,OldStyleArgs>("const"|"volatile")*({BN}+("const"|"volatile"))*{BN}*"{" {
if (g_insideBody)
{
g_theVarContext.pushScope();
......
......@@ -4453,6 +4453,20 @@ static void findMember(Entry *root,
}
scopeName=stripTemplateSpecifiersFromScope(
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
extractNamespaceName(scopeName,className,namespaceName,TRUE);
......@@ -4897,7 +4911,7 @@ static void findMember(Entry *root,
}
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());
}
}
......
......@@ -235,13 +235,15 @@ class Entry
};
enum MemberSpecifier
{
Inline = 0x01,
Explicit = 0x02,
Mutable = 0x04,
Settable = 0x08,
Gettable = 0x10,
Readable = 0x20,
Writable = 0x40
Inline = 0x0001,
Explicit = 0x0002,
Mutable = 0x0004,
Settable = 0x0008,
Gettable = 0x0010,
Readable = 0x0020,
Writable = 0x0040,
Final = 0x0080,
Abstract = 0x0100,
};
Entry();
......
......@@ -189,7 +189,7 @@ static const char *defaultStyleSheet =
"}\n"
".mdescLeft {\n"
" padding: 0px 8px 4px 8px;\n"
" font-size: 14px;\n"
" font-size: 12px;\n"
" font-style: italic;\n"
" background-color: #FAFAFA;\n"
" border-top: 1px none #E0E0E0;\n"
......@@ -200,7 +200,7 @@ static const char *defaultStyleSheet =
"}\n"
".mdescRight {\n"
" padding: 0px 8px 4px 8px;\n"
" font-size: 14px;\n"
" font-size: 12px;\n"
" font-style: italic;\n"
" background-color: #FAFAFA;\n"
" border-top: 1px none #E0E0E0;\n"
......@@ -216,11 +216,11 @@ static const char *defaultStyleSheet =
" border-right-width: 1px;\n"
" border-bottom-width: 1px;\n"
" border-left-width: 1px;\n"
" border-top-style: solid;\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"
......@@ -234,17 +234,72 @@ static const char *defaultStyleSheet =
" 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"
" 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-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-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-bottom-style: none;\n"
" border-left-style: none;\n"
" background-color: #FAFAFA;\n"
" font-size: 13px;\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"
" font-weight: bold;\n"
"}\n"
......@@ -866,7 +921,8 @@ void HtmlGenerator::startMemberItem(int annoType)
{
case 0: t << "<td class=\"memItemLeft\" nowrap align=\"right\" valign=\"top\">"; 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
......@@ -885,13 +941,27 @@ void HtmlGenerator::endMemberItem()
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)
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
void endAnonTypeScope(int) {}
void startMemberItem(int);
void endMemberItem();
void startMemberTemplateParams();
void endMemberTemplateParams();
void startMemberGroupHeader(bool);
void endMemberGroupHeader();
......@@ -108,7 +110,7 @@ class HtmlGenerator : public OutputGenerator
void startMemberGroup();
void endMemberGroup(bool);
void insertMemberAlign();
void insertMemberAlign(bool);
void startMemberDescription();
void endMemberDescription();
......
......@@ -159,7 +159,7 @@ void LatexGenerator::init()
QTextStream t(&file);
if (!Config_getBool("USE_PDFLATEX")) // use plain old latex
{
t << "all: refman.dvi" << endl
t << "all clean: refman.dvi" << endl
<< endl
<< "ps: refman.ps" << endl
<< endl
......@@ -208,7 +208,7 @@ void LatexGenerator::init()
}
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 << "\tpdflatex refman.tex" << endl;
t << "\tmakeindex refman.idx" << endl;
......@@ -1391,6 +1391,7 @@ void LatexGenerator::endMemberDescription()
else
{
t << "}\\\\";
m_indent=0;
}
}
......
......@@ -98,6 +98,8 @@ class LatexGenerator : public OutputGenerator
void endAnonTypeScope(int);
void startMemberItem(int);
void endMemberItem();
void startMemberTemplateParams() {}
void endMemberTemplateParams() {}
void startMemberGroupHeader(bool);
void endMemberGroupHeader();
......@@ -106,7 +108,7 @@ class LatexGenerator : public OutputGenerator
void startMemberGroup();
void endMemberGroup(bool);
void insertMemberAlign() {}
void insertMemberAlign(bool) {}
void writeRuler() { t << endl << endl; /*t << "\\vspace{0.4cm}\\hrule\\vspace{0.2cm}" << endl; */ }
void writeAnchor(const char *fileName,const char *name);
......
......@@ -93,7 +93,7 @@ class ManGenerator : public OutputGenerator
void endMemberSections() {}
void startMemberHeader();
void endMemberHeader();
void insertMemberAlign() {}
void insertMemberAlign(bool) {}
void startMemberSubtitle() {}
void endMemberSubtitle() {}
void writeListItem();
......@@ -103,6 +103,8 @@ class ManGenerator : public OutputGenerator
void endAnonTypeScope(int);
void startMemberItem(int);
void endMemberItem();
void startMemberTemplateParams() {}
void endMemberTemplateParams() {}
void startMemberGroupHeader(bool);
void endMemberGroupHeader();
......
......@@ -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 (!hasFuncPtrType);
if (!hasFuncPtrType)
{
ol.docify(" ");
}
......@@ -886,8 +886,9 @@ void MemberDef::writeDeclaration(OutputList &ol,
ClassDef *annoClassDef=getClassDefOfAnonymousType();
// start a new member declaration
bool isAnonymous = annoClassDef || annMemb || annEnumType;
///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.
bool detailsVisible = isDetailedSectionLinkable();
......@@ -915,8 +916,9 @@ void MemberDef::writeDeclaration(OutputList &ol,
if (tArgList)
{
if (!isAnonymous) ol.startMemberTemplateParams();
writeTemplatePrefix(ol,tArgList);
//ol.lineBreak();
if (!isAnonymous) ol.endMemberTemplateParams();
}
QCString ltype(type);
......@@ -1001,7 +1003,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
}
else
{
ol.insertMemberAlign();
ol.insertMemberAlign(tArgList!=0);
}
// write name
......@@ -1433,7 +1435,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
isMutable() || (isInline() && Config_getBool("INLINE_INFO")) ||
isSignal() || isSlot() ||
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,
if (isSettable()) sl.append("set");
if (isReadable()) sl.append("read");
if (isWritable()) sl.append("write");
if (isFinal()) sl.append("final");
if (isAbstract()) sl.append("abstract");
if (protection()==Protected) sl.append("protected");
else if (protection()==Private) sl.append("private");
else if (protection()==Package) sl.append("package");
......
......@@ -132,6 +132,8 @@ class MemberDef : public Definition
bool isSettable() const { return (memSpec&Entry::Settable)!=0; }
bool isReadable() const { return (memSpec&Entry::Readable)!=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 isExternal() const { return explExt; }
bool isTemplateSpecialization() const { return tspec; }
......
......@@ -307,13 +307,15 @@ class OutputGenerator : public BaseOutputDocInterface
virtual void endAnonTypeScope(int) = 0;
virtual void startMemberItem(int) = 0;
virtual void endMemberItem() = 0;
virtual void startMemberTemplateParams() = 0;
virtual void endMemberTemplateParams() = 0;
virtual void startMemberGroupHeader(bool) = 0;
virtual void endMemberGroupHeader() = 0;
virtual void startMemberGroupDocs() = 0;
virtual void endMemberGroupDocs() = 0;
virtual void startMemberGroup() = 0;
virtual void endMemberGroup(bool) = 0;
virtual void insertMemberAlign() = 0;
virtual void insertMemberAlign(bool) = 0;
virtual void startMemberDoc(const char *,const char *,
const char *,const char *) = 0;
virtual void endMemberDoc(bool) = 0;
......
......@@ -170,6 +170,10 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startMemberItem,i1); }
void endMemberItem()
{ forall(&OutputGenerator::endMemberItem); }
void startMemberTemplateParams()
{ forall(&OutputGenerator::startMemberTemplateParams); }
void endMemberTemplateParams()
{ forall(&OutputGenerator::endMemberTemplateParams); }
void startMemberGroupHeader(bool b)
{ forall(&OutputGenerator::startMemberGroupHeader,b); }
void endMemberGroupHeader()
......@@ -182,8 +186,8 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startMemberGroup); }
void endMemberGroup(bool last)
{ forall(&OutputGenerator::endMemberGroup,last); }
void insertMemberAlign()
{ forall(&OutputGenerator::insertMemberAlign); }
void insertMemberAlign(bool templ=FALSE)
{ forall(&OutputGenerator::insertMemberAlign,templ); }
void writeRuler()
{ forall(&OutputGenerator::writeRuler); }
void writeAnchor(const char *fileName,const char *name)
......
......@@ -106,9 +106,11 @@ class RTFGenerator : public OutputGenerator
void endAnonTypeScope(int) {}
void startMemberItem(int);
void endMemberItem();
void startMemberTemplateParams() {}
void endMemberTemplateParams() {}
//void memberGroupSpacing(bool) {}
//void memberGroupSeparator() {}
void insertMemberAlign() {}
void insertMemberAlign(bool) {}
void writeRuler() { rtfwriteRuler_thin(); }
......
......@@ -1209,8 +1209,12 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
if (!insidePHP)
{
current->type += " abstract ";
current->virt = Pure;
}
else
{
current->memSpec|=Entry::Abstract;
}
current->virt = Pure;
lineCount();
}
<FindMembers>{B}*"inline"{BN}+ { current->memSpec|=Entry::Inline;
......@@ -3295,6 +3299,19 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
}
}
//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" )
{
initEntry();
......
......@@ -15,6 +15,8 @@
* Version: 1.3.8 (2004/06/30)
*
* History:
* 1.3.9
* - Updated to Doxygen 1.3.9
* 1.3.8
* - Updated to Doxygen 1.3.8
* 1.3.3:
......@@ -32,7 +34,7 @@
#ifndef TRANSLATOR_BR_H
#define TRANSLATOR_BR_H
class TranslatorBrazilian : public TranslatorAdapter_1_3_9
class TranslatorBrazilian : public Translator
{
public:
......@@ -1547,6 +1549,53 @@ class TranslatorBrazilian : public TranslatorAdapter_1_3_9
{
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
......@@ -30,9 +30,6 @@ class TranslatorSpanish : public TranslatorAdapter_1_3_8
public:
virtual QCString idLanguage()
{ 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.
* This method should return string with commands that switch
......@@ -129,12 +126,6 @@ class TranslatorSpanish : public TranslatorAdapter_1_3_8
virtual QCString trDefinedIn()
{ 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
/*! 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
virtual QCString trCompounds()
{ 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
* the page was generated
*/
......@@ -465,10 +450,6 @@ class TranslatorSpanish : public TranslatorAdapter_1_3_8
virtual QCString trDate()
{ 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. */
virtual QCString trReturns()
{ return "Devuelve"; }
......
......@@ -90,9 +90,6 @@ class TranslatorFinnish : public TranslatorEnglish
QCString idLanguage()
{ return "finnish"; }
QCString latexBabelPackage()
// returns the name of the package that is included by LaTeX
{ return "finnish"; }
QCString trRelatedFunctions()
// used in the compound documentation before a list of related functions.
......@@ -124,18 +121,6 @@ class TranslatorFinnish : public TranslatorEnglish
// header that is put before the list of member attributes.
{ 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()
// this is the text of a link put after brief descriptions.
{ return "Lisää..."; } // "More..."
......@@ -180,11 +165,6 @@ class TranslatorFinnish : public TranslatorEnglish
// put after an undocumented member in the list of all members
{ 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
QCString trModules()
// This is put above each page as a link to the list of all groups of
......@@ -349,10 +329,6 @@ class TranslatorFinnish : public TranslatorEnglish
// list of (global) variables
{ return "Enumeraation arvot"; } // "Enumeration values"
QCString trAuthor()
// This is used in man pages as the author section.
{ return "Tekijä"; } // "Author"
QCString trDefineDocumentation()
// This is used in the documentation of a file before the list of
// documentation blocks for defines
......
......@@ -85,7 +85,7 @@
// Translator class (by the local maintainer) when the localized
// translator is made up-to-date again.
class TranslatorFrench : public TranslatorAdapter_1_3_8
class TranslatorFrench : public Translator
{
public:
......@@ -1590,6 +1590,66 @@ class TranslatorFrench : public TranslatorAdapter_1_3_8
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
......@@ -37,15 +37,12 @@ class TranslatorGreek : public TranslatorAdapter_1_2_11
*/
virtual QCString idLanguage()
{ return "greek"; }
virtual QCString latexBabelPackage()
{
return "greek";
}
virtual QCString latexLanguageSupportCommand()
{
return "\\usepackage[greek,english]{babel}\n\\usepackage[iso-8859-7]{inputenc}\n";
}
virtual QCString latexLanguageSupportCommand()
{
return "\\usepackage[greek,english]{babel}\n\\usepackage[iso-8859-7]{inputenc}\n";
}
/*! return the language charset. This will be used for the HTML output */
virtual QCString idLanguageCharset()
{
......
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