Commit 42eb3f9c authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.4.1-20050307

parent 47b04448
DOXYGEN Version 1.4.1-20050227 DOXYGEN Version 1.4.1-20050307
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 (27 February 2005) Dimitri van Heesch (07 March 2005)
DOXYGEN Version 1.4.1_20050227 DOXYGEN Version 1.4.1_20050307
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) (27 February 2005) Dimitri van Heesch (dimitri@stack.nl) (07 March 2005)
1.4.1-20050227 1.4.1-20050307
...@@ -823,12 +823,12 @@ MainWidget::MainWidget(QWidget *parent) ...@@ -823,12 +823,12 @@ MainWidget::MainWidget(QWidget *parent)
// load default settings // load default settings
m_settings.setPath("www.doxygen.org","Doxygen GUI"); m_settings.setPath("www.doxygen.org","Doxygen GUI");
bool ok; bool ok;
QString config = m_settings.readEntry("/config/default",QString::null,&ok); QString config = m_settings.readEntry("/doxywizard/config/default",QString::null,&ok);
if (ok && !config.isEmpty()) if (ok && !config.isEmpty())
{ {
Config::instance()->parseString("default settings",config); Config::instance()->parseString("default settings",config);
} }
QString workingDir = m_settings.readEntry("/config/workingdir",QString::null,&ok); QString workingDir = m_settings.readEntry("/doxywizard/config/workingdir",QString::null,&ok);
if (ok && !workingDir.isEmpty()) if (ok && !workingDir.isEmpty())
{ {
m_workingDir->setText(workingDir); m_workingDir->setText(workingDir);
...@@ -836,7 +836,7 @@ MainWidget::MainWidget(QWidget *parent) ...@@ -836,7 +836,7 @@ MainWidget::MainWidget(QWidget *parent)
setConfigSaved(FALSE); setConfigSaved(FALSE);
for (int i=0;i<10;i++) for (int i=0;i<10;i++)
{ {
QString entry = m_settings.readEntry(QString().sprintf("/recent/config%d",i)); QString entry = m_settings.readEntry(QString().sprintf("/doxywizard/recent/config%d",i));
if (!entry.isEmpty()) if (!entry.isEmpty())
{ {
addRecentFile(entry); addRecentFile(entry);
...@@ -1178,8 +1178,8 @@ void MainWidget::saveDefaults() ...@@ -1178,8 +1178,8 @@ void MainWidget::saveDefaults()
QString newConfig; QString newConfig;
QTextStream t(&newConfig,IO_WriteOnly); QTextStream t(&newConfig,IO_WriteOnly);
Config::instance()->writeTemplate(t,TRUE,FALSE); Config::instance()->writeTemplate(t,TRUE,FALSE);
m_settings.writeEntry("/config/default",newConfig); m_settings.writeEntry("/doxywizard/config/default",newConfig);
m_settings.writeEntry("/config/workingdir",m_workingDir->text()); m_settings.writeEntry("/doxywizard/config/workingdir",m_workingDir->text());
statusBar()->message("Current configuration saved as default",messageTimeout); statusBar()->message("Current configuration saved as default",messageTimeout);
} }
} }
...@@ -1361,7 +1361,7 @@ void MainWidget::addRecentFile(const QString &file) ...@@ -1361,7 +1361,7 @@ void MainWidget::addRecentFile(const QString &file)
for ( it = m_recentFiles.begin(); it != m_recentFiles.end(); ++it, ++i ) for ( it = m_recentFiles.begin(); it != m_recentFiles.end(); ++it, ++i )
{ {
m_recentMenu->insertItem(*it); m_recentMenu->insertItem(*it);
m_settings.writeEntry(QString().sprintf("/recent/config%d",i),*it); m_settings.writeEntry(QString().sprintf("/doxywizard/recent/config%d",i),*it);
} }
} }
......
...@@ -60,7 +60,7 @@ when the translator was updated. ...@@ -60,7 +60,7 @@ when the translator was updated.
<td>Brazilian Portuguese</td> <td>Brazilian Portuguese</td>
<td>Fabio "FJTC" Jun Takada Chino</td> <td>Fabio "FJTC" Jun Takada Chino</td>
<td>jun-chino at uol dot com dot br</td> <td>jun-chino at uol dot com dot br</td>
<td>up-to-date</td> <td>1.4.1</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Catalan</td> <td>Catalan</td>
...@@ -72,7 +72,7 @@ when the translator was updated. ...@@ -72,7 +72,7 @@ when the translator was updated.
<td>Chinese</td> <td>Chinese</td>
<td>Li Daobing<br>Wei Liu</td> <td>Li Daobing<br>Wei Liu</td>
<td>lidaobing at gmail dot com<br>liuwei at asiainfo dot com</td> <td>lidaobing at gmail dot com<br>liuwei at asiainfo dot com</td>
<td>up-to-date</td> <td>1.4.1</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Chinese Traditional</td> <td>Chinese Traditional</td>
...@@ -84,13 +84,13 @@ when the translator was updated. ...@@ -84,13 +84,13 @@ when the translator was updated.
<td>Croatian</td> <td>Croatian</td>
<td>Boris Bralo</td> <td>Boris Bralo</td>
<td>boris.bralo at zg dot htnet dot hr</td> <td>boris.bralo at zg dot htnet dot hr</td>
<td>up-to-date</td> <td>1.4.1</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>up-to-date</td> <td>1.4.1</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Danish</td> <td>Danish</td>
...@@ -120,13 +120,13 @@ when the translator was updated. ...@@ -120,13 +120,13 @@ when the translator was updated.
<td>French</td> <td>French</td>
<td>Xavier Outhier</td> <td>Xavier Outhier</td>
<td>xouthier at yahoo dot fr</td> <td>xouthier at yahoo dot fr</td>
<td>up-to-date</td> <td>1.4.1</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>German</td> <td>German</td>
<td>Jens Seidel</td> <td>Jens Seidel</td>
<td>jensseidel at users dot sf dot net</td> <td>jensseidel at users dot sf dot net</td>
<td>up-to-date</td> <td>1.4.1</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Greek</td> <td>Greek</td>
...@@ -136,15 +136,15 @@ when the translator was updated. ...@@ -136,15 +136,15 @@ when the translator was updated.
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Hungarian</td> <td>Hungarian</td>
<td>F&ouml;ldv&aacute;ri Gy&ouml;rgy<br>&Aacute;kos Kiss</td> <td>&Aacute;kos Kiss<br>F&ouml;ldv&aacute;ri Gy&ouml;rgy</td>
<td>foldvari lost at cyberspace<br>akiss at users dot sourceforge dot net</td> <td>akiss at users dot sourceforge dot net<br>foldvari lost at cyberspace</td>
<td>up-to-date</td> <td>1.4.1</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Italian</td> <td>Italian</td>
<td>Alessandro Falappa<br>Ahmed Aldo Faisal</td> <td>Alessandro Falappa<br>Ahmed Aldo Faisal</td>
<td>alessandro at falappa dot net<br>aaf23 at cam dot ac dot uk</td> <td>alessandro at falappa dot net<br>aaf23 at cam dot ac dot uk</td>
<td>up-to-date</td> <td>1.4.1</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Japanese</td> <td>Japanese</td>
...@@ -162,7 +162,7 @@ when the translator was updated. ...@@ -162,7 +162,7 @@ when the translator was updated.
<td>Korean</td> <td>Korean</td>
<td>SooYoung Jung<br>Richard Kim</td> <td>SooYoung Jung<br>Richard Kim</td>
<td>jung5000 at gmail dot com<br>ryk at dspwiz dot com</td> <td>jung5000 at gmail dot com<br>ryk at dspwiz dot com</td>
<td>up-to-date</td> <td>1.4.01</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>KoreanEn</td> <td>KoreanEn</td>
...@@ -186,7 +186,7 @@ when the translator was updated. ...@@ -186,7 +186,7 @@ when the translator was updated.
<td>Polish</td> <td>Polish</td>
<td>Piotr Kaminski<br>Grzegorz Kowal</td> <td>Piotr Kaminski<br>Grzegorz Kowal</td>
<td>Piotr.Kaminski at ctm dot gdynia dot pl<br>g_kowal at poczta dot onet dot pl</td> <td>Piotr.Kaminski at ctm dot gdynia dot pl<br>g_kowal at poczta dot onet dot pl</td>
<td>up-to-date</td> <td>1.4.1</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Portuguese</td> <td>Portuguese</td>
...@@ -198,19 +198,19 @@ when the translator was updated. ...@@ -198,19 +198,19 @@ when the translator was updated.
<td>Romanian</td> <td>Romanian</td>
<td>Alexandru Iosup</td> <td>Alexandru Iosup</td>
<td>aiosup at yahoo dot com</td> <td>aiosup at yahoo dot com</td>
<td>1.2.16</td> <td>1.4.1</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<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>up-to-date</td> <td>1.4.1</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Serbian</td> <td>Serbian</td>
<td>Dejan Milosavljevic</td> <td>Dejan Milosavljevic</td>
<td>dmilos at email dot com</td> <td>dmilos at email dot com</td>
<td>up-to-date</td> <td>1.4.1</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Slovak</td> <td>Slovak</td>
...@@ -234,13 +234,13 @@ when the translator was updated. ...@@ -234,13 +234,13 @@ when the translator was updated.
<td>Swedish</td> <td>Swedish</td>
<td>Mikael Hallin</td> <td>Mikael Hallin</td>
<td>mikaelhallin at yahoo dot se</td> <td>mikaelhallin at yahoo dot se</td>
<td>up-to-date</td> <td>1.4.1</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Ukrainian</td> <td>Ukrainian</td>
<td>Olexij Tkatchenko</td> <td>Olexij Tkatchenko</td>
<td>olexij.tkatchenko at parcs dot de</td> <td>olexij.tkatchenko at parcs dot de</td>
<td>up-to-date</td> <td>1.4.1</td>
</tr> </tr>
<!-- table content end --> <!-- table content end -->
</table> </table>
...@@ -259,19 +259,19 @@ when the translator was updated. ...@@ -259,19 +259,19 @@ when the translator was updated.
\hline \hline
Afrikaans & Johan Prinsloo & {\tt\tiny johan@zippysnoek.com} & 1.3.9 \\ Afrikaans & Johan Prinsloo & {\tt\tiny johan@zippysnoek.com} & 1.3.9 \\
\hline \hline
Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino@uol.com.br} & up-to-date \\ Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino@uol.com.br} & 1.4.1 \\
\hline \hline
Catalan & Albert Mora & {\tt\tiny amora@iua.upf.es} & 1.2.17 \\ Catalan & Albert Mora & {\tt\tiny amora@iua.upf.es} & 1.2.17 \\
\hline \hline
Chinese & Li Daobing & {\tt\tiny lidaobing@gmail.com} & up-to-date \\ Chinese & Li Daobing & {\tt\tiny lidaobing@gmail.com} & 1.4.1 \\
~ & Wei Liu & {\tt\tiny liuwei@asiainfo.com} & ~ \\ ~ & Wei Liu & {\tt\tiny liuwei@asiainfo.com} & ~ \\
\hline \hline
Chinese Traditional & Daniel YC Lin & {\tt\tiny daniel@twpda.com} & 1.3.8 \\ Chinese Traditional & Daniel YC Lin & {\tt\tiny daniel@twpda.com} & 1.3.8 \\
~ & Gary Lee & {\tt\tiny garylee@ecosine.com.tw} & ~ \\ ~ & Gary Lee & {\tt\tiny garylee@ecosine.com.tw} & ~ \\
\hline \hline
Croatian & Boris Bralo & {\tt\tiny boris.bralo@zg.htnet.hr} & up-to-date \\ Croatian & Boris Bralo & {\tt\tiny boris.bralo@zg.htnet.hr} & 1.4.1 \\
\hline \hline
Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & up-to-date \\ Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & 1.4.1 \\
\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
...@@ -281,16 +281,16 @@ when the translator was updated. ...@@ -281,16 +281,16 @@ when the translator was updated.
\hline \hline
Finnish & Olli Korhonen & {\tt\tiny olli.korhonen lost@cyberspace} & obsolete \\ Finnish & Olli Korhonen & {\tt\tiny olli.korhonen lost@cyberspace} & obsolete \\
\hline \hline
French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & up-to-date \\ French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & 1.4.1 \\
\hline \hline
German & Jens Seidel & {\tt\tiny jensseidel@users.sf.net} & up-to-date \\ German & Jens Seidel & {\tt\tiny jensseidel@users.sf.net} & 1.4.1 \\
\hline \hline
Greek & Harry Kalogirou & {\tt\tiny harkal@rainbow.cs.unipi.gr} & 1.2.11 \\ Greek & Harry Kalogirou & {\tt\tiny harkal@rainbow.cs.unipi.gr} & 1.2.11 \\
\hline \hline
Hungarian & F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt\tiny foldvari lost@cyberspace} & up-to-date \\ Hungarian & \'{A}kos Kiss & {\tt\tiny akiss@users.sourceforge.net} & 1.4.1 \\
~ & \'{A}kos Kiss & {\tt\tiny akiss@users.sourceforge.net} & ~ \\ ~ & F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt\tiny foldvari lost@cyberspace} & ~ \\
\hline \hline
Italian & Alessandro Falappa & {\tt\tiny alessandro@falappa.net} & up-to-date \\ Italian & Alessandro Falappa & {\tt\tiny alessandro@falappa.net} & 1.4.1 \\
~ & Ahmed Aldo Faisal & {\tt\tiny aaf23@cam.ac.uk} & ~ \\ ~ & Ahmed Aldo Faisal & {\tt\tiny aaf23@cam.ac.uk} & ~ \\
\hline \hline
Japanese & Ryunosuke Satoh & {\tt\tiny sun594@hotmail.com} & 1.3.9 \\ Japanese & Ryunosuke Satoh & {\tt\tiny sun594@hotmail.com} & 1.3.9 \\
...@@ -299,7 +299,7 @@ when the translator was updated. ...@@ -299,7 +299,7 @@ when the translator was updated.
\hline \hline
JapaneseEn & see the Japanese language & {\tt\tiny ~} & English based \\ JapaneseEn & see the Japanese language & {\tt\tiny ~} & English based \\
\hline \hline
Korean & SooYoung Jung & {\tt\tiny jung5000@gmail.com} & up-to-date \\ Korean & SooYoung Jung & {\tt\tiny jung5000@gmail.com} & 1.4.01 \\
~ & Richard Kim & {\tt\tiny ryk@dspwiz.com} & ~ \\ ~ & Richard Kim & {\tt\tiny ryk@dspwiz.com} & ~ \\
\hline \hline
KoreanEn & see the Korean language & {\tt\tiny ~} & English based \\ KoreanEn & see the Korean language & {\tt\tiny ~} & English based \\
...@@ -310,16 +310,16 @@ when the translator was updated. ...@@ -310,16 +310,16 @@ when the translator was updated.
\hline \hline
Norwegian & Lars Erik Jordet & {\tt\tiny lejordet@gmail.com} & 1.3.9 \\ Norwegian & Lars Erik Jordet & {\tt\tiny lejordet@gmail.com} & 1.3.9 \\
\hline \hline
Polish & Piotr Kaminski & {\tt\tiny Piotr.Kaminski@ctm.gdynia.pl} & up-to-date \\ Polish & Piotr Kaminski & {\tt\tiny Piotr.Kaminski@ctm.gdynia.pl} & 1.4.1 \\
~ & Grzegorz Kowal & {\tt\tiny g\_kowal@poczta.onet.pl} & ~ \\ ~ & Grzegorz Kowal & {\tt\tiny g\_kowal@poczta.onet.pl} & ~ \\
\hline \hline
Portuguese & Rui Godinho Lopes & {\tt\tiny ruiglopes@yahoo.com} & 1.3.3 \\ Portuguese & Rui Godinho Lopes & {\tt\tiny ruiglopes@yahoo.com} & 1.3.3 \\
\hline \hline
Romanian & Alexandru Iosup & {\tt\tiny aiosup@yahoo.com} & 1.2.16 \\ Romanian & Alexandru Iosup & {\tt\tiny aiosup@yahoo.com} & 1.4.1 \\
\hline \hline
Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & up-to-date \\ Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & 1.4.1 \\
\hline \hline
Serbian & Dejan Milosavljevic & {\tt\tiny dmilos@email.com} & up-to-date \\ Serbian & Dejan Milosavljevic & {\tt\tiny dmilos@email.com} & 1.4.1 \\
\hline \hline
Slovak & Stanislav Kudl\'{a}\v{c} & {\tt\tiny skudlac@pobox.sk} & 1.2.18 \\ Slovak & Stanislav Kudl\'{a}\v{c} & {\tt\tiny skudlac@pobox.sk} & 1.2.18 \\
\hline \hline
...@@ -327,9 +327,9 @@ when the translator was updated. ...@@ -327,9 +327,9 @@ when the translator was updated.
\hline \hline
Spanish & Francisco Oltra Thennet & {\tt\tiny foltra@puc.cl} & 1.3.8 \\ Spanish & Francisco Oltra Thennet & {\tt\tiny foltra@puc.cl} & 1.3.8 \\
\hline \hline
Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} & up-to-date \\ Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} & 1.4.1 \\
\hline \hline
Ukrainian & Olexij Tkatchenko & {\tt\tiny olexij.tkatchenko@parcs.de} & up-to-date \\ Ukrainian & Olexij Tkatchenko & {\tt\tiny olexij.tkatchenko@parcs.de} & 1.4.1 \\
\hline \hline
\end{tabular} \end{tabular}
\endlatexonly \endlatexonly
......
...@@ -54,8 +54,8 @@ TranslatorGreek ...@@ -54,8 +54,8 @@ TranslatorGreek
Harry Kalogirou: harkal@rainbow.cs.unipi.gr Harry Kalogirou: harkal@rainbow.cs.unipi.gr
TranslatorHungarian TranslatorHungarian
F&ouml;ldv&aacute;ri Gy&ouml;rgy: foldvari lost@cyberspace
&Aacute;kos Kiss: akiss@users.sourceforge.net &Aacute;kos Kiss: akiss@users.sourceforge.net
F&ouml;ldv&aacute;ri Gy&ouml;rgy: foldvari lost@cyberspace
TranslatorItalian TranslatorItalian
Alessandro Falappa: alessandro@falappa.net Alessandro Falappa: alessandro@falappa.net
......
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
2004/07/26 - Better reporting of not-needed adapters. 2004/07/26 - Better reporting of not-needed adapters.
2004/10/04 - Reporting of not called translator methods added. 2004/10/04 - Reporting of not called translator methods added.
2004/10/05 - Modified to check only doxygen/src sources for the previous report. 2004/10/05 - Modified to check only doxygen/src sources for the previous report.
2005/02/28 - Slight modification to generate "mailto.txt" auxiliary file.
""" """
from __future__ import generators from __future__ import generators
...@@ -1435,6 +1436,13 @@ class TrManager: ...@@ -1435,6 +1436,13 @@ class TrManager:
return trdic return trdic
def __email(self, classId):
"""Returns the first maintainer for the translator class"""
return self.__maintainersDic[classId][0][1]
def generateTranslatorReport(self): def generateTranslatorReport(self):
"""Generates the translator report.""" """Generates the translator report."""
...@@ -1466,7 +1474,12 @@ class TrManager: ...@@ -1466,7 +1474,12 @@ class TrManager:
s += 'and %d are English based.' % len(self.EnBasedIdLst) s += 'and %d are English based.' % len(self.EnBasedIdLst)
f.write(fill(s) + '\n\n') f.write(fill(s) + '\n\n')
# Write the list of up-to-date translator classes. # The e-mail addresses of the maintainers will be collected to
# the auxiliary file in the order of translator classes listed
# in the translator report.
fmail = file('mailto.txt', 'w')
# Write the list of up-to-date translator classes.
if self.upToDateIdLst: if self.upToDateIdLst:
s = '''The following translator classes are up-to-date (sorted s = '''The following translator classes are up-to-date (sorted
alphabetically). This means that they derive from the alphabetically). This means that they derive from the
...@@ -1476,12 +1489,18 @@ class TrManager: ...@@ -1476,12 +1489,18 @@ class TrManager:
s = s % len(self.requiredMethodsDic) s = s % len(self.requiredMethodsDic)
f.write('-' * 70 + '\n') f.write('-' * 70 + '\n')
f.write(fill(s) + '\n\n') f.write(fill(s) + '\n\n')
mailtoLst = []
for x in self.upToDateIdLst: for x in self.upToDateIdLst:
obj = self.__translDic[x] obj = self.__translDic[x]
f.write(' ' + obj.classId) f.write(' ' + obj.classId)
if obj.note: if obj.note:
f.write(' -- ' + obj.note) f.write(' -- ' + obj.note)
f.write('\n') f.write('\n')
mailtoLst.append(self.__email(obj.classId))
fmail.write('up-to-date\n')
fmail.write('; '.join(mailtoLst))
# Write the list of the adapter based classes. The very obsolete # Write the list of the adapter based classes. The very obsolete
# translators that derive from TranslatorEnglish are included. # translators that derive from TranslatorEnglish are included.
...@@ -1497,6 +1516,7 @@ class TrManager: ...@@ -1497,6 +1516,7 @@ class TrManager:
# Find also whether some adapter classes may be removed. # Find also whether some adapter classes may be removed.
adaptMinVersion = '9.9.99' adaptMinVersion = '9.9.99'
mailtoLst = []
for x in self.adaptIdLst: for x in self.adaptIdLst:
obj = self.__translDic[x] obj = self.__translDic[x]
f.write(' %-30s' % obj.classId) f.write(' %-30s' % obj.classId)
...@@ -1508,10 +1528,14 @@ class TrManager: ...@@ -1508,10 +1528,14 @@ class TrManager:
if obj.note: if obj.note:
f.write('\n\tNote: ' + obj.note + '\n') f.write('\n\tNote: ' + obj.note + '\n')
f.write('\n') f.write('\n')
mailtoLst.append(self.__email(obj.classId)) # to maintainer
# Check the level of required adapter classes. # Check the level of required adapter classes.
if obj.status != '0.0.00' and obj.status < adaptMinVersion: if obj.status != '0.0.00' and obj.status < adaptMinVersion:
adaptMinVersion = obj.status adaptMinVersion = obj.status
fmail.write('\n\ntranslator based\n')
fmail.write('; '.join(mailtoLst))
# Set the note if some old translator adapters are not needed # Set the note if some old translator adapters are not needed
# any more. Do it only when the script is called without arguments, # any more. Do it only when the script is called without arguments,
...@@ -1588,8 +1612,9 @@ class TrManager: ...@@ -1588,8 +1612,9 @@ class TrManager:
assert(obj.classId != 'Translator') assert(obj.classId != 'Translator')
obj.report(f) obj.report(f)
# Close the report file. # Close the report file and the auxiliary file with e-mails.
f.close() f.close()
fmail.close()
def __loadMaintainers(self): def __loadMaintainers(self):
...@@ -1599,7 +1624,7 @@ class TrManager: ...@@ -1599,7 +1624,7 @@ class TrManager:
fname = os.path.join(self.script_path, self.maintainersFileName) fname = os.path.join(self.script_path, self.maintainersFileName)
# Include the maintainers file to the checked group of files with # Include the maintainers file to the group of files checked with
# respect to the modification time. # respect to the modification time.
tim = os.path.getmtime(fname) tim = os.path.getmtime(fname)
if tim > self.lastModificationTime: if tim > self.lastModificationTime:
...@@ -1625,7 +1650,7 @@ class TrManager: ...@@ -1625,7 +1650,7 @@ class TrManager:
classId = line classId = line
maintainersLst = [] maintainersLst = []
inside = True inside = True
# Otherwise skip empty line that do not act as separators. # Otherwise skip empty line that do not act as separator.
else: # if inside the record else: # if inside the record
if line == '': # separator found if line == '': # separator found
...@@ -1642,8 +1667,8 @@ class TrManager: ...@@ -1642,8 +1667,8 @@ class TrManager:
t = (lst[0].strip(), lst[1].strip()) t = (lst[0].strip(), lst[1].strip())
self.__maintainersDic[classId].append(t) self.__maintainersDic[classId].append(t)
f.close() f.close()
def generateLanguageDoc(self): def generateLanguageDoc(self):
"""Checks the modtime of files and generates language.doc.""" """Checks the modtime of files and generates language.doc."""
self.__loadMaintainers() self.__loadMaintainers()
......
This diff is collapsed.
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.4.1_20050227 Version: 1.4.1_20050307
Release: 1 Release: 1
Epoch: 1 Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
...@@ -133,6 +133,8 @@ static int g_braceCount=0; ...@@ -133,6 +133,8 @@ static int g_braceCount=0;
static void saveObjCContext(); static void saveObjCContext();
static void restoreObjCContext(); static void restoreObjCContext();
//------------------------------------------------------------------- //-------------------------------------------------------------------
/*! Represents a stack of variable to class mappings as found in the /*! Represents a stack of variable to class mappings as found in the
...@@ -252,10 +254,15 @@ void VariableContext::addVariable(const QCString &type,const QCString &name) ...@@ -252,10 +254,15 @@ void VariableContext::addVariable(const QCString &type,const QCString &name)
addVariable(typeName,name); addVariable(typeName,name);
} }
} }
else // add a dummy entry so the name is hidden to avoid false links else
{ {
DBG_CTX((stderr,"** addVariable: dummy context\n")); if (m_scopes.count()>0) // for local variables add a dummy entry so the name
scope->append(lname,dummyContext); // is hidden to avoid false links to global variables with the same name
// TODO: make this work for namespaces as well!
{
DBG_CTX((stderr,"** addVariable: dummy context\n"));
scope->append(lname,dummyContext);
}
} }
} }
...@@ -281,9 +288,8 @@ ClassDef *VariableContext::findVariable(const QCString &name) ...@@ -281,9 +288,8 @@ ClassDef *VariableContext::findVariable(const QCString &name)
return result; return result;
} }
const ClassDef *VariableContext::dummyContext = (ClassDef*)0x8;
static VariableContext g_theVarContext; static VariableContext g_theVarContext;
const ClassDef *VariableContext::dummyContext = (ClassDef*)0x8;
//------------------------------------------------------------------- //-------------------------------------------------------------------
...@@ -848,6 +854,7 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName, ...@@ -848,6 +854,7 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
} }
ClassDef *cd=0,*lcd=0; ClassDef *cd=0,*lcd=0;
MemberDef *md=0; MemberDef *md=0;
bool isLocal=FALSE;
//fprintf(stderr,"generateClassOrGlobalLink(className=%s)\n",className.data()); //fprintf(stderr,"generateClassOrGlobalLink(className=%s)\n",className.data());
if ((lcd=g_theVarContext.findVariable(className))==0) // not a local variable if ((lcd=g_theVarContext.findVariable(className))==0) // not a local variable
...@@ -859,7 +866,7 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName, ...@@ -859,7 +866,7 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
{ {
cd=getResolvedClass(d,g_sourceFileDef,className.left(i),&md); cd=getResolvedClass(d,g_sourceFileDef,className.left(i),&md);
} }
//print("is found as a type %s\n",cd?cd->name().data():"<null>"); //printf("is found as a type %s\n",cd?cd->name().data():"<null>");
if (cd==0 && md==0) // also see if it is variable or enum or enum value if (cd==0 && md==0) // also see if it is variable or enum or enum value
{ {
if (getLink(g_classScope,clName,ol,clName)) if (getLink(g_classScope,clName,ol,clName))
...@@ -874,7 +881,8 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName, ...@@ -874,7 +881,8 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
{ {
g_theCallContext.setClass(lcd); g_theCallContext.setClass(lcd);
} }
//fprintf(stderr,"is a local variable!\n"); isLocal=TRUE;
//fprintf(stderr,"is a local variable cd=%p!\n",cd);
} }
if (cd && cd->isLinkable()) // is it a linkable class if (cd && cd->isLinkable()) // is it a linkable class
{ {
...@@ -907,7 +915,7 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName, ...@@ -907,7 +915,7 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
else // not a class, maybe a global member else // not a class, maybe a global member
{ {
//printf("class %s not linkable! cd=%p md=%p typeOnly=%d\n",clName,cd,md,typeOnly); //printf("class %s not linkable! cd=%p md=%p typeOnly=%d\n",clName,cd,md,typeOnly);
if (md!=0 || (cd==0 && !typeOnly)) // not a class, see if it is a global enum/variable/typedef. if (!isLocal && (md!=0 || (cd==0 && !typeOnly))) // not a class, see if it is a global enum/variable/typedef.
{ {
if (md==0) // not found as a typedef if (md==0) // not found as a typedef
{ {
......
...@@ -57,6 +57,8 @@ static QCString g_fileName; ...@@ -57,6 +57,8 @@ static QCString g_fileName;
static int g_lineNr; static int g_lineNr;
static int g_condCtx; static int g_condCtx;
static QStack<CondCtx> g_condStack; static QStack<CondCtx> g_condStack;
static QCString g_blockName;
static int g_lastCommentContext;
static void replaceCommentMarker(const char *s,int len) static void replaceCommentMarker(const char *s,int len)
{ {
...@@ -217,6 +219,32 @@ static QCString handleCondCmdInAliases(const QCString &s) ...@@ -217,6 +219,32 @@ static QCString handleCondCmdInAliases(const QCString &s)
return result; return result;
} }
/** copies string \a s with length \a len to the output, while
* replacing any alias commands found in the string.
*/
static void replaceAliases(const char *s,int len)
{
static QRegExp cmd("[@\\\\][a-z_A-Z][a-z_A-Z0-9]*");
QCString in=s;
int p=0,i,l;
while ((i=cmd.match(in,p,&l))!=-1)
{
copyToOutput(s+p,i-p);
QCString *pValue=Doxygen::aliasDict[in.mid(i+1,l-1)];
if (pValue)
{
QCString val = handleCondCmdInAliases(*pValue);
copyToOutput(val.data(),val.length());
}
else
{
copyToOutput(s+i,l);
}
p=i+l;
}
copyToOutput(s+p,len-p);
}
#undef YY_INPUT #undef YY_INPUT
#define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size); #define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size);
...@@ -245,7 +273,6 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) ...@@ -245,7 +273,6 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
%x Verbatim %x Verbatim
%x ReadLine %x ReadLine
%x CondLine %x CondLine
%x SkipLang
%% %%
...@@ -271,7 +298,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) ...@@ -271,7 +298,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
} }
g_blockHeadCol=g_col; g_blockHeadCol=g_col;
copyToOutput("/**",3); copyToOutput("/**",3);
copyToOutput(yytext+i,yyleng-i); //copyToOutput(yytext+i,yyleng-i);
replaceAliases(yytext+i,yyleng-i);
BEGIN(SComment); BEGIN(SComment);
} }
<Scan>"//##Documentation".*/\n { /* Start of Rational Rose ANSI C++ comment block */ <Scan>"//##Documentation".*/\n { /* Start of Rational Rose ANSI C++ comment block */
...@@ -279,7 +307,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) ...@@ -279,7 +307,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
int i=17; //=strlen("//##Documentation"); int i=17; //=strlen("//##Documentation");
g_blockHeadCol=g_col; g_blockHeadCol=g_col;
copyToOutput("/**",3); copyToOutput("/**",3);
copyToOutput(yytext+i,yyleng-i); //copyToOutput(yytext+i,yyleng-i);
replaceAliases(yytext+i,yyleng-i);
BEGIN(SComment); BEGIN(SComment);
} }
<Scan>"//"/.*\n { /* one line C++ comment */ <Scan>"//"/.*\n { /* one line C++ comment */
...@@ -291,16 +320,21 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) ...@@ -291,16 +320,21 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
BEGIN(CComment); BEGIN(CComment);
} }
<Scan>[\\@]"verbatim" { /* start of a verbatim block */ <CComment>[\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code") { /* start of a verbatim block */
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
g_blockName=&yytext[1];
g_lastCommentContext = YY_START;
BEGIN(Verbatim); BEGIN(Verbatim);
} }
<Scan>. { /* any other character */ <Scan>. { /* any other character */
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
} }
<Verbatim>[\\@]"endverbatim" { /* end of verbatim block */ <Verbatim>[\\@]("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"endrtfonly"|"endmanonly"|"enddot"|"endcode") { /* end of verbatim block */
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
BEGIN(Scan); if (&yytext[4]==g_blockName)
{
BEGIN(g_lastCommentContext);
}
} }
<Verbatim>[^@\\\n]* { /* any character not a backslash or new line */ <Verbatim>[^@\\\n]* { /* any character not a backslash or new line */
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
...@@ -311,25 +345,6 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) ...@@ -311,25 +345,6 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
<Verbatim>. { /* any other character */ <Verbatim>. { /* any other character */
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
} }
<SkipLang>[\\@]"~"[a-zA-Z]* { /* end of verbatim block */
QCString langId = &yytext[2];
if (langId.isEmpty() ||
stricmp(Config_getEnum("OUTPUT_LANGUAGE"),langId)==0)
{ // enable language specific section
BEGIN(CComment);
}
}
<SkipLang>[^*@\\\n]* { /* any character not a *, @, backslash or new line */
}
<SkipLang>\n { /* new line in verbatim block */
copyToOutput(yytext,yyleng);
}
<SkipLang>"*/" { /* end of comment block */
copyToOutput(yytext,yyleng);
BEGIN(Scan);
}
<SkipLang>. { /* any other character */
}
<SkipString>\\. { /* escaped character in string */ <SkipString>\\. { /* escaped character in string */
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
} }
...@@ -411,14 +426,6 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) ...@@ -411,14 +426,6 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
<CComment,ReadLine>("\\\\"|"@@")[~a-z_A-Z][a-z_A-Z0-9]*[ \t]* { // escaped command <CComment,ReadLine>("\\\\"|"@@")[~a-z_A-Z][a-z_A-Z0-9]*[ \t]* { // escaped command
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
} }
<CComment>[@\\]"~"[a-zA-Z]* { // language switch
QCString langId = &yytext[2];
if (!langId.isEmpty() &&
stricmp(Config_getEnum("OUTPUT_LANGUAGE"),langId)!=0)
{
BEGIN(SkipLang);
}
}
<CComment,ReadLine>[\\@]"cond"[ \t]+ { // conditional section <CComment,ReadLine>[\\@]"cond"[ \t]+ { // conditional section
g_condCtx = YY_START; g_condCtx = YY_START;
BEGIN(CondLine); BEGIN(CondLine);
...@@ -492,7 +499,7 @@ void replaceComment(int offset) ...@@ -492,7 +499,7 @@ void replaceComment(int offset)
} }
} }
/*! This function does two things: /*! This function does three things:
* -# It converts multi-line C++ style comment blocks (that are aligned) * -# It converts multi-line C++ style comment blocks (that are aligned)
* to C style comment blocks (if MULTILINE_CPP_IS_BRIEF is set to NO). * to C style comment blocks (if MULTILINE_CPP_IS_BRIEF is set to NO).
* -# It replaces aliases with their definition (see ALIASES) * -# It replaces aliases with their definition (see ALIASES)
......
...@@ -161,7 +161,9 @@ static DocCmdMap docCmdMap[] = ...@@ -161,7 +161,9 @@ static DocCmdMap docCmdMap[] =
{ "verbatim", &handleFormatBlock }, { "verbatim", &handleFormatBlock },
{ "latexonly", &handleFormatBlock }, { "latexonly", &handleFormatBlock },
{ "htmlonly", &handleFormatBlock }, { "htmlonly", &handleFormatBlock },
{ "xmlonly", &handleFormatBlock },
{ "rtfonly", &handleFormatBlock }, { "rtfonly", &handleFormatBlock },
{ "manonly", &handleFormatBlock },
{ "dot", &handleFormatBlock }, { "dot", &handleFormatBlock },
{ "code", &handleFormatBlock }, { "code", &handleFormatBlock },
{ "addindex", &handleAddIndex }, { "addindex", &handleAddIndex },
...@@ -316,7 +318,6 @@ static QCString xrefItemTitle; ...@@ -316,7 +318,6 @@ static QCString xrefItemTitle;
static QCString xrefListTitle; static QCString xrefListTitle;
static Protection protection; static Protection protection;
static bool xrefAppendToPrev;
static bool xrefAppendFlag; static bool xrefAppendFlag;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
...@@ -405,8 +406,8 @@ static void addXRefItem(const char *listName,const char *itemTitle, ...@@ -405,8 +406,8 @@ static void addXRefItem(const char *listName,const char *itemTitle,
{ {
Entry *docEntry = current; // inBody && previous ? previous : current; Entry *docEntry = current; // inBody && previous ? previous : current;
if (listName==0) return; if (listName==0) return;
//printf("addXRefItem(%s,%s,%s,%d)\n",listName,itemTitle,listTitle,append); //printf("addXRefItem(%s,%s,%s,%d)\n",listName,itemTitle,listTitle,append);
ListItemInfo *lii=0; ListItemInfo *lii=0;
RefList *refList = Doxygen::xrefLists->find(listName); RefList *refList = Doxygen::xrefLists->find(listName);
if (refList==0) // new list if (refList==0) // new list
...@@ -539,17 +540,20 @@ static void addSection() ...@@ -539,17 +540,20 @@ static void addSection()
// selects the output to write to // selects the output to write to
static inline void setOutput(OutputContext ctx) static inline void setOutput(OutputContext ctx)
{ {
bool xrefAppendToPrev = xrefAppendFlag;
// determine append flag for the next item (i.e. the end of this item)
xrefAppendFlag = ctx==OutputXRef && newXRefKind==xrefKind &&
(xrefKind!=XRef_Item || newXRefItemKey==xrefItemKey);
//printf("refKind=%d newXRefKind=%d xrefAppendToPrev=%d xrefAppendFlag=%d\n",
// xrefKind,newXRefKind,xrefAppendToPrev,xrefAppendFlag);
xrefItemKey = newXRefItemKey;
//printf("setOutput(inContext=%d ctx=%d)\n",inContext,ctx); //printf("setOutput(inContext=%d ctx=%d)\n",inContext,ctx);
if (inContext==OutputXRef) // end of XRef section => add the item if (inContext==OutputXRef) // end of XRef section => add the item
{ {
// See if we can append this new xref item to the previous one. // See if we can append this new xref item to the previous one.
// We know this at the start of the next item of the same // We know this at the start of the next item of the same
// type and need to remember this until the end of that item. // type and need to remember this until the end of that item.
xrefAppendToPrev = xrefAppendFlag;
xrefAppendFlag = ctx==OutputXRef && newXRefKind==xrefKind &&
(xrefKind!=XRef_Item || newXRefItemKey==xrefItemKey);
//printf("refKind=%d newXRefKind=%d xrefAppendToPrev=%d xrefAppendFlag=%d\n",
// xrefKind,newXRefKind,xrefAppendToPrev,xrefAppendFlag);
switch(xrefKind) switch(xrefKind)
{ {
case XRef_Todo: case XRef_Todo:
...@@ -604,7 +608,7 @@ static inline void setOutput(OutputContext ctx) ...@@ -604,7 +608,7 @@ static inline void setOutput(OutputContext ctx)
case OutputXRef: case OutputXRef:
pOutputString = &outputXRef; pOutputString = &outputXRef;
// first item found, so can't append to previous // first item found, so can't append to previous
xrefAppendFlag = FALSE; //xrefAppendFlag = FALSE;
break; break;
} }
} }
...@@ -641,8 +645,7 @@ static int yyread(char *buf,int max_size) ...@@ -641,8 +645,7 @@ static int yyread(char *buf,int max_size)
/* start command character */ /* start command character */
CMD ("\\"|"@") CMD ("\\"|"@")
DETAILEDCMD {CMD}("arg"|"attention"|"author"|"bug"|"code"|"date"|"deprecated"|"dot"|"dotfile"|"example"|"htmlinclude"|"htmlonly"|"image"|"include"|"includelineno"|"internal"|"invariant"|"latexonly"|"li"|"line"|manonly"|"name"|"note"|"par"|"paragraph"|"param"|"post"|"pre"|"remarks"|"relate"[sd]"("also")?|"remarks"|"return"[s]?|"retval"|"sa"|"section"|"see"|"since"|"subsection"|"subsubsection"|"test"|"throw"|"todo"|"until"|"verbatim"|"verbinclude"|"version"|"warning"|"xmlonly"|"xrefitem") DETAILEDCMD {CMD}("arg"|"attention"|"author"|"bug"|"code"|"date"|"deprecated"|"dot"|"dotfile"|"example"|"htmlinclude"|"htmlonly"|"image"|"include"|"includelineno"|"internal"|"invariant"|"latexonly"|"li"|"line"|manonly"|"name"|"note"|"par"|"paragraph"|"param"|"post"|"pre"|"remarks"|"relate"[sd]"("also")?|"remarks"|"return"[s]?|"retval"|"sa"|"section"|"see"|"since"|"subsection"|"subsubsection"|"test"|"throw"|"todo"|"until"|"verbatim"|"verbinclude"|"version"|"warning"|"xrefitem")
/* ("image"|"author"|"internal"|"version"|"date"|"deprecated"|"param"|"exception"|"return"[s]?|"retval"|"bug"|"warning"|"par"|"sa"|"see"|"pre"|"post"|"invariant"|"note"|"remark"[s]?|"todo"|"test"|"xrefitem"|"ingroup"|"callgraph"|"latexonly"|"htmlonly"|"xmlonly"|"{"|"verbatim"|"dotfile"|"dot"|"defgroup"|"addtogroup"|"weakgroup"|"class"|"namespace"|"union"|"struct"|"fn"|"var"|"details"|"typedef"|"def"|"overload")|("<"{PRE}">") */
PRE [pP][rR][eE] PRE [pP][rR][eE]
TABLE [tT][aA][bB][lL][eE] TABLE [tT][aA][bB][lL][eE]
P [pP] P [pP]
...@@ -706,6 +709,7 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) ...@@ -706,6 +709,7 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
%x ReadFormulaLong %x ReadFormulaLong
%x AnchorLabel %x AnchorLabel
%x HtmlComment %x HtmlComment
%x SkipLang
%% %%
...@@ -720,11 +724,15 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) ...@@ -720,11 +724,15 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
* end of brief description due to some command (@command, or <command>). * end of brief description due to some command (@command, or <command>).
* words and whitespace and other characters (#,?!, etc). * words and whitespace and other characters (#,?!, etc).
* grouping commands (e.g. @{ and @}) * grouping commands (e.g. @{ and @})
* language switch (e.g. \~english or \~).
*/ */
<Comment>{CMD}{CMD}[a-z_A-Z]+{B}* { // escaped command <Comment>{CMD}{CMD}[a-z_A-Z]+{B}* { // escaped command
addOutput(yytext); addOutput(yytext);
} }
<Comment>{CMD}{CMD}"~"[a-z_A-Z]* { // escaped command
addOutput(yytext);
}
<Comment>("\\"[a-z_A-Z]+)+"\\" { // directory (or chain of commands!) <Comment>("\\"[a-z_A-Z]+)+"\\" { // directory (or chain of commands!)
addOutput(yytext); addOutput(yytext);
} }
...@@ -757,6 +765,14 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) ...@@ -757,6 +765,14 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
<Comment>("\\\\"|"@@")"f"[$\[{] { // escaped formula command <Comment>("\\\\"|"@@")"f"[$\[{] { // escaped formula command
addOutput(yytext); addOutput(yytext);
} }
<Comment>{CMD}"~"[a-z_A-Z]* { // language switch command
QCString langId = &yytext[2];
if (!langId.isEmpty() &&
stricmp(Config_getEnum("OUTPUT_LANGUAGE"),langId)!=0)
{ // enable language specific section
BEGIN(SkipLang);
}
}
<Comment>{CMD}"f{"[^}\n]+"}" { // start of a formula with custom environment <Comment>{CMD}"f{"[^}\n]+"}" { // start of a formula with custom environment
formulaText="\\begin"; formulaText="\\begin";
formulaEnv=&yytext[2]; formulaEnv=&yytext[2];
...@@ -793,7 +809,7 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) ...@@ -793,7 +809,7 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
addOutput(yytext[0]); addOutput(yytext[0]);
addOutput(yytext[2]); addOutput(yytext[2]);
} }
<Comment>\n({B}*\n)+ { // at least one blank line <Comment>(\n|\\_linebr)({B}*(\n|\\_linebr))+ { // at least one blank line (or blank line command)
if (inContext) if (inContext)
{ {
setOutput(OutputDoc); setOutput(OutputDoc);
...@@ -1091,7 +1107,6 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) ...@@ -1091,7 +1107,6 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
<XRefItemParam1>{ID} { // first argument <XRefItemParam1>{ID} { // first argument
newXRefItemKey=yytext; newXRefItemKey=yytext;
setOutput(OutputXRef); setOutput(OutputXRef);
xrefItemKey==yytext;
BEGIN(XRefItemParam2); BEGIN(XRefItemParam2);
} }
<XRefItemParam1>{LC} { // line continuation <XRefItemParam1>{LC} { // line continuation
...@@ -1274,7 +1289,7 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) ...@@ -1274,7 +1289,7 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
/* ----- handle arguments of the preformatted block commands ------- */ /* ----- handle arguments of the preformatted block commands ------- */
<FormatBlock>{CMD}("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"enddot"|"endcode")/{NW} { // possible ends <FormatBlock>{CMD}("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"endrtfonly"|"endmanonly"|"enddot"|"endcode")/{NW} { // possible ends
addOutput(yytext); addOutput(yytext);
if (&yytext[4]==blockName) // found end of the block if (&yytext[4]==blockName) // found end of the block
{ {
...@@ -1429,6 +1444,7 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) ...@@ -1429,6 +1444,7 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
} }
<NameParam>. { // ignore other stuff <NameParam>. { // ignore other stuff
nameHeader+=*yytext; nameHeader+=*yytext;
current->name+=*yytext;
} }
/* ----- handle argument of ingroup command ------- */ /* ----- handle argument of ingroup command ------- */
...@@ -1523,6 +1539,25 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) ...@@ -1523,6 +1539,25 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
BEGIN(Comment); BEGIN(Comment);
} }
/* ----- handle language specific sections ------- */
<SkipLang>[\\@]"~"[a-zA-Z]* { /* language switch */
QCString langId = &yytext[2];
if (langId.isEmpty() ||
stricmp(Config_getEnum("OUTPUT_LANGUAGE"),langId)==0)
{ // enable language specific section
BEGIN(Comment);
}
}
<SkipLang>[^*@\\\n]* { /* any character not a *, @, backslash or new line */
}
<SkipLang>{DOCNL} { /* new line in verbatim block */
if (*yytext=='\n') yyLineNr++;
}
<SkipLang>. { /* any other character */
}
%% %%
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
......
This diff is collapsed.
...@@ -125,7 +125,8 @@ static const char *defaultStyleSheet = ...@@ -125,7 +125,8 @@ static const char *defaultStyleSheet =
"A:hover { text-decoration: none; background-color: #f2f2ff }\n" "A:hover { text-decoration: none; background-color: #f2f2ff }\n"
"DL.el { margin-left: -1cm }\n" "DL.el { margin-left: -1cm }\n"
".fragment {\n" ".fragment {\n"
" font-family: monospace\n" " font-family: Fixed, monospace;\n"
" font-size: 90%;\n"
"}\n" "}\n"
"PRE.fragment {\n" "PRE.fragment {\n"
" border: 1px solid #CCCCCC;\n" " border: 1px solid #CCCCCC;\n"
...@@ -843,8 +844,10 @@ void HtmlGenerator::codify(const char *str) ...@@ -843,8 +844,10 @@ void HtmlGenerator::codify(const char *str)
t << spaces.left(spacesToNextTabStop); t << spaces.left(spacesToNextTabStop);
col+=spacesToNextTabStop; col+=spacesToNextTabStop;
break; break;
case '\n': t << '\n'; col=0; case '\n': t << "\n"; col=0;
break; break;
//case '\n': t << "<br>"; col=0;
// break;
case '\r': break; case '\r': break;
case '<': t << "&lt;"; col++; case '<': t << "&lt;"; col++;
break; break;
...@@ -852,6 +855,8 @@ void HtmlGenerator::codify(const char *str) ...@@ -852,6 +855,8 @@ void HtmlGenerator::codify(const char *str)
break; break;
case '&': t << "&amp;"; col++; case '&': t << "&amp;"; col++;
break; break;
//case ' ': t << "&nbsp;"; col++;
// break;
case '\\': case '\\':
if (*p=='<') if (*p=='<')
{ t << "&lt;"; p++; } { t << "&lt;"; p++; }
......
...@@ -1707,34 +1707,24 @@ static void writeMemberIndexFiltered(OutputList &ol, ClassMemberHighlight hl) ...@@ -1707,34 +1707,24 @@ static void writeMemberIndexFiltered(OutputList &ol, ClassMemberHighlight hl)
numPages=127; numPages=127;
} }
struct struct CmhlInfo
{ {
CmhlInfo(const char *fn,const char *t) : fname(fn), title(t) {}
const char *fname; const char *fname;
QCString title; QCString title;
} cmhlInfo[] = } cmhlInfo[] =
{ {
{ "functions", 0 }, CmhlInfo("functions", theTranslator->trAll()),
{ "functions_func",0 }, CmhlInfo("functions_func",theTranslator->trFunctions()),
{ "functions_vars",0 }, CmhlInfo("functions_vars",theTranslator->trVariables()),
{ "functions_type",0 }, CmhlInfo("functions_type",theTranslator->trTypedefs()),
{ "functions_enum",0 }, CmhlInfo("functions_enum",theTranslator->trEnumerations()),
{ "functions_eval",0 }, CmhlInfo("functions_eval",theTranslator->trEnumerationValues()),
{ "functions_rela",0 }, CmhlInfo("functions_prop",theTranslator->trProperties()),
{ "functions_prop",0 }, CmhlInfo("functions_evnt",theTranslator->trEvents()),
{ "functions_evnt",0 }, CmhlInfo("functions_rela",theTranslator->trRelatedFunctions())
{ "functions_rela",0 },
}; };
cmhlInfo[0].title=theTranslator->trAll();
cmhlInfo[1].title=theTranslator->trFunctions();
cmhlInfo[2].title=theTranslator->trVariables();
cmhlInfo[3].title=theTranslator->trTypedefs();
cmhlInfo[4].title=theTranslator->trEnumerations();
cmhlInfo[5].title=theTranslator->trEnumerationValues();
cmhlInfo[6].title=theTranslator->trProperties();
cmhlInfo[7].title=theTranslator->trEvents();
cmhlInfo[8].title=theTranslator->trRelatedFunctions();
ol.pushGeneratorState(); ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
...@@ -2114,27 +2104,21 @@ static void writeFileMemberIndexFiltered(OutputList &ol, FileMemberHighlight hl) ...@@ -2114,27 +2104,21 @@ static void writeFileMemberIndexFiltered(OutputList &ol, FileMemberHighlight hl)
numPages=127; numPages=127;
} }
struct struct FmhlInfo
{ {
FmhlInfo(const char *fn,const char *t) : fname(fn), title(t) {}
const char *fname; const char *fname;
QCString title; QCString title;
} fmhlInfo[] = } fmhlInfo[] =
{ {
{ "globals", 0 }, FmhlInfo("globals", theTranslator->trAll()),
{ "globals_func",0 }, FmhlInfo("globals_func",theTranslator->trFunctions()),
{ "globals_vars",0 }, FmhlInfo("globals_vars",theTranslator->trVariables()),
{ "globals_type",0 }, FmhlInfo("globals_type",theTranslator->trTypedefs()),
{ "globals_enum",0 }, FmhlInfo("globals_enum",theTranslator->trEnumerations()),
{ "globals_eval",0 }, FmhlInfo("globals_eval",theTranslator->trEnumerationValues()),
{ "globals_defs",0 } FmhlInfo("globals_defs",theTranslator->trDefines())
}; };
fmhlInfo[0].title=theTranslator->trAll();
fmhlInfo[1].title=theTranslator->trFunctions();
fmhlInfo[2].title=theTranslator->trVariables();
fmhlInfo[3].title=theTranslator->trTypedefs();
fmhlInfo[4].title=theTranslator->trEnumerations();
fmhlInfo[5].title=theTranslator->trEnumerationValues();
fmhlInfo[6].title=theTranslator->trDefines();
ol.pushGeneratorState(); ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
...@@ -2241,25 +2225,20 @@ static void writeNamespaceMemberIndexFiltered(OutputList &ol, ...@@ -2241,25 +2225,20 @@ static void writeNamespaceMemberIndexFiltered(OutputList &ol,
numPages=127; numPages=127;
} }
struct struct NmhlInfo
{ {
NmhlInfo(const char *fn,const char *t) : fname(fn), title(t) {}
const char *fname; const char *fname;
QCString title; QCString title;
} nmhlInfo[] = } nmhlInfo[] =
{ {
{ "namespacemembers", 0 }, NmhlInfo("namespacemembers", theTranslator->trAll()),
{ "namespacemembers_func",0 }, NmhlInfo("namespacemembers_func",theTranslator->trFunctions()),
{ "namespacemembers_vars",0 }, NmhlInfo("namespacemembers_vars",theTranslator->trVariables()),
{ "namespacemembers_type",0 }, NmhlInfo("namespacemembers_type",theTranslator->trTypedefs()),
{ "namespacemembers_enum",0 }, NmhlInfo("namespacemembers_enum",theTranslator->trEnumerations()),
{ "namespacemembers_eval",0 } NmhlInfo("namespacemembers_eval",theTranslator->trEnumerationValues())
}; };
nmhlInfo[0].title=theTranslator->trAll();
nmhlInfo[1].title=theTranslator->trFunctions();
nmhlInfo[2].title=theTranslator->trVariables();
nmhlInfo[3].title=theTranslator->trTypedefs();
nmhlInfo[4].title=theTranslator->trEnumerations();
nmhlInfo[5].title=theTranslator->trEnumerationValues();
ol.pushGeneratorState(); ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
......
...@@ -509,7 +509,11 @@ bool MemberDef::hasExamples() ...@@ -509,7 +509,11 @@ bool MemberDef::hasExamples()
QCString MemberDef::getOutputFileBase() const QCString MemberDef::getOutputFileBase() const
{ {
QCString baseName; QCString baseName;
if (m_templateMaster) if (explicitOutputFileBase)
{
return explicitOutputFileBase;
}
else if (m_templateMaster)
{ {
return m_templateMaster->getOutputFileBase(); return m_templateMaster->getOutputFileBase();
} }
...@@ -835,6 +839,10 @@ void MemberDef::writeDeclaration(OutputList &ol, ...@@ -835,6 +839,10 @@ void MemberDef::writeDeclaration(OutputList &ol,
// hide members whose brief section should not be visible // hide members whose brief section should not be visible
//if (!isBriefSectionVisible()) return; //if (!isBriefSectionVisible()) return;
Definition *d=0;
ASSERT (cd!=0 || nd!=0 || fd!=0 || gd!=0); // member should belong to something
if (cd) d=cd; else if (nd) d=nd; else if (fd) d=fd; else d=gd;
// write tag file information of this member // write tag file information of this member
if (!Config_getString("GENERATE_TAGFILE").isEmpty()) if (!Config_getString("GENERATE_TAGFILE").isEmpty())
{ {
...@@ -875,6 +883,7 @@ void MemberDef::writeDeclaration(OutputList &ol, ...@@ -875,6 +883,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
Doxygen::tagFile << "\">" << endl; Doxygen::tagFile << "\">" << endl;
Doxygen::tagFile << " <type>" << convertToXML(typeString()) << "</type>" << endl; Doxygen::tagFile << " <type>" << convertToXML(typeString()) << "</type>" << endl;
Doxygen::tagFile << " <name>" << convertToXML(name()) << "</name>" << endl; Doxygen::tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
Doxygen::tagFile << " <anchorfile>" << convertToXML(getOutputFileBase()+Doxygen::htmlFileExtension) << "</anchorfile>" << endl;
Doxygen::tagFile << " <anchor>" << convertToXML(anchor()) << "</anchor>" << endl; Doxygen::tagFile << " <anchor>" << convertToXML(anchor()) << "</anchor>" << endl;
Doxygen::tagFile << " <arglist>" << convertToXML(argsString()) << "</arglist>" << endl; Doxygen::tagFile << " <arglist>" << convertToXML(argsString()) << "</arglist>" << endl;
writeDocAnchorsToTagFile(); writeDocAnchorsToTagFile();
...@@ -889,9 +898,6 @@ void MemberDef::writeDeclaration(OutputList &ol, ...@@ -889,9 +898,6 @@ void MemberDef::writeDeclaration(OutputList &ol,
Doxygen::searchIndex->addWord(qualifiedName(),FALSE); Doxygen::searchIndex->addWord(qualifiedName(),FALSE);
} }
Definition *d=0;
ASSERT (cd!=0 || nd!=0 || fd!=0 || gd!=0); // member should belong to something
if (cd) d=cd; else if (nd) d=nd; else if (fd) d=fd; else d=gd;
QCString cname = d->name(); QCString cname = d->name();
QCString cfname = getOutputFileBase(); QCString cfname = getOutputFileBase();
QCString osname = cname; QCString osname = cname;
...@@ -2080,11 +2086,14 @@ void MemberDef::addListReference(Definition *) ...@@ -2080,11 +2086,14 @@ void MemberDef::addListReference(Definition *)
} }
QCString memName = name(); QCString memName = name();
Definition *pd=getOuterScope(); Definition *pd=getOuterScope();
if ((!Config_getBool("HIDE_SCOPE_NAMES") && // there is a scope if (!isRelated() &&
(
(!Config_getBool("HIDE_SCOPE_NAMES") && // there is a scope
pd && pd!=Doxygen::globalScope) // and we can show it pd && pd!=Doxygen::globalScope) // and we can show it
|| ||
((pd=getClassDef()) && !isRelated()) // it's a class so we (pd=getClassDef()) // it's a class so we
// show the scope anyway // show the scope anyway
)
) )
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_JAVA")) if (Config_getBool("OPTIMIZE_OUTPUT_JAVA"))
...@@ -2328,3 +2337,13 @@ QCString MemberDef::qualifiedName() ...@@ -2328,3 +2337,13 @@ QCString MemberDef::qualifiedName()
} }
} }
void MemberDef::setTagInfo(TagInfo *ti)
{
if (ti)
{
setAnchor(ti->anchor);
setReference(ti->tagName);
explicitOutputFileBase = stripExtension(ti->fileName);
}
}
...@@ -182,6 +182,7 @@ class MemberDef : public Definition ...@@ -182,6 +182,7 @@ class MemberDef : public Definition
void setHasDocumentedParams(bool b) { m_hasDocumentedParams = b; } void setHasDocumentedParams(bool b) { m_hasDocumentedParams = b; }
void setHasDocumentedReturnType(bool b) { m_hasDocumentedReturnType = b; } void setHasDocumentedReturnType(bool b) { m_hasDocumentedReturnType = b; }
void setInheritsDocsFrom(MemberDef *md) { m_docProvider = md; } void setInheritsDocsFrom(MemberDef *md) { m_docProvider = md; }
void setTagInfo(TagInfo *i);
// output generation // output generation
void writeLink(OutputList &ol, void writeLink(OutputList &ol,
...@@ -400,6 +401,9 @@ class MemberDef : public Definition ...@@ -400,6 +401,9 @@ class MemberDef : public Definition
// documentation inheritance // documentation inheritance
MemberDef *m_docProvider; MemberDef *m_docProvider;
// to store the output file base from tag files
QCString explicitOutputFileBase;
}; };
#endif #endif
...@@ -100,6 +100,7 @@ static bool g_expandOnlyPredef; // from the configuration ...@@ -100,6 +100,7 @@ static bool g_expandOnlyPredef; // from the configuration
static int g_commentCount; static int g_commentCount;
static bool g_insideComment; static bool g_insideComment;
static bool g_isImported; static bool g_isImported;
static QCString g_blockName;
static void setFileName(const char *name) static void setFileName(const char *name)
...@@ -1776,13 +1777,17 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1776,13 +1777,17 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
outputChar('/');outputChar('*'); outputChar('/');outputChar('*');
//g_commentCount++; //g_commentCount++;
} }
<SkipCComment>[\\@]"verbatim"{BN}+ { <SkipCComment>[\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"){BN}+ {
outputArray(yytext,yyleng); outputArray(yytext,yyleng);
g_blockName=&yytext[1];
BEGIN(SkipVerbatim); BEGIN(SkipVerbatim);
} }
<SkipVerbatim>[\\@]"endverbatim" { <SkipVerbatim>[\\@]("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"endrtfonly"|"endmanonly"|"enddot"|"endcode") { /* end of verbatim block */
outputArray(yytext,yyleng); outputArray(yytext,yyleng);
BEGIN(SkipCComment); if (&yytext[4]==g_blockName)
{
BEGIN(SkipCComment);
}
} }
<SkipCComment,SkipVerbatim>[^*\x06\n\/]+ { <SkipCComment,SkipVerbatim>[^*\x06\n\/]+ {
outputArray(yytext,yyleng); outputArray(yytext,yyleng);
......
...@@ -2121,7 +2121,12 @@ IDLATTR ("["[^\]]*"]"){BN}* ...@@ -2121,7 +2121,12 @@ IDLATTR ("["[^\]]*"]"){BN}*
<FindMembers,FindFields>("//"([!/]?){B}*{CMD}"{")|("/*"([!*]?){B}*{CMD}"{") { <FindMembers,FindFields>("//"([!/]?){B}*{CMD}"{")|("/*"([!*]?){B}*{CMD}"{") {
#ifdef COMMENTSCAN #ifdef COMMENTSCAN
REJECT; Entry *tmp = current;
current = previous;
handleGroupStartCommand(current->name);
current = tmp;
initEntry();
#else #else
startGroup(); startGroup();
tmpDocType=-1; tmpDocType=-1;
...@@ -2154,7 +2159,7 @@ IDLATTR ("["[^\]]*"]"){BN}* ...@@ -2154,7 +2159,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
} }
<FindMembers,FindFields,ReadInitializer>"//"([!/]?){B}*{CMD}"}".*|"/*"([!*]?){B}*{CMD}"}".*"*/" { <FindMembers,FindFields,ReadInitializer>"//"([!/]?){B}*{CMD}"}".*|"/*"([!*]?){B}*{CMD}"}".*"*/" {
#ifdef COMMENTSCAN #ifdef COMMENTSCAN
REJECT; handleGroupEndCommand();
#else #else
if (memberGroupId==DOX_NOGROUP && autoGroupStack.isEmpty()) if (memberGroupId==DOX_NOGROUP && autoGroupStack.isEmpty())
{ {
...@@ -3266,7 +3271,7 @@ IDLATTR ("["[^\]]*"]"){BN}* ...@@ -3266,7 +3271,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
<FuncQual>[{:;,] { <FuncQual>[{:;,] {
if ( strcmp(yytext,";")==0 && if ( strcmp(yytext,";")==0 &&
insidePHP && insidePHP &&
current->type.left(8) != "function" ) !containsWord(current->type,"function") )
{ {
current->reset(); current->reset();
initEntry(); initEntry();
...@@ -3497,26 +3502,24 @@ IDLATTR ("["[^\]]*"]"){BN}* ...@@ -3497,26 +3502,24 @@ IDLATTR ("["[^\]]*"]"){BN}*
//printf("Adding entry `%s'\n",current->name.data()); //printf("Adding entry `%s'\n",current->name.data());
if ( insidePHP) if ( insidePHP)
{ {
if (current->type.left(6) == "final " ) if (findAndRemoveWord(current->type,"final"))
{ {
current->type = current->type.mid(6);
current->memSpec |= Entry::Final; current->memSpec |= Entry::Final;
} }
if (current->type.left(9) == "abstract " ) if (findAndRemoveWord(current->type,"abstract"))
{ {
current->type = current->type.mid(9);
current->memSpec |= Entry::Abstract; current->memSpec |= Entry::Abstract;
} }
} }
if ( insidePHP && current->type.left(8) != "function" ) if ( insidePHP && !containsWord(current->type,"function"))
{ {
initEntry(); initEntry();
} }
else else
{ {
if ( insidePHP && current->type.left(8) == "function" ) if ( insidePHP)
{ {
current->type = current->type.mid(8); findAndRemoveWord(current->type,"function");
} }
previous = current; previous = current;
current_root->addSubEntry(current); current_root->addSubEntry(current);
...@@ -4303,7 +4306,7 @@ IDLATTR ("["[^\]]*"]"){BN}* ...@@ -4303,7 +4306,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
<FindMembers>"{" { <FindMembers>"{" {
if (insideCS && !current->name.isEmpty() && !current->type.isEmpty()) if (insideCS && !current->name.isEmpty() && !current->type.isEmpty())
{ {
if (current->type.left(6)=="event " || current->type.find("event")!=-1) // event if (containsWord(current->type,"event")) // event
{ {
current->mtype = mtype = Event; current->mtype = mtype = Event;
} }
......
This diff is collapsed.
...@@ -433,6 +433,12 @@ class Translator ...@@ -433,6 +433,12 @@ class Translator
virtual QCString trDirReference(const char *dirName) = 0; virtual QCString trDirReference(const char *dirName) = 0;
virtual QCString trDir(bool first_capital, bool singular) = 0; virtual QCString trDir(bool first_capital, bool singular) = 0;
//////////////////////////////////////////////////////////////////////////
// new since 1.4.1
//////////////////////////////////////////////////////////////////////////
virtual QCString trOverloadText() = 0;
}; };
#endif #endif
...@@ -40,7 +40,17 @@ class TranslatorAdapterBase : public Translator ...@@ -40,7 +40,17 @@ class TranslatorAdapterBase : public Translator
}; };
class TranslatorAdapter_1_3_9 : public TranslatorAdapterBase class TranslatorAdapter_1_4_1 : public TranslatorAdapterBase
{
public:
virtual QCString updateNeededMessage()
{ return createUpdateNeededMessage(idLanguage(),"release 1.4.1"); }
virtual QCString trOverloadText()
{ return english.trOverloadText(); }
};
class TranslatorAdapter_1_3_9 : public TranslatorAdapter_1_4_1
{ {
public: public:
virtual QCString updateNeededMessage() virtual QCString updateNeededMessage()
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
#ifndef TRANSLATOR_BR_H #ifndef TRANSLATOR_BR_H
#define TRANSLATOR_BR_H #define TRANSLATOR_BR_H
class TranslatorBrazilian : public Translator class TranslatorBrazilian : public TranslatorAdapter_1_4_1
{ {
public: public:
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
*/ */
#define CN_SPC #define CN_SPC
class TranslatorChinese : public Translator class TranslatorChinese : public TranslatorAdapter_1_4_1
{ {
public: public:
/*! Used for identification of the language. The identification /*! Used for identification of the language. The identification
...@@ -83,9 +83,6 @@ class TranslatorChinese : public Translator ...@@ -83,9 +83,6 @@ class TranslatorChinese : public Translator
virtual QCString trMemberEnumerationDocumentation() virtual QCString trMemberEnumerationDocumentation()
{ return "成员枚举类型文档"; } { return "成员枚举类型文档"; }
virtual QCString trEnumerationValueDocumentation()
{ return "成员枚举值文档"; }
/*! header that is put before the list of member function. */ /*! header that is put before the list of member function. */
virtual QCString trMemberFunctionDocumentation() virtual QCString trMemberFunctionDocumentation()
{ return "成员函数文档"; } { return "成员函数文档"; }
...@@ -173,11 +170,6 @@ class TranslatorChinese : public Translator ...@@ -173,11 +170,6 @@ class TranslatorChinese : public Translator
virtual QCString trFileList() virtual QCString trFileList()
{ return "文件列表"; } { return "文件列表"; }
/*! This is put above each page as a link to the list of all verbatim headers */
virtual QCString trHeaderFiles()
{ return "头文件"; }
/*! This is put above each page as a link to all members of compounds. */ /*! This is put above each page as a link to all members of compounds. */
virtual QCString trCompoundMembers() virtual QCString trCompoundMembers()
{ {
...@@ -286,9 +278,6 @@ class TranslatorChinese : public Translator ...@@ -286,9 +278,6 @@ class TranslatorChinese : public Translator
return result; return result;
} }
virtual QCString trHeaderFilesDescription()
{ return "这里列出组成API的头文件:"; }
virtual QCString trExamplesDescription() virtual QCString trExamplesDescription()
{ return "这里列出所有示例:"; } { return "这里列出所有示例:"; }
...@@ -298,9 +287,6 @@ class TranslatorChinese : public Translator ...@@ -298,9 +287,6 @@ class TranslatorChinese : public Translator
virtual QCString trModulesDescription() virtual QCString trModulesDescription()
{ return "这里列出所有模块"; } { return "这里列出所有模块"; }
virtual QCString trNoDescriptionAvailable()
{ return "无可用文档"; }
virtual QCString trDocumentation() virtual QCString trDocumentation()
{ return "文档"; } { return "文档"; }
...@@ -422,16 +408,9 @@ class TranslatorChinese : public Translator ...@@ -422,16 +408,9 @@ class TranslatorChinese : public Translator
virtual QCString trForInternalUseOnly() virtual QCString trForInternalUseOnly()
{ return "仅限内部使用。"; } { return "仅限内部使用。"; }
virtual QCString trReimplementedForInternalReasons()
{ return "由于内部原因被重载;但不影响API";
}
virtual QCString trWarning() virtual QCString trWarning()
{ return "警告"; } { return "警告"; }
virtual QCString trBugsAndLimitations()
{ return "BUG"CN_SPC"与局限"; }
virtual QCString trVersion() virtual QCString trVersion()
{ return "版本"; } { return "版本"; }
...@@ -698,12 +677,7 @@ class TranslatorChinese : public Translator ...@@ -698,12 +677,7 @@ class TranslatorChinese : public Translator
// new since 0.49-991106 // new since 0.49-991106
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
virtual QCString trSources() virtual QCString trDefinedAtLineInSourceFile()
{
return "源代码";
}
virtual QCString trDefinedAtLineInSourceFile()
{ {
return "在文件"CN_SPC"@1"CN_SPC"第"CN_SPC"@0"CN_SPC"行定义。"; return "在文件"CN_SPC"@1"CN_SPC"第"CN_SPC"@0"CN_SPC"行定义。";
} }
...@@ -1025,12 +999,6 @@ class TranslatorChinese : public Translator ...@@ -1025,12 +999,6 @@ class TranslatorChinese : public Translator
// new since 1.2.4 // new since 1.2.4
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used for Java interfaces in the summary section of Java packages */
virtual QCString trInterfaces()
{
return "接口";
}
/*! Used for Java classes in the summary section of Java packages */ /*! Used for Java classes in the summary section of Java packages */
virtual QCString trClasses() virtual QCString trClasses()
{ {
...@@ -1068,12 +1036,6 @@ class TranslatorChinese : public Translator ...@@ -1068,12 +1036,6 @@ class TranslatorChinese : public Translator
return "包"; return "包";
} }
/*! Used as a chapter title for Latex & RTF output */
virtual QCString trPackageDocumentation()
{
return "包的文档";
}
/*! Text shown before a multi-line define */ /*! Text shown before a multi-line define */
virtual QCString trDefineValue() virtual QCString trDefineValue()
{ {
...@@ -1228,20 +1190,6 @@ class TranslatorChinese : public Translator ...@@ -1228,20 +1190,6 @@ class TranslatorChinese : public Translator
return "成员"; return "成员";
} }
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trField(bool /*first_capital*/, bool /*singular*/)
{
/*
QCString result((first_capital ? "Field" : "field"));
if (!singular) result+="s";
return result;
*/
return "字段";
}
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
...@@ -1492,7 +1440,7 @@ class TranslatorChinese : public Translator ...@@ -1492,7 +1440,7 @@ class TranslatorChinese : public Translator
virtual QCString trDirIndex() virtual QCString trDirIndex()
/* { return "Directory Hierarchy"; } */ /* { return "Directory Hierarchy"; } */
{ {
return "$(BL\\录结$(DC((B"; return "目录结构";
} }
/*! This is used as the name of the chapter containing the documentation /*! This is used as the name of the chapter containing the documentation
...@@ -1501,7 +1449,7 @@ class TranslatorChinese : public Translator ...@@ -1501,7 +1449,7 @@ class TranslatorChinese : public Translator
virtual QCString trDirDocumentation() virtual QCString trDirDocumentation()
/* { return "Directory Documentation"; } */ /* { return "Directory Documentation"; } */
{ {
return "$(BL\\录J8[c(B"; return "目录文档";
} }
/*! This is used as the title of the directory index and also in the /*! This is used as the title of the directory index and also in the
...@@ -1510,7 +1458,7 @@ class TranslatorChinese : public Translator ...@@ -1510,7 +1458,7 @@ class TranslatorChinese : public Translator
virtual QCString trDirectories() virtual QCString trDirectories()
/* { return "Directories"; } */ /* { return "Directories"; } */
{ {
return "$(BL\\录(B"; return "目录";
} }
/*! This returns a sentences that introduces the directory hierarchy. /*! This returns a sentences that introduces the directory hierarchy.
...@@ -1521,7 +1469,7 @@ class TranslatorChinese : public Translator ...@@ -1521,7 +1469,7 @@ class TranslatorChinese : public Translator
/* "but not completely, alphabetically:"; */ /* "but not completely, alphabetically:"; */
/* } */ /* } */
{ {
return "$(BL\\录结$(DC(仅经过$(BBgCWE*GSNs!$VuL$40A40D;zJl顺=x(B"; return "目录结构仅经过粗略的排序";
} }
/*! This returns the title of a directory page. The name of the /*! This returns the title of a directory page. The name of the
...@@ -1531,7 +1479,7 @@ class TranslatorChinese : public Translator ...@@ -1531,7 +1479,7 @@ class TranslatorChinese : public Translator
/* { QCString result=dirName; result+=" Directory Reference"; return result; } */ /* { QCString result=dirName; result+=" Directory Reference"; return result; } */
{ {
QCString result=dirName; QCString result=dirName;
result+=CN_SPC"$(BL\\录;29M(B"; result+=CN_SPC"目录参考";
return result; return result;
} }
...@@ -1543,9 +1491,10 @@ class TranslatorChinese : public Translator ...@@ -1543,9 +1491,10 @@ class TranslatorChinese : public Translator
/* QCString result((first_capital ? "Director" : "director")); */ /* QCString result((first_capital ? "Director" : "director")); */
/* if (singular) result+="y"; else result+="ies"; */ /* if (singular) result+="y"; else result+="ies"; */
/* return result; */ /* return result; */
return "$(BL\\录(B"; return "目录";
} }
}; };
#endif #endif
...@@ -151,7 +151,7 @@ ...@@ -151,7 +151,7 @@
// Windows version. The version which does not call the function is // Windows version. The version which does not call the function is
// probably slightly faster. // probably slightly faster.
class TranslatorCzech : public Translator class TranslatorCzech : public TranslatorAdapter_1_4_1
{ {
private: private:
/*! The decode() inline assumes the source written in the /*! The decode() inline assumes the source written in the
......
...@@ -102,7 +102,7 @@ ...@@ -102,7 +102,7 @@
#ifndef TRANSLATOR_DE_H #ifndef TRANSLATOR_DE_H
#define TRANSLATOR_DE_H #define TRANSLATOR_DE_H
class TranslatorGerman : public Translator class TranslatorGerman : public TranslatorAdapter_1_4_1
{ {
public: public:
......
...@@ -1602,6 +1602,19 @@ class TranslatorEnglish : public Translator ...@@ -1602,6 +1602,19 @@ class TranslatorEnglish : public Translator
return result; return result;
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.4.1
//////////////////////////////////////////////////////////////////////////
/*! This text is added to the documentation when the \\overload command
* is used for a overloaded function.
*/
virtual QCString trOverloadText()
{
return "This is an overloaded member function, "
"provided for convenience. It differs from the above "
"function only in what argument(s) it accepts.";
}
}; };
#endif #endif
...@@ -85,7 +85,7 @@ ...@@ -85,7 +85,7 @@
// Translator class (by the local maintainer) when the localized // Translator class (by the local maintainer) when the localized
// translator is made up-to-date again. // translator is made up-to-date again.
class TranslatorFrench : public Translator class TranslatorFrench : public TranslatorAdapter_1_4_1
{ {
public: public:
......
...@@ -58,11 +58,15 @@ ...@@ -58,11 +58,15 @@
// //
// 2004/09/15 // 2004/09/15
// - Added strings for 1.3.9 // - Added strings for 1.3.9
//
// 2005/02/28
// - Removed obsolete (unused) methods
//
#ifndef TRANSLATOR_HR_H #ifndef TRANSLATOR_HR_H
#define TRANSLATOR_HR_H #define TRANSLATOR_HR_H
class TranslatorCroatian : public Translator class TranslatorCroatian : public TranslatorAdapter_1_4_1
{ {
private: private:
/*! to avoid macro redefinition from translator_cz.h */ /*! to avoid macro redefinition from translator_cz.h */
...@@ -104,10 +108,8 @@ class TranslatorCroatian : public Translator ...@@ -104,10 +108,8 @@ class TranslatorCroatian : public Translator
{ return decode("Dokumentacija typedef lanova"); } { return decode("Dokumentacija typedef lanova"); }
QCString trMemberEnumerationDocumentation() QCString trMemberEnumerationDocumentation()
{ return decode("Dokumentacija enumeracijskih lanova"); } { return decode("Dokumentacija enumeracijskih lanova"); }
QCString trEnumerationValueDocumentation()
{ return "Dokumentacija enumeracijskih vrijednosti"; }
QCString trMemberFunctionDocumentation() QCString trMemberFunctionDocumentation()
{ return "Dokumentacija funkcija"; } { return "Dokumentacija funkcija"; }
QCString trMemberDataDocumentation() QCString trMemberDataDocumentation()
{ return "Documentacija varijabli"; } { return "Documentacija varijabli"; }
QCString trMore() QCString trMore()
...@@ -149,8 +151,6 @@ class TranslatorCroatian : public Translator ...@@ -149,8 +151,6 @@ class TranslatorCroatian : public Translator
} }
QCString trFileList() QCString trFileList()
{ return "Popis datoteka"; } { return "Popis datoteka"; }
QCString trHeaderFiles()
{ return "Header datoteke"; }
QCString trCompoundMembers() QCString trCompoundMembers()
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
...@@ -217,16 +217,12 @@ class TranslatorCroatian : public Translator ...@@ -217,16 +217,12 @@ class TranslatorCroatian : public Translator
result+="datoteke u kojima se nalaze:"; result+="datoteke u kojima se nalaze:";
return decode(result); return decode(result);
} }
QCString trHeaderFilesDescription()
{ return decode("Popis header datoteka koje ine API :"); }
QCString trExamplesDescription() QCString trExamplesDescription()
{ return "Popis primjera :"; } { return "Popis primjera :"; }
QCString trRelatedPagesDescription() QCString trRelatedPagesDescription()
{ return "Popis povezanih stranica:"; } { return "Popis povezanih stranica:"; }
QCString trModulesDescription() QCString trModulesDescription()
{ return "Popis svih modula:"; } { return "Popis svih modula:"; }
QCString trNoDescriptionAvailable()
{ return "Opis nije dostupan"; }
QCString trDocumentation() QCString trDocumentation()
{ return "Dokumentacija"; } { return "Dokumentacija"; }
...@@ -314,14 +310,8 @@ class TranslatorCroatian : public Translator ...@@ -314,14 +310,8 @@ class TranslatorCroatian : public Translator
} }
QCString trForInternalUseOnly() QCString trForInternalUseOnly()
{ return decode("Iskljuivo za internu uporabu."); } { return decode("Iskljuivo za internu uporabu."); }
QCString trReimplementedForInternalReasons()
{ return decode("Reimplementirano zbog internih razloga; "
"Nema utjecaja na API.");
}
QCString trWarning() QCString trWarning()
{ return "Upozorenje"; } { return "Upozorenje"; }
QCString trBugsAndLimitations()
{ return decode("Greke i ogranienja"); }
QCString trVersion() QCString trVersion()
{ return "Verzija"; } { return "Verzija"; }
QCString trDate() QCString trDate()
...@@ -563,10 +553,6 @@ class TranslatorCroatian : public Translator ...@@ -563,10 +553,6 @@ class TranslatorCroatian : public Translator
// new since 0.49-991106 // new since 0.49-991106
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
QCString trSources()
{
return "Izvorne datoteke";
}
QCString trDefinedAtLineInSourceFile() QCString trDefinedAtLineInSourceFile()
{ {
return "Definirano u liniji @0 datoteke @1."; return "Definirano u liniji @0 datoteke @1.";
...@@ -852,11 +838,6 @@ class TranslatorCroatian : public Translator ...@@ -852,11 +838,6 @@ class TranslatorCroatian : public Translator
// new since 1.2.4 // new since 1.2.4
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used for Java interfaces in the summary section of Java packages */
virtual QCString trInterfaces()
{
return decode("Suelja (interfaces)");
}
/*! Used for Java classes in the summary section of Java packages */ /*! Used for Java classes in the summary section of Java packages */
virtual QCString trClasses() virtual QCString trClasses()
{ {
...@@ -882,11 +863,6 @@ class TranslatorCroatian : public Translator ...@@ -882,11 +863,6 @@ class TranslatorCroatian : public Translator
{ {
return "Paketi"; return "Paketi";
} }
/*! Used as a chapter title for Latex & RTF output */
virtual QCString trPackageDocumentation()
{
return "Dokumentacija paketa";
}
/*! Text shown before a multi-line define */ /*! Text shown before a multi-line define */
virtual QCString trDefineValue() virtual QCString trDefineValue()
{ {
...@@ -996,17 +972,6 @@ class TranslatorCroatian : public Translator ...@@ -996,17 +972,6 @@ class TranslatorCroatian : public Translator
return decode(result); return decode(result);
} }
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trField(bool first_capital, bool singular)
{
QCString result((first_capital ? "Polj" : "polj"));
result+= (singular ? "e" : "a");
return result;
}
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
#ifndef TRANSLATOR_HU_H #ifndef TRANSLATOR_HU_H
#define TRANSLATOR_HU_H #define TRANSLATOR_HU_H
class TranslatorHungarian : public Translator class TranslatorHungarian : public TranslatorAdapter_1_4_1
{ {
private: private:
const char * zed(char c) const char * zed(char c)
......
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
#ifndef TRANSLATOR_IT_H #ifndef TRANSLATOR_IT_H
#define TRANSLATOR_IT_H #define TRANSLATOR_IT_H
class TranslatorItalian : public Translator class TranslatorItalian : public TranslatorAdapter_1_4_1
{ {
public: public:
......
...@@ -1200,6 +1200,19 @@ class TranslatorDutch : public Translator ...@@ -1200,6 +1200,19 @@ class TranslatorDutch : public Translator
return result; return result;
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.4.1
//////////////////////////////////////////////////////////////////////////
/*! This text is added to the documentation when the \\overload command
* is used for a function.
*/
virtual QCString trOverloadText()
{
return "Deze functie is overloaded en is beschikbaar gemaakt om het "
"gebruik te vergemakkelijken. Ze verschilt alleen van de "
"bovenstaande functie wat betreft de parameterlijst.";
}
}; };
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#ifndef TRANSLATOR_PL_H #ifndef TRANSLATOR_PL_H
#define TRANSLATOR_PL_H #define TRANSLATOR_PL_H
class TranslatorPolish : public Translator class TranslatorPolish : public TranslatorAdapter_1_4_1
{ {
private: private:
/*! to avoid macro redefinition from translator_pl.h */ /*! to avoid macro redefinition from translator_pl.h */
......
This diff is collapsed.
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
#ifndef TRANSLATOR_RU_H #ifndef TRANSLATOR_RU_H
#define TRANSLATOR_RU_H #define TRANSLATOR_RU_H
class TranslatorRussian : public Translator class TranslatorRussian : public TranslatorAdapter_1_4_1
{ {
private: private:
/*! The Decode() inline assumes the source written in the /*! The Decode() inline assumes the source written in the
......
...@@ -69,7 +69,7 @@ Problem! ...@@ -69,7 +69,7 @@ Problem!
#ifndef TRANSLATOR_SE_H #ifndef TRANSLATOR_SE_H
#define TRANSLATOR_SE_H #define TRANSLATOR_SE_H
class TranslatorSwedish : public Translator class TranslatorSwedish : public TranslatorAdapter_1_4_1
{ {
public: public:
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
// translation by Dejan D. M. Milosavljevic <dmilos@email.com>;<dmilosx@ptt.yu>;<office@ddmrm.com> // translation by Dejan D. M. Milosavljevic <dmilos@email.com>;<dmilosx@ptt.yu>;<office@ddmrm.com>
// // 10x 2 Ivana Miletic for gramatical consutation. // // 10x 2 Ivana Miletic for gramatical consutation.
class TranslatorSerbian : public Translator class TranslatorSerbian : public TranslatorAdapter_1_4_1
{ {
private: private:
QCString decode(const QCString& sInput) QCString decode(const QCString& sInput)
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#ifndef TRANSLATOR_UA_H #ifndef TRANSLATOR_UA_H
#define TRANSLATOR_UA_H #define TRANSLATOR_UA_H
class TranslatorUkrainian : public Translator class TranslatorUkrainian : public TranslatorAdapter_1_4_1
{ {
private: private:
/*! The Decode() inline assumes the source written in the /*! The Decode() inline assumes the source written in the
......
This diff is collapsed.
...@@ -228,6 +228,8 @@ QCString relativePathToRoot(const char *name); ...@@ -228,6 +228,8 @@ QCString relativePathToRoot(const char *name);
#define REL_PATH_TO_ROOT "../../" #define REL_PATH_TO_ROOT "../../"
void createSubDirs(QDir &d); void createSubDirs(QDir &d);
QCString stripPath(const char *s); QCString stripPath(const char *s);
bool containsWord(const QCString &s,const QCString &word);
bool findAndRemoveWord(QCString &s,const QCString &word);
#endif #endif
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