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

Release-1.4.7-20060716

parent 9dbdf881
DOXYGEN Version 1.4.7 DOXYGEN Version 1.4.7-20060716
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 (11 June 2006) Dimitri van Heesch (16 July 2006)
DOXYGEN Version 1.4.7 DOXYGEN Version 1.4.7_20060716
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) (11 June 2006) Dimitri van Heesch (dimitri@stack.nl) (16 July 2006)
...@@ -70,7 +70,7 @@ void setDotPath() ...@@ -70,7 +70,7 @@ void setDotPath()
if (checkIfDotInstalled()) if (checkIfDotInstalled())
{ {
Config_getString("DOT_PATH")=DOT_PATH; Config_getString("DOT_PATH")=DOT_PATH;
Config_getBool("HAVE_DOT")=TRUE; //Config_getBool("HAVE_DOT")=TRUE;
} }
} }
......
...@@ -20,7 +20,7 @@ doxygen_version_minor=4 ...@@ -20,7 +20,7 @@ doxygen_version_minor=4
doxygen_version_revision=7 doxygen_version_revision=7
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package. #NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn=NO doxygen_version_mmn=20060716
bin_dirs=`echo $PATH | sed -e "s/:/ /g"` bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
...@@ -35,7 +35,7 @@ f_insttool=NO ...@@ -35,7 +35,7 @@ f_insttool=NO
f_english=NO f_english=NO
f_wizard=NO f_wizard=NO
f_thread=NO f_thread=NO
f_langs=nl,se,cz,fr,id,it,de,jp,je,es,fi,ru,hr,pl,pt,hu,kr,ke,ro,si,cn,no,br,dk,sk,ua,gr,tw,sr,ca,lt,za f_langs=nl,se,cz,fr,id,it,de,jp,je,es,fi,ru,hr,pl,pt,hu,kr,ke,ro,si,cn,no,br,dk,sk,ua,gr,tw,sr,ca,lt,za,ar,fa
while test -n "$1"; do while test -n "$1"; do
case $1 in case $1 in
...@@ -587,7 +587,7 @@ fi ...@@ -587,7 +587,7 @@ fi
echo -n " Generating src/lang_cfg.h..." echo -n " Generating src/lang_cfg.h..."
echo $f_langs | $f_perl -e '@l=split(/,/,<STDIN>); echo $f_langs | $f_perl -e '@l=split(/,/,<STDIN>);
chomp @l; chomp @l;
@allowed=(split(/,/,"NL,SE,CZ,FR,ID,IT,DE,JP,JE,ES,FI,RU,HR,PL,PT,HU,KR,KE,RO,SI,CN,NO,BR,DK,SK,UA,GR,TW,SR,CA,LT,ZA")); @allowed=(split(/,/,"NL,SE,CZ,FR,ID,IT,DE,JP,JE,ES,FI,RU,HR,PL,PT,HU,KR,KE,RO,SI,CN,NO,BR,DK,SK,UA,GR,TW,SR,CA,LT,ZA,AR,FA"));
foreach my $elem (@l){ foreach my $elem (@l){
$elem =~ tr/a-z/A-Z/; $elem =~ tr/a-z/A-Z/;
$r=0; $r=0;
......
...@@ -267,10 +267,10 @@ followed by the descriptions of the tags grouped by category. ...@@ -267,10 +267,10 @@ followed by the descriptions of the tags grouped by category.
documentation generated by doxygen is written. Doxygen will use this documentation generated by doxygen is written. Doxygen will use this
information to generate all constant output in the proper language. information to generate all constant output in the proper language.
The default language is English, other supported languages are: The default language is English, other supported languages are:
Brazilian, Catalan, Chinese, Croatian, Czech, Danish, Dutch, Finnish, French, Afrikaans, Arabic, Brazilian, Catalan, Chinese, Croatian, Czech, Danish, Dutch,
German, Greek, Hungarian, Italian, Japanese, Korean, Lithuanian, Norwegian, Finnish, French, German, Greek, Hungarian, Italian, Japanese, Korean,
Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Lithuanian, Norwegian, Persian, Polish, Portuguese, Romanian, Russian, Serbian,
Swedish, and Ukrainian. Slovak, Slovene, Spanish, Swedish, and Ukrainian.
\anchor cfg_use_windows_encoding \anchor cfg_use_windows_encoding
<dt>\c USE_WINDOWS_ENCODING <dd> <dt>\c USE_WINDOWS_ENCODING <dd>
......
...@@ -23,13 +23,13 @@ text fragments, generated by doxygen, can be produced in languages other ...@@ -23,13 +23,13 @@ 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.4.7), 31 languages Currently (version 1.4.7), 33 languages
are supported (sorted alphabetically): are supported (sorted alphabetically):
Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese Afrikaans, Arabic, Brazilian Portuguese, Catalan, Chinese, Chinese
Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French, Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French,
German, Greek, Hungarian, Indonesian, Italian, Japanese (+En), Korean German, Greek, Hungarian, Indonesian, Italian, Japanese (+En), Korean
(+En), Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, (+En), Lithuanian, Norwegian, Persian, Polish, Portuguese, Romanian,
Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.. Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian..
The table of information related to the supported languages follows. The table of information related to the supported languages follows.
It is sorted by language alphabetically. The <b>Status</b> column It is sorted by language alphabetically. The <b>Status</b> column
...@@ -56,41 +56,47 @@ when the translator was updated. ...@@ -56,41 +56,47 @@ when the translator was updated.
<td>johan at zippysnoek dot com</td> <td>johan at zippysnoek dot com</td>
<td>1.4.6</td> <td>1.4.6</td>
</tr> </tr>
<tr bgcolor="#ffffff">
<td>Arabic</td>
<td>Moaz Reyad</td>
<td><moazreyad at yahoo dot com></td>
<td>1.4.6</td>
</tr>
<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>jun-chino at uol dot com dot br</td> <td>jun-chino at uol dot com dot br</td>
<td>1.4.6</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Catalan</td> <td>Catalan</td>
<td>Maximiliano Pin<br>Albert Mora</td> <td>Maximiliano Pin<br>Albert Mora</td>
<td>mcpin at emtesistemas dot com<br>amora at iua dot upf dot es</td> <td>mcpin at emtesistemas dot com<br>amora at iua dot upf dot es</td>
<td>1.4.6</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<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.4.1</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Chinese Traditional</td> <td>Chinese Traditional</td>
<td>Daniel YC Lin<br>Gary Lee</td> <td>Daniel YC Lin<br>Gary Lee</td>
<td>daniel at twpda dot com<br>garylee at ecosine dot com dot tw</td> <td>dlin at taifex dot com dot tw<br>garywlee at gmail dot com</td>
<td>1.4.6</td> <td>1.4.6</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Croatian</td> <td>Croatian</td>
<td>Boris Bralo</td> <td>Boris Bralo</td>
<td>boris.bralo at zg dot htnet dot hr</td> <td>boris.bralo at zg dot htnet dot hr</td>
<td>1.4.6</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Czech</td> <td>Czech</td>
<td>Petr P&#x0159;ikryl</td> <td>Petr P&#x0159;ikryl</td>
<td>prikrylp at skil dot cz</td> <td>prikrylp at skil dot cz</td>
<td>1.4.6</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Danish</td> <td>Danish</td>
...@@ -126,7 +132,7 @@ when the translator was updated. ...@@ -126,7 +132,7 @@ when the translator was updated.
<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.4.6</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Greek</td> <td>Greek</td>
...@@ -150,7 +156,7 @@ when the translator was updated. ...@@ -150,7 +156,7 @@ when the translator was updated.
<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.4.6</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Japanese</td> <td>Japanese</td>
...@@ -188,6 +194,12 @@ when the translator was updated. ...@@ -188,6 +194,12 @@ when the translator was updated.
<td>lejordet at gmail dot com</td> <td>lejordet at gmail dot com</td>
<td>1.4.6</td> <td>1.4.6</td>
</tr> </tr>
<tr bgcolor="#ffffff">
<td>Persian</td>
<td>Ali Nadalizadeh</td>
<td><nadalisoft at yahoo dot com></td>
<td>1.4.6</td>
</tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Polish</td> <td>Polish</td>
<td>Piotr Kaminski<br>Grzegorz Kowal</td> <td>Piotr Kaminski<br>Grzegorz Kowal</td>
...@@ -210,7 +222,7 @@ when the translator was updated. ...@@ -210,7 +222,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.4.6</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Serbian</td> <td>Serbian</td>
...@@ -265,20 +277,22 @@ when the translator was updated. ...@@ -265,20 +277,22 @@ when the translator was updated.
\hline \hline
Afrikaans & Johan Prinsloo & {\tt\tiny johan@zippysnoek.com} & 1.4.6 \\ Afrikaans & Johan Prinsloo & {\tt\tiny johan@zippysnoek.com} & 1.4.6 \\
\hline \hline
Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino@uol.com.br} & 1.4.6 \\ Arabic & Moaz Reyad & {\tt\tiny <moazreyad@yahoo.com>} & 1.4.6 \\
\hline
Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino@uol.com.br} & up-to-date \\
\hline \hline
Catalan & Maximiliano Pin & {\tt\tiny mcpin@emtesistemas.com} & 1.4.6 \\ Catalan & Maximiliano Pin & {\tt\tiny mcpin@emtesistemas.com} & up-to-date \\
~ & Albert Mora & {\tt\tiny amora@iua.upf.es} & ~ \\ ~ & Albert Mora & {\tt\tiny amora@iua.upf.es} & ~ \\
\hline \hline
Chinese & Li Daobing & {\tt\tiny lidaobing@gmail.com} & 1.4.1 \\ 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.4.6 \\ Chinese Traditional & Daniel YC Lin & {\tt\tiny dlin@taifex.com.tw} & 1.4.6 \\
~ & Gary Lee & {\tt\tiny garylee@ecosine.com.tw} & ~ \\ ~ & Gary Lee & {\tt\tiny garywlee@gmail.com} & ~ \\
\hline \hline
Croatian & Boris Bralo & {\tt\tiny boris.bralo@zg.htnet.hr} & 1.4.6 \\ 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} & 1.4.6 \\ Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & up-to-date \\
\hline \hline
Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny eriksoe+doxygen@daimi.au.dk} & 1.3.9 \\ Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny eriksoe+doxygen@daimi.au.dk} & 1.3.9 \\
\hline \hline
...@@ -290,7 +304,7 @@ when the translator was updated. ...@@ -290,7 +304,7 @@ when the translator was updated.
\hline \hline
French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & 1.4.6 \\ French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & 1.4.6 \\
\hline \hline
German & Jens Seidel & {\tt\tiny jensseidel@users.sf.net} & 1.4.6 \\ 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
...@@ -299,7 +313,7 @@ when the translator was updated. ...@@ -299,7 +313,7 @@ when the translator was updated.
\hline \hline
Indonesian & Hendy Irawan & {\tt\tiny ceefour@gauldong.net} & 1.4.6 \\ Indonesian & Hendy Irawan & {\tt\tiny ceefour@gauldong.net} & 1.4.6 \\
\hline \hline
Italian & Alessandro Falappa & {\tt\tiny alessandro@falappa.net} & 1.4.6 \\ 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.4.6 \\ Japanese & Ryunosuke Satoh & {\tt\tiny sun594@hotmail.com} & 1.4.6 \\
...@@ -319,6 +333,8 @@ when the translator was updated. ...@@ -319,6 +333,8 @@ when the translator was updated.
\hline \hline
Norwegian & Lars Erik Jordet & {\tt\tiny lejordet@gmail.com} & 1.4.6 \\ Norwegian & Lars Erik Jordet & {\tt\tiny lejordet@gmail.com} & 1.4.6 \\
\hline \hline
Persian & Ali Nadalizadeh & {\tt\tiny <nadalisoft@yahoo.com>} & 1.4.6 \\
\hline
Polish & Piotr Kaminski & {\tt\tiny Piotr.Kaminski@ctm.gdynia.pl} & 1.4.6 \\ Polish & Piotr Kaminski & {\tt\tiny Piotr.Kaminski@ctm.gdynia.pl} & 1.4.6 \\
~ & Grzegorz Kowal & {\tt\tiny g\_kowal@poczta.onet.pl} & ~ \\ ~ & Grzegorz Kowal & {\tt\tiny g\_kowal@poczta.onet.pl} & ~ \\
\hline \hline
...@@ -326,7 +342,7 @@ when the translator was updated. ...@@ -326,7 +342,7 @@ when the translator was updated.
\hline \hline
Romanian & Alexandru Iosup & {\tt\tiny aiosup@yahoo.com} & 1.4.1 \\ Romanian & Alexandru Iosup & {\tt\tiny aiosup@yahoo.com} & 1.4.1 \\
\hline \hline
Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & 1.4.6 \\ Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & up-to-date \\
\hline \hline
Serbian & Dejan Milosavljevic & {\tt\tiny dmilos@email.com} & 1.4.1 \\ Serbian & Dejan Milosavljevic & {\tt\tiny dmilos@email.com} & 1.4.1 \\
\hline \hline
......
...@@ -12,6 +12,9 @@ ...@@ -12,6 +12,9 @@
TranslatorAfrikaans TranslatorAfrikaans
Johan Prinsloo: johan@zippysnoek.com Johan Prinsloo: johan@zippysnoek.com
TranslatorArabic
Moaz Reyad: <moazreyad@yahoo.com>
TranslatorBrazilian TranslatorBrazilian
Fabio "FJTC" Jun Takada Chino: jun-chino@uol.com.br Fabio "FJTC" Jun Takada Chino: jun-chino@uol.com.br
...@@ -24,8 +27,8 @@ Li Daobing: lidaobing@gmail.com ...@@ -24,8 +27,8 @@ Li Daobing: lidaobing@gmail.com
Wei Liu: liuwei@asiainfo.com Wei Liu: liuwei@asiainfo.com
TranslatorChinesetraditional TranslatorChinesetraditional
Daniel YC Lin: daniel@twpda.com Daniel YC Lin: dlin@taifex.com.tw
Gary Lee: garylee@ecosine.com.tw Gary Lee: garywlee@gmail.com
TranslatorCroatian TranslatorCroatian
Boris Bralo: boris.bralo@zg.htnet.hr Boris Bralo: boris.bralo@zg.htnet.hr
...@@ -82,6 +85,9 @@ Aidas Berukstis: aidasber@takas.lt ...@@ -82,6 +85,9 @@ Aidas Berukstis: aidasber@takas.lt
TranslatorNorwegian TranslatorNorwegian
Lars Erik Jordet: lejordet@gmail.com Lars Erik Jordet: lejordet@gmail.com
TranslatorPersian
Ali Nadalizadeh: <nadalisoft@yahoo.com>
TranslatorPolish TranslatorPolish
Piotr Kaminski: Piotr.Kaminski@ctm.gdynia.pl Piotr Kaminski: Piotr.Kaminski@ctm.gdynia.pl
Grzegorz Kowal: g_kowal@poczta.onet.pl Grzegorz Kowal: g_kowal@poczta.onet.pl
......
(1.4.7) (1.4.7)
Doxygen supports the following 31 languages (sorted alphabetically): Doxygen supports the following 33 languages (sorted alphabetically):
Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese Afrikaans, Arabic, Brazilian Portuguese, Catalan, Chinese, Chinese
Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French, Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French,
German, Greek, Hungarian, Indonesian, Italian, Japanese (+En), Korean German, Greek, Hungarian, Indonesian, Italian, Japanese (+En), Korean
(+En), Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, (+En), Lithuanian, Norwegian, Persian, Polish, Portuguese, Romanian,
Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
Of them, 2 translators are up-to-date, 29 translators are based on Of them, 10 translators are up-to-date, 23 translators are based on
some adapter class, and 2 are English based. some adapter class, and 2 are English based.
---------------------------------------------------------------------- ----------------------------------------------------------------------
...@@ -17,8 +17,16 @@ alphabetically). This means that they derive from the Translator class ...@@ -17,8 +17,16 @@ alphabetically). This means that they derive from the Translator class
and they implement all 194 of the required methods. Anyway, there and they implement all 194 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 -- Remove the obsolete methods (never used).
TranslatorCatalan
TranslatorChinese
TranslatorCroatian
TranslatorCzech
TranslatorDutch -- Remove the obsolete methods (never used). TranslatorDutch -- Remove the obsolete methods (never used).
TranslatorEnglish -- Remove the obsolete methods (never used). TranslatorEnglish -- Remove the obsolete methods (never used).
TranslatorGerman
TranslatorItalian -- Change the base class to Translator.
TranslatorRussian
---------------------------------------------------------------------- ----------------------------------------------------------------------
The following translator classes need some maintenance (the most The following translator classes need some maintenance (the most
...@@ -29,27 +37,21 @@ must be implemented to become up-to-date: ...@@ -29,27 +37,21 @@ must be implemented to become up-to-date:
TranslatorSwedish 1.4.6 2 methods to implement TranslatorSwedish 1.4.6 2 methods to implement
TranslatorSpanish 1.4.6 1 method to implement TranslatorSpanish 1.4.6 1 method to implement
TranslatorSlovene 1.4.6 2 methods to implement TranslatorSlovene 1.4.6 2 methods to implement
TranslatorRussian 1.4.6 2 methods to implement
TranslatorPolish 1.4.6 1 method to implement TranslatorPolish 1.4.6 1 method to implement
TranslatorPersian 1.4.6 1 method to implement
TranslatorNorwegian 1.4.6 1 method to implement TranslatorNorwegian 1.4.6 1 method to implement
TranslatorLithuanian 1.4.6 2 methods to implement TranslatorLithuanian 1.4.6 2 methods to implement
TranslatorKorean 1.4.6 2 methods to implement TranslatorKorean 1.4.6 2 methods to implement
TranslatorJapanese 1.4.6 1 method to implement TranslatorJapanese 1.4.6 1 method to implement
TranslatorItalian 1.4.6 1 method to implement
TranslatorIndonesian 1.4.6 1 method to implement TranslatorIndonesian 1.4.6 1 method to implement
TranslatorHungarian 1.4.6 2 methods to implement TranslatorHungarian 1.4.6 2 methods to implement
TranslatorGerman 1.4.6 2 methods to implement
TranslatorFrench 1.4.6 1 method to implement TranslatorFrench 1.4.6 1 method to implement
TranslatorCzech 1.4.6 1 method to implement
TranslatorCroatian 1.4.6 2 methods to implement
TranslatorChinesetraditional 1.4.6 1 method to implement TranslatorChinesetraditional 1.4.6 1 method to implement
TranslatorCatalan 1.4.6 2 methods to implement TranslatorArabic 1.4.6 1 method to implement
TranslatorBrazilian 1.4.6 1 method to implement
TranslatorAfrikaans 1.4.6 2 methods to implement TranslatorAfrikaans 1.4.6 2 methods to implement
TranslatorUkrainian 1.4.1 2 methods to implement TranslatorUkrainian 1.4.1 2 methods to implement
TranslatorSerbian 1.4.1 2 methods to implement TranslatorSerbian 1.4.1 2 methods to implement
TranslatorRomanian 1.4.1 2 methods to implement TranslatorRomanian 1.4.1 2 methods to implement
TranslatorChinese 1.4.1 3 methods to implement
TranslatorDanish 1.3.9 8 methods to implement TranslatorDanish 1.3.9 8 methods to implement
TranslatorPortuguese 1.3.3 13 methods to implement TranslatorPortuguese 1.3.3 13 methods to implement
TranslatorSlovak 1.2.18 22 methods to implement TranslatorSlovak 1.2.18 22 methods to implement
...@@ -81,8 +83,8 @@ TranslatorAfrikaans (TranslatorAdapter_1_4_6) 2 methods to implement ...@@ -81,8 +83,8 @@ TranslatorAfrikaans (TranslatorAdapter_1_4_6) 2 methods to implement
virtual QCString trEnumerationValueDocumentation() virtual QCString trEnumerationValueDocumentation()
TranslatorBrazilian (TranslatorAdapter_1_4_6) 1 method to implement TranslatorArabic (TranslatorAdapter_1_4_6) 1 method to implement
------------------- ----------------
Implements 193 of the required methods. Implements 193 of the required methods.
...@@ -93,7 +95,7 @@ TranslatorBrazilian (TranslatorAdapter_1_4_6) 1 method to implement ...@@ -93,7 +95,7 @@ TranslatorBrazilian (TranslatorAdapter_1_4_6) 1 method to implement
Obsolete methods (should be removed, never used): Obsolete methods (should be removed, never used):
virtual QCString trHeaderFilesDescription() virtual QCString trHeaderFilesDescription()
virtual QCString trField(bool first_capital, bool singular) virtual QCString trField(bool/*first_capital*/, bool singular)
virtual QCString trPackageDocumentation() virtual QCString trPackageDocumentation()
virtual QCString trSources() virtual QCString trSources()
virtual QCString trReimplementedForInternalReasons() virtual QCString trReimplementedForInternalReasons()
...@@ -103,27 +105,22 @@ TranslatorBrazilian (TranslatorAdapter_1_4_6) 1 method to implement ...@@ -103,27 +105,22 @@ TranslatorBrazilian (TranslatorAdapter_1_4_6) 1 method to implement
virtual QCString trNoDescriptionAvailable() virtual QCString trNoDescriptionAvailable()
TranslatorCatalan (TranslatorAdapter_1_4_6) 2 methods to implement TranslatorBrazilian (Translator)
----------------- -------------------
Implements 192 of the required methods.
Missing methods (should be implemented):
virtual QCString trCallerGraph()
virtual QCString trEnumerationValueDocumentation()
TranslatorChinese (TranslatorAdapter_1_4_1) 3 methods to implement
-----------------
Implements 191 of the required methods. Implements 194 of the required methods.
Missing methods (should be implemented): Obsolete methods (should be removed, never used):
virtual QCString trOverloadText() virtual QCString trHeaderFilesDescription()
virtual QCString trCallerGraph() virtual QCString trField(bool first_capital, bool singular)
virtual QCString trEnumerationValueDocumentation() virtual QCString trPackageDocumentation()
virtual QCString trSources()
virtual QCString trReimplementedForInternalReasons()
virtual QCString trInterfaces()
virtual QCString trHeaderFiles()
virtual QCString trBugsAndLimitations()
virtual QCString trNoDescriptionAvailable()
TranslatorChinesetraditional (TranslatorAdapter_1_4_6) 1 method to implement TranslatorChinesetraditional (TranslatorAdapter_1_4_6) 1 method to implement
...@@ -148,27 +145,6 @@ TranslatorChinesetraditional (TranslatorAdapter_1_4_6) 1 method to implement ...@@ -148,27 +145,6 @@ TranslatorChinesetraditional (TranslatorAdapter_1_4_6) 1 method to implement
virtual QCString trNoDescriptionAvailable() virtual QCString trNoDescriptionAvailable()
TranslatorCroatian (TranslatorAdapter_1_4_6) 2 methods to implement
------------------
Implements 192 of the required methods.
Missing methods (should be implemented):
virtual QCString trCallerGraph()
virtual QCString trEnumerationValueDocumentation()
TranslatorCzech (TranslatorAdapter_1_4_6) 1 method to implement
---------------
Implements 193 of the required methods.
Missing methods (should be implemented):
virtual QCString trEnumerationValueDocumentation()
TranslatorDanish (TranslatorAdapter_1_3_9) 8 methods to implement TranslatorDanish (TranslatorAdapter_1_3_9) 8 methods to implement
---------------- ----------------
...@@ -372,17 +348,6 @@ TranslatorFrench (TranslatorAdapter_1_4_6) 1 method to implement ...@@ -372,17 +348,6 @@ TranslatorFrench (TranslatorAdapter_1_4_6) 1 method to implement
virtual QCString trNoDescriptionAvailable() virtual QCString trNoDescriptionAvailable()
TranslatorGerman (TranslatorAdapter_1_4_6) 2 methods to implement
----------------
Implements 192 of the required methods.
Missing methods (should be implemented):
virtual QCString trCallerGraph()
virtual QCString trEnumerationValueDocumentation()
TranslatorGreek (TranslatorAdapter_1_2_11) 27 methods to implement TranslatorGreek (TranslatorAdapter_1_2_11) 27 methods to implement
--------------- ---------------
...@@ -464,14 +429,10 @@ TranslatorIndonesian (TranslatorAdapter_1_4_6) 1 method to implement ...@@ -464,14 +429,10 @@ TranslatorIndonesian (TranslatorAdapter_1_4_6) 1 method to implement
virtual QCString trNoDescriptionAvailable() virtual QCString trNoDescriptionAvailable()
TranslatorItalian (TranslatorAdapter_1_4_6) 1 method to implement TranslatorItalian (TranslatorAdapter_1_4_6)
----------------- -----------------
Implements 193 of the required methods. Implements 194 of the required methods.
Missing methods (should be implemented):
virtual QCString trEnumerationValueDocumentation()
TranslatorJapanese (TranslatorAdapter_1_4_6) 1 method to implement TranslatorJapanese (TranslatorAdapter_1_4_6) 1 method to implement
...@@ -568,6 +529,28 @@ TranslatorNorwegian (TranslatorAdapter_1_4_6) 1 method to implement ...@@ -568,6 +529,28 @@ TranslatorNorwegian (TranslatorAdapter_1_4_6) 1 method to implement
virtual QCString trNoDescriptionAvailable() virtual QCString trNoDescriptionAvailable()
TranslatorPersian (TranslatorAdapter_1_4_6) 1 method to implement
-----------------
Implements 193 of the required methods.
Missing methods (should be implemented):
virtual QCString trCallerGraph()
Obsolete methods (should be removed, never used):
virtual QCString trHeaderFilesDescription()
virtual QCString trField(bool first_capital, bool singular)
virtual QCString trPackageDocumentation()
virtual QCString trSources()
virtual QCString trReimplementedForInternalReasons()
virtual QCString trInterfaces()
virtual QCString trHeaderFiles()
virtual QCString trBugsAndLimitations()
virtual QCString trNoDescriptionAvailable()
TranslatorPolish (TranslatorAdapter_1_4_6) 1 method to implement TranslatorPolish (TranslatorAdapter_1_4_6) 1 method to implement
---------------- ----------------
...@@ -647,17 +630,6 @@ TranslatorRomanian (TranslatorAdapter_1_4_1) 2 methods to implement ...@@ -647,17 +630,6 @@ TranslatorRomanian (TranslatorAdapter_1_4_1) 2 methods to implement
virtual QCString trNoDescriptionAvailable() virtual QCString trNoDescriptionAvailable()
TranslatorRussian (TranslatorAdapter_1_4_6) 2 methods to implement
-----------------
Implements 192 of the required methods.
Missing methods (should be implemented):
virtual QCString trCallerGraph()
virtual QCString trEnumerationValueDocumentation()
TranslatorSerbian (TranslatorAdapter_1_4_1) 2 methods to implement TranslatorSerbian (TranslatorAdapter_1_4_1) 2 methods to implement
----------------- -----------------
......
...@@ -94,6 +94,9 @@ public: ...@@ -94,6 +94,9 @@ public:
int handle() const; int handle() const;
int64 pos() const;
bool seek(int64 pos);
protected: protected:
QString fn; QString fn;
FILE *fh; FILE *fh;
......
...@@ -632,3 +632,24 @@ void QFile::close() ...@@ -632,3 +632,24 @@ void QFile::close()
return; return;
} }
int64 QFile::pos() const
{
if (isOpen())
{
// TODO: support 64 bit size
return ftell( fh );
}
return -1;
}
bool QFile::seek( int64 pos )
{
if (isOpen())
{
// TODO: support 64 bit size
return fseek( fh, pos, SEEK_SET )!=-1;
}
return FALSE;
}
...@@ -591,3 +591,26 @@ void QFile::close() ...@@ -591,3 +591,26 @@ void QFile::close()
return; return;
} }
int64 QFile::pos() const
{
if (isOpen())
{
// TODO: support 64 bit size
return ftell( fh );
}
return -1;
}
bool QFile::seek( int64 pos )
{
if (isOpen())
{
// TODO: support 64 bit size
return fseek( fh, pos, SEEK_SET )!=-1;
}
return FALSE;
}
...@@ -336,6 +336,13 @@ typedef unsigned long ulong; ...@@ -336,6 +336,13 @@ typedef unsigned long ulong;
typedef char *pchar; typedef char *pchar;
typedef uchar *puchar; typedef uchar *puchar;
typedef const char *pcchar; typedef const char *pcchar;
#if defined(_OS_WIN32_) && !defined(_CC_GNU_)
typedef __int64 int64;
typedef unsigned __int64 uint64;
#else
typedef long long int64;
typedef unsigned long long uint64;
#endif
// //
......
This diff is collapsed.
...@@ -227,46 +227,46 @@ class ClassDef : public Definition ...@@ -227,46 +227,46 @@ class ClassDef : public Definition
QCString className() const; QCString className() const;
/* member lists by protection */ /* member lists by protection */
MemberList pubMethods; MemberList *pubMethods;
MemberList proMethods; MemberList *proMethods;
MemberList pacMethods; MemberList *pacMethods;
MemberList priMethods; MemberList *priMethods;
MemberList pubStaticMethods; MemberList *pubStaticMethods;
MemberList proStaticMethods; MemberList *proStaticMethods;
MemberList pacStaticMethods; MemberList *pacStaticMethods;
MemberList priStaticMethods; MemberList *priStaticMethods;
MemberList pubSlots; MemberList *pubSlots;
MemberList proSlots; MemberList *proSlots;
MemberList priSlots; MemberList *priSlots;
MemberList pubAttribs; MemberList *pubAttribs;
MemberList proAttribs; MemberList *proAttribs;
MemberList pacAttribs; MemberList *pacAttribs;
MemberList priAttribs; MemberList *priAttribs;
MemberList pubStaticAttribs; MemberList *pubStaticAttribs;
MemberList proStaticAttribs; MemberList *proStaticAttribs;
MemberList pacStaticAttribs; MemberList *pacStaticAttribs;
MemberList priStaticAttribs; MemberList *priStaticAttribs;
MemberList pubTypes; MemberList *pubTypes;
MemberList proTypes; MemberList *proTypes;
MemberList pacTypes; MemberList *pacTypes;
MemberList priTypes; MemberList *priTypes;
MemberList related; MemberList *related;
MemberList signals; MemberList *signals;
MemberList friends; MemberList *friends;
MemberList dcopMethods; MemberList *dcopMethods;
MemberList properties; MemberList *properties;
MemberList events; MemberList *events;
/* member list by types */ /* member list by types */
MemberList constructors; MemberList *constructors;
MemberList typedefMembers; MemberList *typedefMembers;
MemberList enumMembers; MemberList *enumMembers;
MemberList enumValMembers; MemberList *enumValMembers;
MemberList functionMembers; MemberList *functionMembers;
MemberList relatedMembers; MemberList *relatedMembers;
MemberList variableMembers; MemberList *variableMembers;
MemberList propertyMembers; MemberList *propertyMembers;
MemberList eventMembers; MemberList *eventMembers;
/* user defined member groups */ /* user defined member groups */
MemberGroupSDict *memberGroupSDict; MemberGroupSDict *memberGroupSDict;
...@@ -354,6 +354,7 @@ class ClassDef : public Definition ...@@ -354,6 +354,7 @@ class ClassDef : public Definition
private: private:
void internalInsertMember(MemberDef *md,Protection prot,bool addToAllList); void internalInsertMember(MemberDef *md,Protection prot,bool addToAllList);
QCString getMemberListFileName() const;
/*! file name that forms the base for the output file containing the /*! file name that forms the base for the output file containing the
* class documentation. For compatibility with Qt (e.g. links via tag * class documentation. For compatibility with Qt (e.g. links via tag
...@@ -369,7 +370,7 @@ class ClassDef : public Definition ...@@ -369,7 +370,7 @@ class ClassDef : public Definition
/*! file name that forms the base for the "list of members" for this /*! file name that forms the base for the "list of members" for this
* class. * class.
*/ */
QCString m_memListFileName; //QCString m_memListFileName;
/*! Bare name of the class without any scoping prefixes /*! Bare name of the class without any scoping prefixes
* (like for nested classes and classes inside namespaces) * (like for nested classes and classes inside namespaces)
...@@ -414,12 +415,6 @@ class ClassDef : public Definition ...@@ -414,12 +415,6 @@ class ClassDef : public Definition
*/ */
Protection m_prot; Protection m_prot;
/*! Does this class group its user-grouped members
* as a sub-section of the normal (public/protected/..)
* groups?
*/
bool m_subGrouping;
/*! The inner classes contained in this class. Will be 0 if there are /*! The inner classes contained in this class. Will be 0 if there are
* no inner classes. * no inner classes.
*/ */
...@@ -447,6 +442,14 @@ class ClassDef : public Definition ...@@ -447,6 +442,14 @@ class ClassDef : public Definition
/*! The class this class is an instance of. */ /*! The class this class is an instance of. */
ClassDef *m_templateMaster; ClassDef *m_templateMaster;
/*! class name with outer class scope, but without namespace scope. */
QCString m_className;
/*! If this class is a Objective-C category, then this points to the
* class which is extended.
*/
ClassDef *m_categoryOf;
/*! Indicated whether this class exists because it is used by /*! Indicated whether this class exists because it is used by
* some other class only (TRUE) or if some class inherits from * some other class only (TRUE) or if some class inherits from
* it (FALSE). This is need to remove used-only classes from * it (FALSE). This is need to remove used-only classes from
...@@ -469,15 +472,14 @@ class ClassDef : public Definition ...@@ -469,15 +472,14 @@ class ClassDef : public Definition
/*! TRUE if the class is defined in a source file rather than a header file. */ /*! TRUE if the class is defined in a source file rather than a header file. */
bool m_isLocal; bool m_isLocal;
/*! class name with outer class scope, but without namespace scope. */ bool m_isTemplArg;
QCString m_className;
/*! If this class is a Objective-C category, then this points to the /*! Does this class group its user-grouped members
* class which is extended. * as a sub-section of the normal (public/protected/..)
* groups?
*/ */
ClassDef *m_categoryOf; bool m_subGrouping;
bool m_isTemplArg;
}; };
/*! \brief Class that contains information about a usage relation. /*! \brief Class that contains information about a usage relation.
......
...@@ -132,8 +132,8 @@ CommandMap htmlTagMap[] = ...@@ -132,8 +132,8 @@ CommandMap htmlTagMap[] =
{ "ol", HTML_OL }, { "ol", HTML_OL },
{ "ul", HTML_UL }, { "ul", HTML_UL },
{ "li", HTML_LI }, { "li", HTML_LI },
{ "tt", HTML_CODE }, { "tt", XML_C /*HTML_CODE*/ },
{ "kbd", HTML_CODE }, { "kbd", XML_C /*HTML_CODE*/ },
{ "em", HTML_EMPHASIS }, { "em", HTML_EMPHASIS },
{ "hr", HTML_HR }, { "hr", HTML_HR },
{ "dl", HTML_DL }, { "dl", HTML_DL },
......
...@@ -1076,13 +1076,16 @@ static void generateMemberLink(CodeOutputInterface &ol,const QCString &varName, ...@@ -1076,13 +1076,16 @@ static void generateMemberLink(CodeOutputInterface &ol,const QCString &varName,
//printf("Found result!\n"); //printf("Found result!\n");
return; return;
} }
BaseClassListIterator bcli(*vcd->baseClasses()); if (vcd->baseClasses())
for ( ; bcli.current() ; ++bcli)
{ {
if (getLink(bcli.current()->classDef->name(),memName,ol)) BaseClassListIterator bcli(*vcd->baseClasses());
for ( ; bcli.current() ; ++bcli)
{ {
//printf("Found result!\n"); if (getLink(bcli.current()->classDef->name(),memName,ol))
return; {
//printf("Found result!\n");
return;
}
} }
} }
} }
...@@ -1176,12 +1179,15 @@ static void generateFunctionLink(CodeOutputInterface &ol,char *funcName) ...@@ -1176,12 +1179,15 @@ static void generateFunctionLink(CodeOutputInterface &ol,char *funcName)
if (!locScope.isEmpty() && (ccd=g_codeClassSDict[locScope])) if (!locScope.isEmpty() && (ccd=g_codeClassSDict[locScope]))
{ {
//printf("using classScope %s\n",g_classScope.data()); //printf("using classScope %s\n",g_classScope.data());
BaseClassListIterator bcli(*ccd->baseClasses()); if (ccd->baseClasses())
for ( ; bcli.current() ; ++bcli)
{ {
if (getLink(bcli.current()->classDef->name(),locFunc,ol,funcName)) BaseClassListIterator bcli(*ccd->baseClasses());
for ( ; bcli.current() ; ++bcli)
{ {
return; if (getLink(bcli.current()->classDef->name(),locFunc,ol,funcName))
{
return;
}
} }
} }
} }
......
...@@ -370,7 +370,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) ...@@ -370,7 +370,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
BEGIN(g_lastCommentContext); BEGIN(g_lastCommentContext);
} }
} }
<VerbatimCode>^"//"[\!\/]? { /* skip leading comments */ <VerbatimCode>^[ \t]*"//"[\!\/]? { /* skip leading comments */
if (!g_inSpecialComment) if (!g_inSpecialComment)
{ {
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
......
...@@ -2326,10 +2326,11 @@ void groupLeaveCompound(const char *,int,const char *) ...@@ -2326,10 +2326,11 @@ void groupLeaveCompound(const char *,int,const char *)
void openGroup(Entry *e,const char *,int) void openGroup(Entry *e,const char *,int)
{ {
//printf("==> openGroup(name=%s,sec=%x)\n",e->name.data(),e->section);
if (e->section==Entry::GROUPDOC_SEC) // auto group if (e->section==Entry::GROUPDOC_SEC) // auto group
{ {
g_autoGroupStack.push(new Grouping(e->name,e->groupingPri())); g_autoGroupStack.push(new Grouping(e->name,e->groupingPri()));
printf("==> openGroup(name=%s,sec=%x) g_autoGroupStack=%d\n",
e->name.data(),e->section,g_autoGroupStack.count());
} }
else // start of a member group else // start of a member group
{ {
...@@ -2346,18 +2347,13 @@ void openGroup(Entry *e,const char *,int) ...@@ -2346,18 +2347,13 @@ void openGroup(Entry *e,const char *,int)
g_memberGroupRelates = e->relates; g_memberGroupRelates = e->relates;
e->mGrpId = g_memberGroupId; e->mGrpId = g_memberGroupId;
} }
//else
//{
// warn(fileName,line,"Warning: member groups cannot be nested. Ending current group!\n");
// closeGroup(e,fileName,line);
//}
} }
} }
void closeGroup(Entry *e,const char *fileName,int) void closeGroup(Entry *e,const char *fileName,int)
{ {
//printf("==> closeGroup(name=%s,sec=%x) g_autoGroupStack=%d\n", printf("==> closeGroup(name=%s,sec=%x) g_autoGroupStack=%d\n",
// e->name.data(),e->section,g_autoGroupStack.count()); e->name.data(),e->section,g_autoGroupStack.count());
if (g_memberGroupId!=DOX_NOGROUP) // end of member group if (g_memberGroupId!=DOX_NOGROUP) // end of member group
{ {
MemberGroupInfo *info=Doxygen::memGrpInfoDict.find(g_memberGroupId); MemberGroupInfo *info=Doxygen::memGrpInfoDict.find(g_memberGroupId);
...@@ -2376,6 +2372,7 @@ void closeGroup(Entry *e,const char *fileName,int) ...@@ -2376,6 +2372,7 @@ void closeGroup(Entry *e,const char *fileName,int)
{ {
Grouping *grp = g_autoGroupStack.pop(); Grouping *grp = g_autoGroupStack.pop();
e->groups->removeLast(); e->groups->removeLast();
printf("Removing %s\n",grp->groupname.data());
delete grp; delete grp;
initGroupInfo(e); initGroupInfo(e);
} }
...@@ -2389,7 +2386,9 @@ void initGroupInfo(Entry *e) ...@@ -2389,7 +2386,9 @@ void initGroupInfo(Entry *e)
e->relates = g_memberGroupRelates; e->relates = g_memberGroupRelates;
if (!g_autoGroupStack.isEmpty()) if (!g_autoGroupStack.isEmpty())
{ {
//printf("Appending group %s to %s\n",g_autoGroupStack.top()->groupname.data(),e->name.data()); printf("Appending group %s to %s: count=%d entry=%p\n",
g_autoGroupStack.top()->groupname.data(),
e->name.data(),e->groups->count(),e);
e->groups->append(new Grouping(*g_autoGroupStack.top())); e->groups->append(new Grouping(*g_autoGroupStack.top()));
} }
} }
......
...@@ -1145,7 +1145,7 @@ void Config::check() ...@@ -1145,7 +1145,7 @@ void Config::check()
#undef PUTENV #undef PUTENV
#undef SEP #undef SEP
#if defined(_WIN32) && !defined(__GNUC__) && (__BORLANDC__ < 0x0550) #if defined(_WIN32) && (__BORLANDC__ < 0x0550)
#define PUTENV _putenv #define PUTENV _putenv
#define SEP ";" #define SEP ";"
#else #else
...@@ -1260,13 +1260,19 @@ void Config::create() ...@@ -1260,13 +1260,19 @@ void Config::create()
"documentation generated by doxygen is written. Doxygen will use this \n" "documentation generated by doxygen is written. Doxygen will use this \n"
"information to generate all constant output in the proper language. \n" "information to generate all constant output in the proper language. \n"
"The default language is English, other supported languages are: \n" "The default language is English, other supported languages are: \n"
"Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, \n" "Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, \n"
"Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, \n" "Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, \n"
"Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, \n" "Italian, Japanese, Japanese-en (Japanese with English messages), Korean, \n"
"Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, \n" "Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, \n"
"Swedish, and Ukrainian.\n", "Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.\n",
"English" "English"
); );
#ifdef LANG_ZA
ce->addValue("Afrikaans");
#endif
#ifdef LANG_AR
ce->addValue("Arabic");
#endif
#ifdef LANG_BR #ifdef LANG_BR
ce->addValue("Brazilian"); ce->addValue("Brazilian");
#endif #endif
...@@ -1318,9 +1324,15 @@ void Config::create() ...@@ -1318,9 +1324,15 @@ void Config::create()
ce->addValue("Korean"); ce->addValue("Korean");
ce->addValue("Korean-en"); ce->addValue("Korean-en");
#endif #endif
#ifdef LANG_LI
ce->addValue("Lithuanian");
#endif
#ifdef LANG_NO #ifdef LANG_NO
ce->addValue("Norwegian"); ce->addValue("Norwegian");
#endif #endif
#ifdef LANG_FA
ce->addValue("Persian");
#endif
#ifdef LANG_PL #ifdef LANG_PL
ce->addValue("Polish"); ce->addValue("Polish");
#endif #endif
......
...@@ -313,7 +313,7 @@ void generateDEFClassSection(ClassDef *cd, ...@@ -313,7 +313,7 @@ void generateDEFClassSection(ClassDef *cd,
MemberList *ml, MemberList *ml,
const char *kind) const char *kind)
{ {
if (ml->count()>0) if (cd && ml->count()>0)
{ {
t << " cp-section = {" << endl; t << " cp-section = {" << endl;
t << " sec-kind = '" << kind << "';" << endl; t << " sec-kind = '" << kind << "';" << endl;
...@@ -352,7 +352,7 @@ void generateDEFForClass(ClassDef *cd,QTextStream &t) ...@@ -352,7 +352,7 @@ void generateDEFForClass(ClassDef *cd,QTextStream &t)
t << " cp-id = '" << cd->getOutputFileBase() << "';" << endl; t << " cp-id = '" << cd->getOutputFileBase() << "';" << endl;
t << " cp-name = '" << cd->name() << "';" << endl; t << " cp-name = '" << cd->name() << "';" << endl;
if (cd->baseClasses()->count()>0) if (cd->baseClasses())
{ {
BaseClassListIterator bcli(*cd->baseClasses()); BaseClassListIterator bcli(*cd->baseClasses());
BaseClassDef *bcd; BaseClassDef *bcd;
...@@ -380,7 +380,7 @@ void generateDEFForClass(ClassDef *cd,QTextStream &t) ...@@ -380,7 +380,7 @@ void generateDEFForClass(ClassDef *cd,QTextStream &t)
} }
} }
if (cd->subClasses()->count()>0) if (cd->subClasses())
{ {
BaseClassListIterator bcli(*cd->subClasses()); BaseClassListIterator bcli(*cd->subClasses());
BaseClassDef *bcd; BaseClassDef *bcd;
...@@ -409,39 +409,53 @@ void generateDEFForClass(ClassDef *cd,QTextStream &t) ...@@ -409,39 +409,53 @@ void generateDEFForClass(ClassDef *cd,QTextStream &t)
} }
int numMembers = int numMembers =
cd->pubTypes.count()+cd->pubMethods.count()+cd->pubAttribs.count()+ (cd->pubTypes ? cd->pubTypes->count() : 0)+
cd->pubSlots.count()+cd->signals.count()+cd->dcopMethods.count()+ (cd->pubMethods ? cd->pubMethods->count() : 0)+
cd->pubStaticMethods.count()+ (cd->pubAttribs ? cd->pubAttribs->count() : 0)+
cd->pubStaticAttribs.count()+cd->proTypes.count()+cd->proMethods.count()+ (cd->pubSlots ? cd->pubSlots->count() : 0)+
cd->proAttribs.count()+cd->proSlots.count()+cd->proStaticMethods.count()+ (cd->signals ? cd->signals->count() : 0)+
cd->proStaticAttribs.count()+cd->priTypes.count()+cd->priMethods.count()+ (cd->dcopMethods ? cd->dcopMethods->count() : 0)+
cd->priAttribs.count()+cd->priSlots.count()+cd->priStaticMethods.count()+ (cd->pubStaticMethods ? cd->pubStaticMethods->count() : 0)+
cd->priStaticAttribs.count()+cd->friends.count()+cd->related.count(); (cd->pubStaticAttribs ? cd->pubStaticAttribs->count() : 0)+
(cd->proTypes ? cd->proTypes->count() : 0)+
(cd->proMethods ? cd->proMethods->count() : 0)+
(cd->proAttribs ? cd->proAttribs->count() : 0)+
(cd->proSlots ? cd->proSlots->count() : 0)+
(cd->proStaticMethods ? cd->proStaticMethods->count() : 0)+
(cd->proStaticAttribs ? cd->proStaticAttribs->count() : 0)+
(cd->priTypes ? cd->priTypes->count() : 0)+
(cd->priMethods ? cd->priMethods->count() : 0)+
(cd->priAttribs ? cd->priAttribs->count() : 0)+
(cd->priSlots ? cd->priSlots->count() : 0)+
(cd->priStaticMethods ? cd->priStaticMethods->count() : 0)+
(cd->priStaticAttribs ? cd->priStaticAttribs->count() : 0)+
(cd->friends ? cd->friends->count() : 0)+
(cd->related ? cd->related->count() : 0);
if (numMembers>0) if (numMembers>0)
{ {
generateDEFClassSection(cd,t,&cd->pubTypes,"public-type"); generateDEFClassSection(cd,t,cd->pubTypes,"public-type");
generateDEFClassSection(cd,t,&cd->pubMethods,"public-func"); generateDEFClassSection(cd,t,cd->pubMethods,"public-func");
generateDEFClassSection(cd,t,&cd->pubAttribs,"public-attrib"); generateDEFClassSection(cd,t,cd->pubAttribs,"public-attrib");
generateDEFClassSection(cd,t,&cd->pubSlots,"public-slot"); generateDEFClassSection(cd,t,cd->pubSlots,"public-slot");
generateDEFClassSection(cd,t,&cd->signals,"signal"); generateDEFClassSection(cd,t,cd->signals,"signal");
generateDEFClassSection(cd,t,&cd->dcopMethods,"dcop-func"); generateDEFClassSection(cd,t,cd->dcopMethods,"dcop-func");
generateDEFClassSection(cd,t,&cd->properties,"property"); generateDEFClassSection(cd,t,cd->properties,"property");
generateDEFClassSection(cd,t,&cd->pubStaticMethods,"public-static-func"); generateDEFClassSection(cd,t,cd->pubStaticMethods,"public-static-func");
generateDEFClassSection(cd,t,&cd->pubStaticAttribs,"public-static-attrib"); generateDEFClassSection(cd,t,cd->pubStaticAttribs,"public-static-attrib");
generateDEFClassSection(cd,t,&cd->proTypes,"protected-type"); generateDEFClassSection(cd,t,cd->proTypes,"protected-type");
generateDEFClassSection(cd,t,&cd->proMethods,"protected-func"); generateDEFClassSection(cd,t,cd->proMethods,"protected-func");
generateDEFClassSection(cd,t,&cd->proAttribs,"protected-attrib"); generateDEFClassSection(cd,t,cd->proAttribs,"protected-attrib");
generateDEFClassSection(cd,t,&cd->proSlots,"protected-slot"); generateDEFClassSection(cd,t,cd->proSlots,"protected-slot");
generateDEFClassSection(cd,t,&cd->proStaticMethods,"protected-static-func"); generateDEFClassSection(cd,t,cd->proStaticMethods,"protected-static-func");
generateDEFClassSection(cd,t,&cd->proStaticAttribs,"protected-static-attrib"); generateDEFClassSection(cd,t,cd->proStaticAttribs,"protected-static-attrib");
generateDEFClassSection(cd,t,&cd->priTypes,"private-type"); generateDEFClassSection(cd,t,cd->priTypes,"private-type");
generateDEFClassSection(cd,t,&cd->priMethods,"private-func"); generateDEFClassSection(cd,t,cd->priMethods,"private-func");
generateDEFClassSection(cd,t,&cd->priAttribs,"private-attrib"); generateDEFClassSection(cd,t,cd->priAttribs,"private-attrib");
generateDEFClassSection(cd,t,&cd->priSlots,"private-slot"); generateDEFClassSection(cd,t,cd->priSlots,"private-slot");
generateDEFClassSection(cd,t,&cd->priStaticMethods,"private-static-func"); generateDEFClassSection(cd,t,cd->priStaticMethods,"private-static-func");
generateDEFClassSection(cd,t,&cd->priStaticAttribs,"private-static-attrib"); generateDEFClassSection(cd,t,cd->priStaticAttribs,"private-static-attrib");
generateDEFClassSection(cd,t,&cd->friends,"signal"); generateDEFClassSection(cd,t,cd->friends,"signal");
generateDEFClassSection(cd,t,&cd->related,"related"); generateDEFClassSection(cd,t,cd->related,"related");
} }
t << " cp-filename = '" << cd->getDefFileName() << "';" << endl; t << " cp-filename = '" << cd->getDefFileName() << "';" << endl;
...@@ -525,12 +539,12 @@ void generateDEFForFile(FileDef *fd,QTextStream &t) ...@@ -525,12 +539,12 @@ void generateDEFForFile(FileDef *fd,QTextStream &t)
writeDEFString(t,fd->name()); writeDEFString(t,fd->name());
t << ';' << endl; t << ';' << endl;
generateDEFSection(fd,t,&fd->decDefineMembers,"define"); generateDEFSection(fd,t,fd->decDefineMembers,"define");
generateDEFSection(fd,t,&fd->decProtoMembers,"prototype"); generateDEFSection(fd,t,fd->decProtoMembers,"prototype");
generateDEFSection(fd,t,&fd->decTypedefMembers,"typedef"); generateDEFSection(fd,t,fd->decTypedefMembers,"typedef");
generateDEFSection(fd,t,&fd->decEnumMembers,"enum"); generateDEFSection(fd,t,fd->decEnumMembers,"enum");
generateDEFSection(fd,t,&fd->decFuncMembers,"func"); generateDEFSection(fd,t,fd->decFuncMembers,"func");
generateDEFSection(fd,t,&fd->decVarMembers,"var"); generateDEFSection(fd,t,fd->decVarMembers,"var");
t << " file-full-name = '" << fd->getDefFileName() << "';" << endl; t << " file-full-name = '" << fd->getDefFileName() << "';" << endl;
t << " file-first-line = '" << fd->getDefLine() << "';" << endl; t << " file-first-line = '" << fd->getDefLine() << "';" << endl;
......
...@@ -100,24 +100,33 @@ Definition::Definition(const char *df,int dl, ...@@ -100,24 +100,33 @@ Definition::Definition(const char *df,int dl,
m_localName=name; m_localName=name;
} }
//printf("m_localName=%s\n",m_localName.data()); //printf("m_localName=%s\n",m_localName.data());
m_brief=b;
m_doc=d; if (b)
m_sectionDict=0, {
m_startBodyLine=m_endBodyLine=-1, m_brief = new DocInfo;
m_bodyDef=0; m_brief->doc = b;
}
else
{
m_brief = 0;
}
if (d)
{
m_details = new DocInfo;
m_details->doc = d;
}
else
{
m_details = 0;
}
m_body = 0;
m_sourceRefByDict=0; m_sourceRefByDict=0;
m_sourceRefsDict=0; m_sourceRefsDict=0;
m_todoId=0; m_sectionDict=0,
m_testId=0;
m_bugId=0;
m_deprecatedId=0;
m_outerScope=Doxygen::globalScope; m_outerScope=Doxygen::globalScope;
m_partOfGroups=0; m_partOfGroups=0;
m_xrefListItems=0; m_xrefListItems=0;
m_briefLine=1;
m_briefFile=(QCString)"<"+name+">";
m_docLine=1;
m_docFile=(QCString)"<"+name+">";
m_isSymbol = isSymbol; m_isSymbol = isSymbol;
m_hidden = FALSE; m_hidden = FALSE;
if (m_isSymbol) addToMap(name,this); if (m_isSymbol) addToMap(name,this);
...@@ -131,6 +140,9 @@ Definition::~Definition() ...@@ -131,6 +140,9 @@ Definition::~Definition()
delete m_sourceRefsDict; delete m_sourceRefsDict;
delete m_partOfGroups; delete m_partOfGroups;
delete m_xrefListItems; delete m_xrefListItems;
delete m_brief;
delete m_details;
delete m_body;
} }
void Definition::addSectionsToDefinition(QList<SectionInfo> *anchorList) void Definition::addSectionsToDefinition(QList<SectionInfo> *anchorList)
...@@ -219,9 +231,13 @@ void Definition::setDocumentation(const char *d,const char *docFile,int docLine, ...@@ -219,9 +231,13 @@ void Definition::setDocumentation(const char *d,const char *docFile,int docLine,
doc=d; doc=d;
} }
//printf("setting docs for %s: `%s'\n",name().data(),m_doc.data()); //printf("setting docs for %s: `%s'\n",name().data(),m_doc.data());
m_doc=doc; if (m_details==0)
m_docFile = docFile; {
m_docLine = docLine; m_details = new DocInfo;
}
m_details->doc = doc;
m_details->file = docFile;
m_details->line = docLine;
} }
#define uni_isupper(c) (QChar(c).category()==QChar::Letter_Uppercase) #define uni_isupper(c) (QChar(c).category()==QChar::Letter_Uppercase)
...@@ -235,20 +251,24 @@ void Definition::setBriefDescription(const char *b,const char *briefFile,int bri ...@@ -235,20 +251,24 @@ void Definition::setBriefDescription(const char *b,const char *briefFile,int bri
outputLanguage!="Korean"; outputLanguage!="Korean";
//fprintf(stderr,"Definition::setBriefDescription(%s,%s,%d)\n",b,briefFile,briefLine); //fprintf(stderr,"Definition::setBriefDescription(%s,%s,%d)\n",b,briefFile,briefLine);
m_brief=QCString(b).stripWhiteSpace(); if (m_brief==0)
int bl=m_brief.length(); {
m_brief = new DocInfo;
}
m_brief->doc=QCString(b).stripWhiteSpace();
int bl=m_brief->doc.length();
if (bl>0 && needsDot) // add punctuation if needed if (bl>0 && needsDot) // add punctuation if needed
{ {
switch(m_brief.at(bl-1)) switch(m_brief->doc.at(bl-1))
{ {
case '.': case '!': case '?': break; case '.': case '!': case '?': break;
default: default:
if (uni_isupper(m_brief.at(0))) m_brief+='.'; if (uni_isupper(m_brief->doc.at(0))) m_brief->doc+='.';
break; break;
} }
} }
m_briefFile = briefFile; m_brief->file = briefFile;
m_briefLine = briefLine; m_brief->line = briefLine;
} }
/*! Reads a fragment of code from file \a fileName starting at /*! Reads a fragment of code from file \a fileName starting at
...@@ -373,7 +393,8 @@ void Definition::writeSourceDef(OutputList &ol,const char *) ...@@ -373,7 +393,8 @@ void Definition::writeSourceDef(OutputList &ol,const char *)
{ {
ol.pushGeneratorState(); ol.pushGeneratorState();
//printf("Definition::writeSourceRef %d %p\n",bodyLine,bodyDef); //printf("Definition::writeSourceRef %d %p\n",bodyLine,bodyDef);
if (Config_getBool("SOURCE_BROWSER") && m_startBodyLine!=-1 && m_bodyDef) if (Config_getBool("SOURCE_BROWSER") &&
m_body && m_body->startLine!=-1 && m_body->fileDef)
{ {
QCString refText = theTranslator->trDefinedAtLineInSourceFile(); QCString refText = theTranslator->trDefinedAtLineInSourceFile();
int lineMarkerPos = refText.find("@0"); int lineMarkerPos = refText.find("@0");
...@@ -381,8 +402,8 @@ void Definition::writeSourceDef(OutputList &ol,const char *) ...@@ -381,8 +402,8 @@ void Definition::writeSourceDef(OutputList &ol,const char *)
if (lineMarkerPos!=-1 && fileMarkerPos!=-1) // should always pass this. if (lineMarkerPos!=-1 && fileMarkerPos!=-1) // should always pass this.
{ {
QCString lineStr,anchorStr; QCString lineStr,anchorStr;
lineStr.sprintf("%d",m_startBodyLine); lineStr.sprintf("%d",m_body->startLine);
anchorStr.sprintf(Htags::useHtags ? "L%d" : "l%05d",m_startBodyLine); anchorStr.sprintf(Htags::useHtags ? "L%d" : "l%05d",m_body->startLine);
ol.newParagraph(); ol.newParagraph();
if (lineMarkerPos<fileMarkerPos) // line marker before file marker if (lineMarkerPos<fileMarkerPos) // line marker before file marker
{ {
...@@ -390,7 +411,7 @@ void Definition::writeSourceDef(OutputList &ol,const char *) ...@@ -390,7 +411,7 @@ void Definition::writeSourceDef(OutputList &ol,const char *)
ol.parseText(refText.left(lineMarkerPos)); ol.parseText(refText.left(lineMarkerPos));
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
// write line link (HTML only) // write line link (HTML only)
ol.writeObjectLink(0,m_bodyDef->getSourceFileBase(), ol.writeObjectLink(0,m_body->fileDef->getSourceFileBase(),
anchorStr,lineStr); anchorStr,lineStr);
ol.enableAll(); ol.enableAll();
ol.disable(OutputGenerator::Html); ol.disable(OutputGenerator::Html);
...@@ -404,12 +425,12 @@ void Definition::writeSourceDef(OutputList &ol,const char *) ...@@ -404,12 +425,12 @@ void Definition::writeSourceDef(OutputList &ol,const char *)
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
// write file link (HTML only) // write file link (HTML only)
ol.writeObjectLink(0,m_bodyDef->getSourceFileBase(), ol.writeObjectLink(0,m_body->fileDef->getSourceFileBase(),
0,m_bodyDef->name()); 0,m_body->fileDef->name());
ol.enableAll(); ol.enableAll();
ol.disable(OutputGenerator::Html); ol.disable(OutputGenerator::Html);
// write normal text (Latex/Man only) // write normal text (Latex/Man only)
ol.docify(m_bodyDef->name()); ol.docify(m_body->fileDef->name());
ol.enableAll(); ol.enableAll();
// write text right from file marker // write text right from file marker
...@@ -422,12 +443,12 @@ void Definition::writeSourceDef(OutputList &ol,const char *) ...@@ -422,12 +443,12 @@ void Definition::writeSourceDef(OutputList &ol,const char *)
ol.parseText(refText.left(fileMarkerPos)); ol.parseText(refText.left(fileMarkerPos));
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
// write file link (HTML only) // write file link (HTML only)
ol.writeObjectLink(0,m_bodyDef->getSourceFileBase(), ol.writeObjectLink(0,m_body->fileDef->getSourceFileBase(),
0,m_bodyDef->name()); 0,m_body->fileDef->name());
ol.enableAll(); ol.enableAll();
ol.disable(OutputGenerator::Html); ol.disable(OutputGenerator::Html);
// write normal text (Latex/Man only) // write normal text (Latex/Man only)
ol.docify(m_bodyDef->name()); ol.docify(m_body->fileDef->name());
ol.enableAll(); ol.enableAll();
// write text between markers // write text between markers
...@@ -436,7 +457,7 @@ void Definition::writeSourceDef(OutputList &ol,const char *) ...@@ -436,7 +457,7 @@ void Definition::writeSourceDef(OutputList &ol,const char *)
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
// write line link (HTML only) // write line link (HTML only)
ol.writeObjectLink(0,m_bodyDef->getSourceFileBase(), ol.writeObjectLink(0,m_body->fileDef->getSourceFileBase(),
anchorStr,lineStr); anchorStr,lineStr);
ol.enableAll(); ol.enableAll();
ol.disable(OutputGenerator::Html); ol.disable(OutputGenerator::Html);
...@@ -457,18 +478,33 @@ void Definition::writeSourceDef(OutputList &ol,const char *) ...@@ -457,18 +478,33 @@ void Definition::writeSourceDef(OutputList &ol,const char *)
ol.popGeneratorState(); ol.popGeneratorState();
} }
void Definition::setBodySegment(int bls,int ble)
{
//printf("setBodySegment(%d,%d) for %s\n",bls,ble,name().data());
if (m_body==0) m_body = new BodyInfo;
m_body->startLine=bls;
m_body->endLine=ble;
}
void Definition::setBodyDef(FileDef *fd)
{
if (m_body==0) m_body = new BodyInfo;
m_body->fileDef=fd;
}
/*! Write code of this definition into the documentation */ /*! Write code of this definition into the documentation */
void Definition::writeInlineCode(OutputList &ol,const char *scopeName) void Definition::writeInlineCode(OutputList &ol,const char *scopeName)
{ {
ol.pushGeneratorState(); ol.pushGeneratorState();
//printf("Source Fragment %s: %d-%d bodyDef=%p\n",name().data(), //printf("Source Fragment %s: %d-%d bodyDef=%p\n",name().data(),
// m_startBodyLine,m_endBodyLine,m_bodyDef); // m_startBodyLine,m_endBodyLine,m_bodyDef);
if (Config_getBool("INLINE_SOURCES") && m_startBodyLine!=-1 && if (Config_getBool("INLINE_SOURCES") &&
m_endBodyLine>=m_startBodyLine && m_bodyDef) m_body && m_body->startLine!=-1 &&
m_body->endLine>=m_body->startLine && m_body->fileDef)
{ {
QCString codeFragment; QCString codeFragment;
int actualStart=m_startBodyLine,actualEnd=m_endBodyLine; int actualStart=m_body->startLine,actualEnd=m_body->endLine;
if (readCodeFragment(m_bodyDef->absFilePath(), if (readCodeFragment(m_body->fileDef->absFilePath(),
actualStart,actualEnd,codeFragment) actualStart,actualEnd,codeFragment)
) )
{ {
...@@ -478,16 +514,16 @@ void Definition::writeInlineCode(OutputList &ol,const char *scopeName) ...@@ -478,16 +514,16 @@ void Definition::writeInlineCode(OutputList &ol,const char *scopeName)
MemberDef *thisMd = 0; MemberDef *thisMd = 0;
if (definitionType()==TypeMember) thisMd = (MemberDef *)this; if (definitionType()==TypeMember) thisMd = (MemberDef *)this;
ol.startCodeFragment(); ol.startCodeFragment();
pIntf->parseCode(ol, // codeOutIntf pIntf->parseCode(ol, // codeOutIntf
scopeName, // scope scopeName, // scope
codeFragment, // input codeFragment, // input
FALSE, // isExample FALSE, // isExample
0, // exampleName 0, // exampleName
m_bodyDef, // fileDef m_body->fileDef, // fileDef
actualStart, // startLine actualStart, // startLine
actualEnd, // endLine actualEnd, // endLine
TRUE, // inlineFragment TRUE, // inlineFragment
thisMd // memberDef thisMd // memberDef
); );
ol.endCodeFragment(); ol.endCodeFragment();
ol.newParagraph(); ol.newParagraph();
...@@ -611,18 +647,19 @@ bool Definition::hasDocumentation() const ...@@ -611,18 +647,19 @@ bool Definition::hasDocumentation() const
static bool extractAll = Config_getBool("EXTRACT_ALL"); static bool extractAll = Config_getBool("EXTRACT_ALL");
static bool sourceBrowser = Config_getBool("SOURCE_BROWSER"); static bool sourceBrowser = Config_getBool("SOURCE_BROWSER");
bool hasDocs = bool hasDocs =
!m_doc.isEmpty() || // has detailed docs (m_details && !m_details->doc.isEmpty()) || // has detailed docs
!m_brief.isEmpty() || // has brief description (m_brief && !m_brief->doc.isEmpty()) || // has brief description
extractAll || // extract everything extractAll || // extract everything
(sourceBrowser && m_startBodyLine!=-1 && m_bodyDef); // link to definition (sourceBrowser && m_body &&
m_body->startLine!=-1 && m_body->fileDef); // link to definition
return hasDocs; return hasDocs;
} }
bool Definition::hasUserDocumentation() const bool Definition::hasUserDocumentation() const
{ {
bool hasDocs = bool hasDocs =
!m_doc.isEmpty() || (m_details && !m_details->doc.isEmpty()) ||
!m_brief.isEmpty(); (m_brief && !m_brief->doc.isEmpty());
return hasDocs; return hasDocs;
} }
...@@ -720,13 +757,6 @@ QCString Definition::localName() const ...@@ -720,13 +757,6 @@ QCString Definition::localName() const
return m_localName; return m_localName;
} }
void Definition::setBodySegment(int bls,int ble)
{
//printf("setBodySegment(%d,%d) for %s\n",bls,ble,name().data());
m_startBodyLine=bls;
m_endBodyLine=ble;
}
void Definition::makePartOfGroup(GroupDef *gd) void Definition::makePartOfGroup(GroupDef *gd)
{ {
if (m_partOfGroups==0) m_partOfGroups = new GroupList; if (m_partOfGroups==0) m_partOfGroups = new GroupList;
......
...@@ -40,6 +40,20 @@ struct ReachableDefinition ...@@ -40,6 +40,20 @@ struct ReachableDefinition
int distance; int distance;
}; };
struct DocInfo
{
QCString doc;
int line;
QCString file;
};
struct BodyInfo
{
int startLine; // line number of the start of the definition
int endLine; // line number of the end of the definition
FileDef *fileDef; // file definition containing the function body
};
/*! The common base class of all entity definitions found in the sources. */ /*! The common base class of all entity definitions found in the sources. */
class Definition class Definition
{ {
...@@ -82,10 +96,10 @@ class Definition ...@@ -82,10 +96,10 @@ class Definition
virtual QCString getSourceFileBase() const { ASSERT(0); return "NULL"; } virtual QCString getSourceFileBase() const { ASSERT(0); return "NULL"; }
/*! Returns the detailed description of this definition */ /*! Returns the detailed description of this definition */
const QCString& documentation() const { return m_doc; } QCString documentation() const { return m_details ? m_details->doc : QCString(""); }
/*! Returns the brief description of this definition */ /*! Returns the brief description of this definition */
const QCString& briefDescription() const { return m_brief; } QCString briefDescription() const { return m_brief ? m_brief->doc : QCString(""); }
/*! Sets a new \a name for the definition */ /*! Sets a new \a name for the definition */
void setName(const char *name) { m_name=name; } void setName(const char *name) { m_name=name; }
...@@ -94,12 +108,12 @@ class Definition ...@@ -94,12 +108,12 @@ class Definition
void setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace=TRUE); void setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace=TRUE);
/*! Returns the line number at which the detailed documentation was found. */ /*! Returns the line number at which the detailed documentation was found. */
int docLine() const { return m_docLine; } int docLine() const { return m_details ? m_details->line : 1; }
/*! Returns the file in which the detailed documentation block was found. /*! Returns the file in which the detailed documentation block was found.
* This can differ from getDefFileName(). * This can differ from getDefFileName().
*/ */
QCString docFile() const { return m_docFile; } QCString docFile() const { return m_details ? m_details->file : QCString("<"+m_name+">"); }
/*! Sets the brief description of this definition to \a b. /*! Sets the brief description of this definition to \a b.
* A dot is added to the sentence if not available. * A dot is added to the sentence if not available.
...@@ -107,12 +121,12 @@ class Definition ...@@ -107,12 +121,12 @@ class Definition
void setBriefDescription(const char *b,const char *briefFile,int briefLine); void setBriefDescription(const char *b,const char *briefFile,int briefLine);
/*! Returns the line number at which the brief description was found. */ /*! Returns the line number at which the brief description was found. */
int briefLine() const { return m_briefLine; } int briefLine() const { return m_brief ? m_brief->line : 1; }
/*! Returns the file in which the brief description was found. /*! Returns the file in which the brief description was found.
* This can differ from getDefFileName(). * This can differ from getDefFileName().
*/ */
QCString briefFile() const { return m_briefFile; } QCString briefFile() const { return m_brief ? m_brief->file : QCString("<"+m_name+">"); }
/*! returns the file in which this definition was found */ /*! returns the file in which this definition was found */
QCString getDefFileName() const { return m_defFileName; } QCString getDefFileName() const { return m_defFileName; }
...@@ -132,7 +146,6 @@ class Definition ...@@ -132,7 +146,6 @@ class Definition
/*! Returns TRUE iff the definition is documented by the user. */ /*! Returns TRUE iff the definition is documented by the user. */
virtual bool hasUserDocumentation() const; virtual bool hasUserDocumentation() const;
/*! Returns TRUE iff it is possible to link to this item within this /*! Returns TRUE iff it is possible to link to this item within this
* project. * project.
*/ */
...@@ -188,10 +201,10 @@ class Definition ...@@ -188,10 +201,10 @@ class Definition
// source references // source references
void setBodySegment(int bls,int ble); void setBodySegment(int bls,int ble);
void setBodyDef(FileDef *fd) { m_bodyDef=fd; } void setBodyDef(FileDef *fd);
int getStartBodyLine() const { return m_startBodyLine; } int getStartBodyLine() const { return m_body ? m_body->startLine : -1; }
int getEndBodyLine() const { return m_endBodyLine; } int getEndBodyLine() const { return m_body ? m_body->endLine : -1; }
FileDef *getBodyDef() { return m_bodyDef; } FileDef *getBodyDef() { return m_body ? m_body->fileDef : 0; }
void writeSourceDef(OutputList &ol,const char *scopeName); void writeSourceDef(OutputList &ol,const char *scopeName);
void writeInlineCode(OutputList &ol,const char *scopeName); void writeInlineCode(OutputList &ol,const char *scopeName);
void writeSourceRefs(OutputList &ol,const char *scopeName); void writeSourceRefs(OutputList &ol,const char *scopeName);
...@@ -224,50 +237,38 @@ class Definition ...@@ -224,50 +237,38 @@ class Definition
protected: protected:
void setLocalName(const QCString name) { m_localName=name; } void setLocalName(const QCString name) { m_localName=name; }
int m_startBodyLine; // line number of the start of the definition
int m_endBodyLine; // line number of the end of the definition
FileDef *m_bodyDef; // file definition containing the function body
// where the item was found
QCString m_defFileName;
int m_defLine;
QCString m_defFileExt;
/*! The class, namespace in which this class is located
*/
Definition *m_outerScope;
QCString m_name; // name of the definition
QCString m_localName; // local (unqualified) name of the definition
// in the future m_name should become m_localName
/*! List of groups this definition is part of */
GroupList *m_partOfGroups;
private: private:
int getXRefListId(const char *listName) const; int getXRefListId(const char *listName) const;
void writeSourceRefList(OutputList &ol,const char *scopeName, void writeSourceRefList(OutputList &ol,const char *scopeName,
const QCString &text,MemberSDict *members,bool); const QCString &text,MemberSDict *members,bool);
//QCString m_qualifiedName; // name of the definition
QCString m_brief; // brief description
QCString m_doc; // detailed description
QCString m_ref; // reference to external documentation
SectionDict *m_sectionDict; // dictionary of all sections SectionDict *m_sectionDict; // dictionary of all sections
MemberSDict *m_sourceRefByDict; MemberSDict *m_sourceRefByDict;
MemberSDict *m_sourceRefsDict; MemberSDict *m_sourceRefsDict;
int m_testId; // id for test list item
int m_todoId; // id for todo list item DocInfo *m_details;
int m_bugId; // id for bug list item DocInfo *m_brief;
int m_deprecatedId; // id for deprecated list item BodyInfo *m_body;
int m_docLine;
QCString m_docFile; /*! The class, namespace in which this class is located
int m_briefLine; */
QCString m_briefFile; QCString m_name; // name of the definition
QList<ListItemInfo> *m_xrefListItems; QCString m_localName; // local (unqualified) name of the definition
// in the future m_name should become m_localName
QCString m_symbolName; QCString m_symbolName;
QCString m_qualifiedName;
QCString m_ref; // reference to external documentation
QList<ListItemInfo> *m_xrefListItems;
bool m_isSymbol; bool m_isSymbol;
bool m_hidden; bool m_hidden;
Definition *m_outerScope;
QCString m_qualifiedName; GroupList *m_partOfGroups;
// where the item was found
QCString m_defFileName;
int m_defLine;
QCString m_defFileExt;
}; };
class DefinitionList : public QList<Definition> class DefinitionList : public QList<Definition>
......
...@@ -258,14 +258,17 @@ void DiagramRow::insertClass(DiagramItem *parent,ClassDef *cd,bool doBases, ...@@ -258,14 +258,17 @@ void DiagramRow::insertClass(DiagramItem *parent,ClassDef *cd,bool doBases,
di->move(count()*gridWidth,level*gridHeight); di->move(count()*gridWidth,level*gridHeight);
append(di); append(di);
BaseClassList *bcl=doBases ? cd->baseClasses() : cd->subClasses(); BaseClassList *bcl=doBases ? cd->baseClasses() : cd->subClasses();
/* there are base/sub classes */
int count=0; int count=0;
BaseClassDef *bcd=bcl->first(); if (bcl)
while (bcd)
{ {
ClassDef *ccd=bcd->classDef; /* there are base/sub classes */
if (ccd && ccd->isVisibleInHierarchy() /*&& !ccd->visited*/) count++; BaseClassDef *bcd=bcl->first();
bcd=bcl->next(); while (bcd)
{
ClassDef *ccd=bcd->classDef;
if (ccd && ccd->isVisibleInHierarchy() /*&& !ccd->visited*/) count++;
bcd=bcl->next();
}
} }
if (count>0 && (prot!=Private || !doBases)) if (count>0 && (prot!=Private || !doBases))
{ {
......
...@@ -1169,6 +1169,7 @@ reparsetoken: ...@@ -1169,6 +1169,7 @@ reparsetoken:
} }
break; break;
case HTML_CODE: case HTML_CODE:
case XML_C:
if (!g_token->endTag) if (!g_token->endTag)
{ {
handleStyleEnter(parent,children,DocStyleChange::Code,&g_token->attribs); handleStyleEnter(parent,children,DocStyleChange::Code,&g_token->attribs);
...@@ -4697,8 +4698,9 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag ...@@ -4697,8 +4698,9 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag
QString paramName; QString paramName;
if (findAttribute(tagHtmlAttribs,"name",&paramName)) if (findAttribute(tagHtmlAttribs,"name",&paramName))
{ {
//printf("paramName=%s\n",paramName.data());
m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Italic,TRUE)); m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Italic,TRUE));
retval=handleStyleArgument(this,m_children,paramName); m_children.append(new DocWord(this,paramName));
m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Italic,FALSE)); m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Italic,FALSE));
if (retval!=TK_WORD) m_children.append(new DocWhiteSpace(this," ")); if (retval!=TK_WORD) m_children.append(new DocWhiteSpace(this," "));
} }
......
...@@ -560,9 +560,9 @@ REFWORD ("#"|"::")?({ID}("."|"#"|"::"|"-"|"/"))*({ID}(":")?){FUNCARG}? ...@@ -560,9 +560,9 @@ REFWORD ("#"|"::")?({ID}("."|"#"|"::"|"-"|"/"))*({ID}(":")?){FUNCARG}?
<St_XmlCode>{WS}*"</code>" { <St_XmlCode>{WS}*"</code>" {
return RetVal_OK; return RetVal_OK;
} }
<St_Code,St_XmlCode>[^\\@\n]+ | <St_Code,St_XmlCode>[^\\@\n<]+ |
<St_Code,St_XmlCode>\n | <St_Code,St_XmlCode>\n |
<St_Code,St_XmlCode>. { <St_Code,St_XmlCode>. {
g_token->verb+=yytext; g_token->verb+=yytext;
} }
<St_HtmlOnly>{CMD}"endhtmlonly" { <St_HtmlOnly>{CMD}"endhtmlonly" {
......
This diff is collapsed.
This diff is collapsed.
...@@ -341,6 +341,7 @@ HR { height: 1px; ...@@ -341,6 +341,7 @@ HR { height: 1px;
.paramname { .paramname {
color: #602020; color: #602020;
font-style: italic; font-style: italic;
white-space: nowrap;
} }
/* End Styling for detailed member documentation */ /* End Styling for detailed member documentation */
......
...@@ -341,6 +341,7 @@ ...@@ -341,6 +341,7 @@
".paramname {\n" ".paramname {\n"
" color: #602020;\n" " color: #602020;\n"
" font-style: italic;\n" " font-style: italic;\n"
" white-space: nowrap;\n"
"}\n" "}\n"
"/* End Styling for detailed member documentation */\n" "/* End Styling for detailed member documentation */\n"
"\n" "\n"
...@@ -355,4 +356,3 @@ ...@@ -355,4 +356,3 @@
".directory p { margin: 0px; white-space: nowrap; }\n" ".directory p { margin: 0px; white-space: nowrap; }\n"
".directory div { display: none; margin: 0px; }\n" ".directory div { display: none; margin: 0px; }\n"
".directory img { vertical-align: -30%; }\n" ".directory img { vertical-align: -30%; }\n"
"\n"
This diff is collapsed.
...@@ -22,6 +22,9 @@ ...@@ -22,6 +22,9 @@
#include <qlist.h> #include <qlist.h>
struct SectionInfo; struct SectionInfo;
class QFile;
class EntryNav;
class FileDef;
enum Protection { Public, Protected, Private, Package } ; enum Protection { Public, Protected, Private, Package } ;
enum Specifier { Normal, Virtual, Pure } ; enum Specifier { Normal, Virtual, Pure } ;
...@@ -246,35 +249,53 @@ class Entry ...@@ -246,35 +249,53 @@ class Entry
Final = 0x0080, Final = 0x0080,
Abstract = 0x0100, Abstract = 0x0100,
}; };
enum GroupDocType
{
GROUPDOC_NORMAL, //!< defgroup
GROUPDOC_ADD, //!< addgroup
GROUPDOC_WEAK //!< weakgroup
}; //!< kind of group
Entry(); Entry();
Entry(const Entry &); Entry(const Entry &);
~Entry(); ~Entry();
int getSize(); int getSize();
void addSpecialListItem(const char *listName,int index); void addSpecialListItem(const char *listName,int index);
void createNavigationIndex(EntryNav *rootNav,QFile &storage,FileDef *fd);
// while parsing a file these function can be used to navigate/build the tree
void setParent(Entry *parent) { m_parent = parent; }
Entry *parent() const { return m_parent; }
const QList<Entry> *children() const { return m_sublist; }
/*! Adds entry \e as a child to this entry */ /*! Adds entry \e as a child to this entry */
void addSubEntry (Entry* e) ; void addSubEntry (Entry* e) ;
/*! Restore the state of this Entry to the default value it has /*! Restore the state of this Entry to the default value it has
* at construction time. * at construction time.
*/ */
void reset(); void reset();
public:
// identification
int section; //!< entry type (see Sections);
QCString type; //!< member type
QCString name; //!< member name
TagInfo *tagInfo; //!< tag file info
int section; //!< entry type (see Sections); // content
Protection protection; //!< class protection Protection protection; //!< class protection
MethodTypes mtype; //!< signal, slot, (dcop) method, or property? MethodTypes mtype; //!< signal, slot, (dcop) method, or property?
int memSpec; //!< member specifiers
int initLines; //!< define/variable initializer lines to show
bool stat; //!< static ? bool stat; //!< static ?
bool explicitExternal; //!< explicitly defined as external? bool explicitExternal; //!< explicitly defined as external?
bool proto; //!< prototype ? bool proto; //!< prototype ?
int memSpec; //!< member specifiers
int initLines; //!< define/variable initializer lines to show
bool subGrouping; //!< automatically group class members? bool subGrouping; //!< automatically group class members?
bool callGraph; //!< do we need to draw the call graph? bool callGraph; //!< do we need to draw the call graph?
bool callerGraph; //!< do we need to draw the caller graph? bool callerGraph; //!< do we need to draw the caller graph?
Specifier virt; //!< virtualness of the entry Specifier virt; //!< virtualness of the entry
Entry *parent; //!< parent node in the tree
QCString type; //!< member type
QCString name; //!< member name
QCString args; //!< member argument string QCString args; //!< member argument string
QCString bitfields; //!< member's bit fields QCString bitfields; //!< member's bit fields
ArgumentList *argList; //!< member arguments as a list ArgumentList *argList; //!< member arguments as a list
...@@ -301,23 +322,18 @@ class Entry ...@@ -301,23 +322,18 @@ class Entry
int bodyLine; //!< line number of the definition in the source int bodyLine; //!< line number of the definition in the source
int endBodyLine; //!< line number where the definition ends int endBodyLine; //!< line number where the definition ends
int mGrpId; //!< member group id int mGrpId; //!< member group id
QList<Entry> *sublist; //!< entries that are children of this one
QList<BaseInfo> *extends; //!< list of base classes QList<BaseInfo> *extends; //!< list of base classes
QList<Grouping> *groups; //!< list of groups this entry belongs to QList<Grouping> *groups; //!< list of groups this entry belongs to
QList<SectionInfo> *anchors; //!< list of anchors defined in this entry QList<SectionInfo> *anchors; //!< list of anchors defined in this entry
QCString fileName; //!< file this entry was extracted from QCString fileName; //!< file this entry was extracted from
int startLine; //!< start line of entry in the source int startLine; //!< start line of entry in the source
QList<ListItemInfo> *sli; //!< special lists (test/todo/bug/deprecated/..) this entry is in QList<ListItemInfo> *sli; //!< special lists (test/todo/bug/deprecated/..) this entry is in
TagInfo *tagInfo; //!< tag file info
static int num; //!< counts the total number of entries
bool objc; //!< Objective-C construct bool objc; //!< Objective-C construct
bool hidden; //!< does this represent an entity this is hidden from the output bool hidden; //!< does this represent an entity that is hidden from the output
enum GroupDocType groupDocType;
{
GROUPDOC_NORMAL, //!< defgroup static int num; //!< counts the total number of entries
GROUPDOC_ADD, //!< addgroup
GROUPDOC_WEAK //!< weakgroup
} groupDocType; //!< kind of group
/// return the command name used to define GROUPDOC_SEC /// return the command name used to define GROUPDOC_SEC
const char *groupDocCmd() const const char *groupDocCmd() const
{ {
...@@ -343,11 +359,59 @@ class Entry ...@@ -343,11 +359,59 @@ class Entry
default: return Grouping::GROUPING_LOWEST; default: return Grouping::GROUPING_LOWEST;
} }
} }
private:
private:
void createSubtreeIndex(EntryNav *nav,QFile &storage,FileDef *fd);
Entry *m_parent; //!< parent node in the tree
QList<Entry> *m_sublist; //!< entries that are children of this one
Entry &operator=(const Entry &); Entry &operator=(const Entry &);
} ; };
class EntryNav
{
public:
EntryNav(EntryNav *parent,Entry *e);
~EntryNav();
void addChild(EntryNav *);
bool loadEntry(QFile &storage);
bool saveEntry(Entry *e,QFile &storage);
void setEntry(Entry *e);
void releaseEntry();
void changeSection(int section) { m_section = section; }
void setFileDef(FileDef *fd) { m_fileDef = fd; }
Entry *entry() const { return m_info; }
int section() const { return m_section; }
const QCString &type() const { return m_type; }
const QCString &name() const { return m_name; }
TagInfo *tagInfo() const { return m_tagInfo; }
const QList<EntryNav> *children() const { return m_subList; }
EntryNav *parent() const { return m_parent; }
FileDef *fileDef() const { return m_fileDef; }
private:
// navigation
EntryNav *m_parent; //!< parent node in the tree
QList<EntryNav> *m_subList; //!< entries that are children of this one
// identification
int m_section; //!< entry type (see Sections);
QCString m_type; //!< member type
QCString m_name; //!< member name
TagInfo *m_tagInfo; //!< tag file info
FileDef *m_fileDef;
Entry *m_info;
int64 m_offset;
bool m_noLoad;
};
typedef QList<Entry> EntryList; typedef QList<Entry> EntryList;
typedef QListIterator<Entry> EntryListIterator; typedef QListIterator<Entry> EntryListIterator;
typedef QList<EntryNav> EntryNavList;
typedef QListIterator<EntryNav> EntryNavListIterator;
#endif #endif
This diff is collapsed.
...@@ -79,6 +79,11 @@ class FileDef : public Definition ...@@ -79,6 +79,11 @@ class FileDef : public Definition
else else
return Definition::name(); return Definition::name();
} }
QCString fileName() const
{
return filename;
}
QCString getOutputFileBase() const QCString getOutputFileBase() const
{ return convertNameToFile(diskname); } { return convertNameToFile(diskname); }
...@@ -166,23 +171,23 @@ class FileDef : public Definition ...@@ -166,23 +171,23 @@ class FileDef : public Definition
//void generateXML(QTextStream &t); //void generateXML(QTextStream &t);
//void generateXMLSection(QTextStream &t,MemberList *ml,const char *type); //void generateXMLSection(QTextStream &t,MemberList *ml,const char *type);
MemberList allMemberList; MemberList *allMemberList;
// members in the declaration part of the documentation // members in the declaration part of the documentation
MemberList decDefineMembers; MemberList *decDefineMembers;
MemberList decProtoMembers; MemberList *decProtoMembers;
MemberList decTypedefMembers; MemberList *decTypedefMembers;
MemberList decEnumMembers; MemberList *decEnumMembers;
MemberList decFuncMembers; MemberList *decFuncMembers;
MemberList decVarMembers; MemberList *decVarMembers;
// members in the detailed part of the documentation // members in the detailed part of the documentation
MemberList docDefineMembers; MemberList *docDefineMembers;
MemberList docProtoMembers; MemberList *docProtoMembers;
MemberList docTypedefMembers; MemberList *docTypedefMembers;
MemberList docEnumMembers; MemberList *docEnumMembers;
MemberList docFuncMembers; MemberList *docFuncMembers;
MemberList docVarMembers; MemberList *docVarMembers;
/* user defined member groups */ /* user defined member groups */
MemberGroupSDict *memberGroupSDict; MemberGroupSDict *memberGroupSDict;
...@@ -198,27 +203,24 @@ class FileDef : public Definition ...@@ -198,27 +203,24 @@ class FileDef : public Definition
*/ */
void acquireFileVersion(); void acquireFileVersion();
private: private:
QDict<IncludeInfo> *includeDict;
QDict<IncludeInfo> *includeDict; QList<IncludeInfo> *includeList;
QList<IncludeInfo> *includeList; QDict<IncludeInfo> *includedByDict;
QDict<IncludeInfo> *includedByDict; QList<IncludeInfo> *includedByList;
QList<IncludeInfo> *includedByList; NamespaceSDict *usingDirList;
NamespaceSDict *usingDirList; SDict<Definition> *usingDeclList;
SDict<Definition> *usingDeclList; QCString path;
QCString path; QCString filepath;
QCString filepath; QCString diskname;
QCString diskname; QCString filename;
QCString filename; QCString docname;
QCString docname;
QIntDict<Definition> *srcDefDict; QIntDict<Definition> *srcDefDict;
QIntDict<MemberDef> *srcMemberDict; QIntDict<MemberDef> *srcMemberDict;
bool isSource; bool isSource;
QCString fileVersion; QCString fileVersion;
PackageDef *package;
PackageDef *package; DirDef *dir;
DirDef *dir;
}; };
...@@ -283,6 +285,7 @@ class DirEntry ...@@ -283,6 +285,7 @@ class DirEntry
protected: protected:
DirEntry *m_parent; DirEntry *m_parent;
QCString m_name; QCString m_name;
private: private:
EntryKind m_kind; EntryKind m_kind;
FileDef *m_fd; FileDef *m_fd;
......
...@@ -183,13 +183,13 @@ void GroupDef::addExample(const PageDef *def) ...@@ -183,13 +183,13 @@ void GroupDef::addExample(const PageDef *def)
void GroupDef::addMembersToMemberGroup() void GroupDef::addMembersToMemberGroup()
{ {
::addMembersToMemberGroup(&decDefineMembers,memberGroupSDict,this); ::addMembersToMemberGroup(&decDefineMembers,&memberGroupSDict,this);
::addMembersToMemberGroup(&decProtoMembers,memberGroupSDict,this); ::addMembersToMemberGroup(&decProtoMembers,&memberGroupSDict,this);
::addMembersToMemberGroup(&decTypedefMembers,memberGroupSDict,this); ::addMembersToMemberGroup(&decTypedefMembers,&memberGroupSDict,this);
::addMembersToMemberGroup(&decEnumMembers,memberGroupSDict,this); ::addMembersToMemberGroup(&decEnumMembers,&memberGroupSDict,this);
::addMembersToMemberGroup(&decEnumValMembers,memberGroupSDict,this); ::addMembersToMemberGroup(&decEnumValMembers,&memberGroupSDict,this);
::addMembersToMemberGroup(&decFuncMembers,memberGroupSDict,this); ::addMembersToMemberGroup(&decFuncMembers,&memberGroupSDict,this);
::addMembersToMemberGroup(&decVarMembers,memberGroupSDict,this); ::addMembersToMemberGroup(&decVarMembers,&memberGroupSDict,this);
//printf("GroupDef::addMembersToMemberGroup() memberGroupList=%d\n",memberGroupList->count()); //printf("GroupDef::addMembersToMemberGroup() memberGroupList=%d\n",memberGroupList->count());
MemberGroupSDict::Iterator mgli(*memberGroupSDict); MemberGroupSDict::Iterator mgli(*memberGroupSDict);
...@@ -413,12 +413,12 @@ void GroupDef::removeMember(MemberDef *md) ...@@ -413,12 +413,12 @@ void GroupDef::removeMember(MemberDef *md)
bool GroupDef::containsGroup(const GroupDef *def) bool GroupDef::containsGroup(const GroupDef *def)
{ {
return groupList->find(def) >= 0; return this==def || groupList->find(def) >= 0;
} }
void GroupDef::addGroup(const GroupDef *def) void GroupDef::addGroup(const GroupDef *def)
{ {
//printf("adding group `%s' to group `%s'\n",def->name().data(),name().data()); printf("adding group `%s' to group `%s'\n",def->name().data(),name().data());
//if (Config_getBool("SORT_MEMBER_DOCS")) //if (Config_getBool("SORT_MEMBER_DOCS"))
// groupList->inSort(def); // groupList->inSort(def);
//else //else
...@@ -427,7 +427,7 @@ void GroupDef::addGroup(const GroupDef *def) ...@@ -427,7 +427,7 @@ void GroupDef::addGroup(const GroupDef *def)
bool GroupDef::isASubGroup() const bool GroupDef::isASubGroup() const
{ {
return m_partOfGroups && m_partOfGroups->count()!=0; return partOfGroups() && partOfGroups()->count()!=0;
} }
int GroupDef::countMembers() const int GroupDef::countMembers() const
...@@ -872,6 +872,8 @@ void addDirToGroups(Entry *root,DirDef *dd) ...@@ -872,6 +872,8 @@ void addDirToGroups(Entry *root,DirDef *dd)
void addGroupToGroups(Entry *root,GroupDef *subGroup) void addGroupToGroups(Entry *root,GroupDef *subGroup)
{ {
printf("addGroupToGroups for %s groups=%d\n",root->name.data(),
root->groups?root->groups->count():-1);
QListIterator<Grouping> gli(*root->groups); QListIterator<Grouping> gli(*root->groups);
Grouping *g; Grouping *g;
for (;(g=gli.current());++gli) for (;(g=gli.current());++gli)
......
This diff is collapsed.
...@@ -280,7 +280,7 @@ void endFile(OutputList &ol,bool) ...@@ -280,7 +280,7 @@ void endFile(OutputList &ol,bool)
static bool classHasVisibleChildren(ClassDef *cd) static bool classHasVisibleChildren(ClassDef *cd)
{ {
if (cd->subClasses()->count()==0) return FALSE; if (cd->subClasses()==0) return FALSE;
BaseClassList *bcl=cd->subClasses(); BaseClassList *bcl=cd->subClasses();
BaseClassListIterator bcli(*bcl); BaseClassListIterator bcli(*bcl);
for ( ; bcli.current() ; ++bcli) for ( ; bcli.current() ; ++bcli)
...@@ -295,6 +295,7 @@ static bool classHasVisibleChildren(ClassDef *cd) ...@@ -295,6 +295,7 @@ static bool classHasVisibleChildren(ClassDef *cd)
void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level) void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level)
{ {
if (bcl==0) return;
HtmlHelp *htmlHelp=0; HtmlHelp *htmlHelp=0;
FTVHelp *ftvHelp=0; FTVHelp *ftvHelp=0;
bool &generateHtml = Config_getBool("GENERATE_HTML") ; bool &generateHtml = Config_getBool("GENERATE_HTML") ;
...@@ -379,6 +380,7 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level) ...@@ -379,6 +380,7 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level)
void writeClassTree(BaseClassList *cl,int level) void writeClassTree(BaseClassList *cl,int level)
{ {
if (cl==0) return;
HtmlHelp *htmlHelp=0; HtmlHelp *htmlHelp=0;
FTVHelp *ftvHelp=0; FTVHelp *ftvHelp=0;
bool &generateHtml = Config_getBool("GENERATE_HTML") ; bool &generateHtml = Config_getBool("GENERATE_HTML") ;
...@@ -468,6 +470,7 @@ void writeClassTreeNode(ClassDef *cd,bool hasHtmlHelp,bool hasFtvHelp,bool &star ...@@ -468,6 +470,7 @@ void writeClassTreeNode(ClassDef *cd,bool hasHtmlHelp,bool hasFtvHelp,bool &star
void writeClassTree(ClassList *cl,int level) void writeClassTree(ClassList *cl,int level)
{ {
if (cl==0) return;
bool &generateHtml = Config_getBool("GENERATE_HTML") ; bool &generateHtml = Config_getBool("GENERATE_HTML") ;
bool hasHtmlHelp = generateHtml && Config_getBool("GENERATE_HTMLHELP"); bool hasHtmlHelp = generateHtml && Config_getBool("GENERATE_HTMLHELP");
bool hasFtvHelp = generateHtml && Config_getBool("GENERATE_TREEVIEW"); bool hasFtvHelp = generateHtml && Config_getBool("GENERATE_TREEVIEW");
...@@ -485,6 +488,7 @@ void writeClassTree(ClassList *cl,int level) ...@@ -485,6 +488,7 @@ void writeClassTree(ClassList *cl,int level)
void writeClassTree(ClassSDict *d,int level) void writeClassTree(ClassSDict *d,int level)
{ {
if (d==0) return;
bool &generateHtml = Config_getBool("GENERATE_HTML") ; bool &generateHtml = Config_getBool("GENERATE_HTML") ;
bool hasHtmlHelp = generateHtml && Config_getBool("GENERATE_HTMLHELP"); bool hasHtmlHelp = generateHtml && Config_getBool("GENERATE_HTMLHELP");
bool hasFtvHelp = generateHtml && Config_getBool("GENERATE_TREEVIEW"); bool hasFtvHelp = generateHtml && Config_getBool("GENERATE_TREEVIEW");
...@@ -625,7 +629,7 @@ static int countClassesInTreeList(const ClassSDict &cl) ...@@ -625,7 +629,7 @@ static int countClassesInTreeList(const ClassSDict &cl)
{ {
if (cd->isVisibleInHierarchy()) // should it be visible if (cd->isVisibleInHierarchy()) // should it be visible
{ {
if (cd->subClasses()->count()>0) // should have sub classes if (cd->subClasses()) // should have sub classes
{ {
count++; count++;
} }
......
...@@ -30,3 +30,5 @@ ...@@ -30,3 +30,5 @@
#define LANG_CA #define LANG_CA
#define LANG_LT #define LANG_LT
#define LANG_ZA #define LANG_ZA
#define LANG_AR
#define LANG_FA
...@@ -121,7 +121,13 @@ ...@@ -121,7 +121,13 @@
#ifdef LANG_ZA #ifdef LANG_ZA
#include "translator_za.h" #include "translator_za.h"
#endif #endif
#ifdef LANG_AR
#include "translator_ar.h"
#endif #endif
#ifdef LANG_FA
#include "translator_fa.h"
#endif
#endif // !ENGLISH_ONLY
#define L_EQUAL(a) !stricmp(langName,a) #define L_EQUAL(a) !stricmp(langName,a)
...@@ -338,6 +344,18 @@ bool setTranslator(const char *langName) ...@@ -338,6 +344,18 @@ bool setTranslator(const char *langName)
theTranslator=new TranslatorAfrikaans; theTranslator=new TranslatorAfrikaans;
} }
#endif #endif
#ifdef LANG_AR
else if (L_EQUAL("arabic"))
{
theTranslator=new TranslatorArabic;
}
#endif
#ifdef LANG_FA
else if (L_EQUAL("persian"))
{
theTranslator=new TranslatorPersian;
}
#endif
#endif // ENGLISH_ONLY #endif // ENGLISH_ONLY
else // use the default language (i.e. english) else // use the default language (i.e. english)
{ {
......
...@@ -232,7 +232,7 @@ void LatexDocVisitor::visit(DocStyleChange *s) ...@@ -232,7 +232,7 @@ void LatexDocVisitor::visit(DocStyleChange *s)
if (s->enable()) m_t << "\\begin{center}"; else m_t << "\\end{center} "; if (s->enable()) m_t << "\\begin{center}"; else m_t << "\\end{center} ";
break; break;
case DocStyleChange::Small: case DocStyleChange::Small:
if (s->enable()) m_t << "\\footnotesize "; else m_t << "\\normalsize "; if (s->enable()) m_t << "\n\\footnotesize "; else m_t << "\n\\normalsize ";
break; break;
case DocStyleChange::Preformatted: case DocStyleChange::Preformatted:
if (s->enable()) if (s->enable())
...@@ -243,7 +243,7 @@ void LatexDocVisitor::visit(DocStyleChange *s) ...@@ -243,7 +243,7 @@ void LatexDocVisitor::visit(DocStyleChange *s)
else else
{ {
m_insidePre=FALSE; m_insidePre=FALSE;
m_t << "\\end{alltt}\\normalsize " << endl; m_t << "\\end{alltt}\n\\normalsize " << endl;
} }
break; break;
case DocStyleChange::Div: /* HTML only */ break; case DocStyleChange::Div: /* HTML only */ break;
......
...@@ -431,7 +431,7 @@ MemberDef::MemberDef(const char *df,int dl, ...@@ -431,7 +431,7 @@ MemberDef::MemberDef(const char *df,int dl,
m_hasDocumentedParams = FALSE; m_hasDocumentedParams = FALSE;
m_hasDocumentedReturnType = FALSE; m_hasDocumentedReturnType = FALSE;
m_docProvider = 0; m_docProvider = 0;
m_isDMember = m_defFileName.right(2).lower()==".d"; m_isDMember = getDefFileName().right(2).lower()==".d";
} }
/*! Destroys the member definition. */ /*! Destroys the member definition. */
...@@ -541,7 +541,7 @@ QCString MemberDef::getOutputFileBase() const ...@@ -541,7 +541,7 @@ QCString MemberDef::getOutputFileBase() const
if (baseName.isEmpty()) if (baseName.isEmpty())
{ {
warn(m_defFileName,m_defLine, warn(getDefFileName(),getDefLine(),
"Warning: Internal inconsistency: member %s does not belong to any" "Warning: Internal inconsistency: member %s does not belong to any"
" container!",name().data() " container!",name().data()
); );
...@@ -874,6 +874,10 @@ void MemberDef::writeDeclaration(OutputList &ol, ...@@ -874,6 +874,10 @@ void MemberDef::writeDeclaration(OutputList &ol,
{ {
//printf("%s MemberDef::writeDeclaration() inGroup=%d\n",name().data(),inGroup); //printf("%s MemberDef::writeDeclaration() inGroup=%d\n",name().data(),inGroup);
// hide enum value, since they appear already as part of the enum, unless they
// are explicitly grouped.
if (!inGroup && mtype==EnumValue) return;
// hide members whose brief section should not be visible // hide members whose brief section should not be visible
//if (!isBriefSectionVisible()) return; //if (!isBriefSectionVisible()) return;
...@@ -2040,7 +2044,7 @@ void MemberDef::warnIfUndocumented() ...@@ -2040,7 +2044,7 @@ void MemberDef::warnIfUndocumented()
(prot!=Private || Config_getBool("EXTRACT_PRIVATE")) (prot!=Private || Config_getBool("EXTRACT_PRIVATE"))
) )
{ {
warn_undoc(m_defFileName,m_defLine,"Warning: Member %s%s (%s) of %s %s is not documented.", warn_undoc(getDefFileName(),getDefLine(),"Warning: Member %s%s (%s) of %s %s is not documented.",
name().data(),argsString()?argsString():"",memberTypeName().data(),t,d->name().data()); name().data(),argsString()?argsString():"",memberTypeName().data(),t,d->name().data());
} }
} }
......
This diff is collapsed.
...@@ -139,12 +139,12 @@ void NamespaceDef::insertNamespace(NamespaceDef *nd) ...@@ -139,12 +139,12 @@ void NamespaceDef::insertNamespace(NamespaceDef *nd)
void NamespaceDef::addMembersToMemberGroup() void NamespaceDef::addMembersToMemberGroup()
{ {
::addMembersToMemberGroup(&decDefineMembers,memberGroupSDict,this); ::addMembersToMemberGroup(&decDefineMembers,&memberGroupSDict,this);
::addMembersToMemberGroup(&decProtoMembers,memberGroupSDict,this); ::addMembersToMemberGroup(&decProtoMembers,&memberGroupSDict,this);
::addMembersToMemberGroup(&decTypedefMembers,memberGroupSDict,this); ::addMembersToMemberGroup(&decTypedefMembers,&memberGroupSDict,this);
::addMembersToMemberGroup(&decEnumMembers,memberGroupSDict,this); ::addMembersToMemberGroup(&decEnumMembers,&memberGroupSDict,this);
::addMembersToMemberGroup(&decFuncMembers,memberGroupSDict,this); ::addMembersToMemberGroup(&decFuncMembers,&memberGroupSDict,this);
::addMembersToMemberGroup(&decVarMembers,memberGroupSDict,this); ::addMembersToMemberGroup(&decVarMembers,&memberGroupSDict,this);
} }
void NamespaceDef::insertMember(MemberDef *md) void NamespaceDef::insertMember(MemberDef *md)
......
This diff is collapsed.
...@@ -696,12 +696,15 @@ static void generateFunctionLink(CodeOutputInterface &ol,char *funcName) ...@@ -696,12 +696,15 @@ static void generateFunctionLink(CodeOutputInterface &ol,char *funcName)
if (!locScope.isEmpty() && (ccd=g_codeClassSDict[locScope])) if (!locScope.isEmpty() && (ccd=g_codeClassSDict[locScope]))
{ {
//printf("using classScope %s\n",g_classScope.data()); //printf("using classScope %s\n",g_classScope.data());
BaseClassListIterator bcli(*ccd->baseClasses()); if (ccd->baseClasses())
for ( ; bcli.current() ; ++bcli)
{ {
if (getLink(bcli.current()->classDef->name(),locFunc,ol,funcName)) BaseClassListIterator bcli(*ccd->baseClasses());
for ( ; bcli.current() ; ++bcli)
{ {
return; if (getLink(bcli.current()->classDef->name(),locFunc,ol,funcName))
{
return;
}
} }
} }
} }
......
...@@ -129,7 +129,7 @@ static void initEntry() ...@@ -129,7 +129,7 @@ static void initEntry()
current->virt = virt; current->virt = virt;
current->stat = gstat; current->stat = gstat;
current->objc = FALSE; //insideObjC; current->objc = FALSE; //insideObjC;
current->parent = current_root; current->setParent(current_root);
initGroupInfo(current); initGroupInfo(current);
} }
...@@ -950,6 +950,7 @@ STARTDOCSYMS ^{B}"##"/[^#] ...@@ -950,6 +950,7 @@ STARTDOCSYMS ^{B}"##"/[^#]
[^ \t\n#'"]+ { // non-special stuff [^ \t\n#'"]+ { // non-special stuff
current->program+=yytext; current->program+=yytext;
g_specialBlock = FALSE; g_specialBlock = FALSE;
g_hideClassDocs = FALSE;
} }
{NEWLINE} { {NEWLINE} {
current->program+=*yytext; current->program+=*yytext;
...@@ -1059,6 +1060,7 @@ STARTDOCSYMS ^{B}"##"/[^#] ...@@ -1059,6 +1060,7 @@ STARTDOCSYMS ^{B}"##"/[^#]
<VariableDec>{ <VariableDec>{
"=" { // the assignment operator "=" { // the assignment operator
printf("====== VariableDec at line %d\n",yyLineNr);
} }
{B} { // spaces {B} { // spaces
} }
...@@ -1128,6 +1130,9 @@ STARTDOCSYMS ^{B}"##"/[^#] ...@@ -1128,6 +1130,9 @@ STARTDOCSYMS ^{B}"##"/[^#]
"#".* { // comment "#".* { // comment
BEGIN( VariableEnd ); BEGIN( VariableEnd );
} }
{IDENTIFIER} {
current->initializer+=yytext;
}
. { . {
current->initializer+=*yytext; current->initializer+=*yytext;
} }
...@@ -1378,7 +1383,7 @@ STARTDOCSYMS ^{B}"##"/[^#] ...@@ -1378,7 +1383,7 @@ STARTDOCSYMS ^{B}"##"/[^#]
static void parseCompounds(Entry *rt) static void parseCompounds(Entry *rt)
{ {
//printf("parseCompounds(%s)\n",rt->name.data()); //printf("parseCompounds(%s)\n",rt->name.data());
EntryListIterator eli(*rt->sublist); EntryListIterator eli(*rt->children());
Entry *ce; Entry *ce;
for (;(ce=eli.current());++eli) for (;(ce=eli.current());++eli)
{ {
...@@ -1395,9 +1400,9 @@ static void parseCompounds(Entry *rt) ...@@ -1395,9 +1400,9 @@ static void parseCompounds(Entry *rt)
current_root = ce ; current_root = ce ;
BEGIN( Search ); BEGIN( Search );
} }
else if (ce->parent) else if (ce->parent())
{ {
current_root = ce->parent; current_root = ce->parent();
//printf("Searching for member variables in %s parent=%s\n", //printf("Searching for member variables in %s parent=%s\n",
// ce->name.data(),ce->parent->name.data()); // ce->name.data(),ce->parent->name.data());
BEGIN( SearchMemVars ); BEGIN( SearchMemVars );
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -240,9 +240,9 @@ QCString convertToXML(const char *s); ...@@ -240,9 +240,9 @@ QCString convertToXML(const char *s);
QCString getOverloadDocs(); QCString getOverloadDocs();
void addMembersToMemberGroup(MemberList *ml, void addMembersToMemberGroup(/* in */ MemberList *ml,
MemberGroupSDict *memberGroupSDict, /* in,out */ MemberGroupSDict **ppMemberGroupSDict,
Definition *context); /* in */ Definition *context);
int extractClassNameFromType(const QCString &type,int &pos, int extractClassNameFromType(const QCString &type,int &pos,
QCString &name,QCString &templSpec); QCString &name,QCString &templSpec);
......
This diff is collapsed.
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