Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
doxverilog
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
doxverilog
Commits
42eb3f9c
Commit
42eb3f9c
authored
Mar 07, 2005
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.4.1-20050307
parent
47b04448
Changes
40
Hide whitespace changes
Inline
Side-by-side
Showing
40 changed files
with
1005 additions
and
665 deletions
+1005
-665
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
doxywizard.cpp
addon/doxywizard/doxywizard.cpp
+6
-6
language.doc
doc/language.doc
+33
-33
maintainers.txt
doc/maintainers.txt
+1
-1
translator.py
doc/translator.py
+30
-5
translator_report.txt
doc/translator_report.txt
+136
-106
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
code.l
src/code.l
+16
-8
commentcnv.l
src/commentcnv.l
+41
-34
commentscan.l
src/commentscan.l
+48
-13
doxygen.cpp
src/doxygen.cpp
+35
-110
htmlgen.cpp
src/htmlgen.cpp
+7
-2
index.cpp
src/index.cpp
+28
-49
memberdef.cpp
src/memberdef.cpp
+26
-7
memberdef.h
src/memberdef.h
+4
-0
pre.l
src/pre.l
+8
-3
scanner.l
src/scanner.l
+14
-11
tagreader.cpp
src/tagreader.cpp
+96
-26
translator.h
src/translator.h
+6
-0
translator_adapter.h
src/translator_adapter.h
+11
-1
translator_br.h
src/translator_br.h
+1
-1
translator_cn.h
src/translator_cn.h
+9
-60
translator_cz.h
src/translator_cz.h
+1
-1
translator_de.h
src/translator_de.h
+1
-1
translator_en.h
src/translator_en.h
+13
-0
translator_fr.h
src/translator_fr.h
+1
-1
translator_hr.h
src/translator_hr.h
+6
-41
translator_hu.h
src/translator_hu.h
+1
-1
translator_it.h
src/translator_it.h
+1
-1
translator_nl.h
src/translator_nl.h
+13
-0
translator_pl.h
src/translator_pl.h
+1
-1
translator_ro.h
src/translator_ro.h
+243
-33
translator_ru.h
src/translator_ru.h
+1
-1
translator_se.h
src/translator_se.h
+1
-1
translator_sr.h
src/translator_sr.h
+1
-1
translator_ua.h
src/translator_ua.h
+1
-1
util.cpp
src/util.cpp
+156
-99
util.h
src/util.h
+2
-0
No files found.
INSTALL
View file @
42eb3f9c
DOXYGEN Version 1.4.1-20050
22
7
DOXYGEN Version 1.4.1-20050
30
7
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (
27 February
2005)
Dimitri van Heesch (
07 March
2005)
README
View file @
42eb3f9c
DOXYGEN Version 1.4.1_20050
22
7
DOXYGEN Version 1.4.1_20050
30
7
Please read INSTALL for compilation instructions.
...
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (
27 February
2005)
Dimitri van Heesch (dimitri@stack.nl) (
07 March
2005)
VERSION
View file @
42eb3f9c
1.4.1-20050
22
7
1.4.1-20050
30
7
addon/doxywizard/doxywizard.cpp
View file @
42eb3f9c
...
...
@@ -823,12 +823,12 @@ MainWidget::MainWidget(QWidget *parent)
// load default settings
m_settings
.
setPath
(
"www.doxygen.org"
,
"Doxygen GUI"
);
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
())
{
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
())
{
m_workingDir
->
setText
(
workingDir
);
...
...
@@ -836,7 +836,7 @@ MainWidget::MainWidget(QWidget *parent)
setConfigSaved
(
FALSE
);
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
())
{
addRecentFile
(
entry
);
...
...
@@ -1178,8 +1178,8 @@ void MainWidget::saveDefaults()
QString
newConfig
;
QTextStream
t
(
&
newConfig
,
IO_WriteOnly
);
Config
::
instance
()
->
writeTemplate
(
t
,
TRUE
,
FALSE
);
m_settings
.
writeEntry
(
"/config/default"
,
newConfig
);
m_settings
.
writeEntry
(
"/config/workingdir"
,
m_workingDir
->
text
());
m_settings
.
writeEntry
(
"/
doxywizard/
config/default"
,
newConfig
);
m_settings
.
writeEntry
(
"/
doxywizard/
config/workingdir"
,
m_workingDir
->
text
());
statusBar
()
->
message
(
"Current configuration saved as default"
,
messageTimeout
);
}
}
...
...
@@ -1361,7 +1361,7 @@ void MainWidget::addRecentFile(const QString &file)
for
(
it
=
m_recentFiles
.
begin
();
it
!=
m_recentFiles
.
end
();
++
it
,
++
i
)
{
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
);
}
}
...
...
doc/language.doc
View file @
42eb3f9c
...
...
@@ -60,7 +60,7 @@ when the translator was updated.
<td>Brazilian Portuguese</td>
<td>Fabio "FJTC" Jun Takada Chino</td>
<td>jun-chino at uol dot com dot br</td>
<td>
up-to-date
</td>
<td>
1.4.1
</td>
</tr>
<tr bgcolor="#ffffff">
<td>Catalan</td>
...
...
@@ -72,7 +72,7 @@ when the translator was updated.
<td>Chinese</td>
<td>Li Daobing<br>Wei Liu</td>
<td>lidaobing at gmail dot com<br>liuwei at asiainfo dot com</td>
<td>
up-to-date
</td>
<td>
1.4.1
</td>
</tr>
<tr bgcolor="#ffffff">
<td>Chinese Traditional</td>
...
...
@@ -84,13 +84,13 @@ when the translator was updated.
<td>Croatian</td>
<td>Boris Bralo</td>
<td>boris.bralo at zg dot htnet dot hr</td>
<td>
up-to-date
</td>
<td>
1.4.1
</td>
</tr>
<tr bgcolor="#ffffff">
<td>Czech</td>
<td>Petr Přikryl</td>
<td>prikrylp at skil dot cz</td>
<td>
up-to-date
</td>
<td>
1.4.1
</td>
</tr>
<tr bgcolor="#ffffff">
<td>Danish</td>
...
...
@@ -120,13 +120,13 @@ when the translator was updated.
<td>French</td>
<td>Xavier Outhier</td>
<td>xouthier at yahoo dot fr</td>
<td>
up-to-date
</td>
<td>
1.4.1
</td>
</tr>
<tr bgcolor="#ffffff">
<td>German</td>
<td>Jens Seidel</td>
<td>jensseidel at users dot sf dot net</td>
<td>
up-to-date
</td>
<td>
1.4.1
</td>
</tr>
<tr bgcolor="#ffffff">
<td>Greek</td>
...
...
@@ -136,15 +136,15 @@ when the translator was updated.
</tr>
<tr bgcolor="#ffffff">
<td>Hungarian</td>
<td>
Földvári György<br>Ákos Kiss
</td>
<td>
foldvari lost at cyberspace<br>akiss at users dot sourceforge dot net
</td>
<td>
up-to-date
</td>
<td>
Ákos Kiss<br>Földvári György
</td>
<td>
akiss at users dot sourceforge dot net<br>foldvari lost at cyberspace
</td>
<td>
1.4.1
</td>
</tr>
<tr bgcolor="#ffffff">
<td>Italian</td>
<td>Alessandro Falappa<br>Ahmed Aldo Faisal</td>
<td>alessandro at falappa dot net<br>aaf23 at cam dot ac dot uk</td>
<td>
up-to-date
</td>
<td>
1.4.1
</td>
</tr>
<tr bgcolor="#ffffff">
<td>Japanese</td>
...
...
@@ -162,7 +162,7 @@ when the translator was updated.
<td>Korean</td>
<td>SooYoung Jung<br>Richard Kim</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 bgcolor="#ffffff">
<td>KoreanEn</td>
...
...
@@ -186,7 +186,7 @@ when the translator was updated.
<td>Polish</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>
up-to-date
</td>
<td>
1.4.1
</td>
</tr>
<tr bgcolor="#ffffff">
<td>Portuguese</td>
...
...
@@ -198,19 +198,19 @@ when the translator was updated.
<td>Romanian</td>
<td>Alexandru Iosup</td>
<td>aiosup at yahoo dot com</td>
<td>1.
2.16
</td>
<td>1.
4.1
</td>
</tr>
<tr bgcolor="#ffffff">
<td>Russian</td>
<td>Alexandr Chelpanov</td>
<td>cav at cryptopro dot ru</td>
<td>
up-to-date
</td>
<td>
1.4.1
</td>
</tr>
<tr bgcolor="#ffffff">
<td>Serbian</td>
<td>Dejan Milosavljevic</td>
<td>dmilos at email dot com</td>
<td>
up-to-date
</td>
<td>
1.4.1
</td>
</tr>
<tr bgcolor="#ffffff">
<td>Slovak</td>
...
...
@@ -234,13 +234,13 @@ when the translator was updated.
<td>Swedish</td>
<td>Mikael Hallin</td>
<td>mikaelhallin at yahoo dot se</td>
<td>
up-to-date
</td>
<td>
1.4.1
</td>
</tr>
<tr bgcolor="#ffffff">
<td>Ukrainian</td>
<td>Olexij Tkatchenko</td>
<td>olexij.tkatchenko at parcs dot de</td>
<td>
up-to-date
</td>
<td>
1.4.1
</td>
</tr>
<!-- table content end -->
</table>
...
...
@@ -259,19 +259,19 @@ when the translator was updated.
\hline
Afrikaans & Johan Prinsloo & {\tt\tiny johan@zippysnoek.com} & 1.3.9 \\
\hline
Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny 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
Catalan & Albert Mora & {\tt\tiny amora@iua.upf.es} & 1.2.17 \\
\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} & ~ \\
\hline
Chinese Traditional & Daniel YC Lin & {\tt\tiny daniel@twpda.com} & 1.3.8 \\
~ & Gary Lee & {\tt\tiny garylee@ecosine.com.tw} & ~ \\
\hline
Croatian & Boris Bralo & {\tt\tiny boris.bralo@zg.htnet.hr} &
up-to-date
\\
Croatian & Boris Bralo & {\tt\tiny boris.bralo@zg.htnet.hr} &
1.4.1
\\
\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
Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny eriksoe+doxygen@daimi.au.dk} & 1.3.9 \\
\hline
...
...
@@ -281,16 +281,16 @@ when the translator was updated.
\hline
Finnish & Olli Korhonen & {\tt\tiny olli.korhonen lost@cyberspace} & obsolete \\
\hline
French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} &
up-to-date
\\
French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} &
1.4.1
\\
\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
Greek & Harry Kalogirou & {\tt\tiny harkal@rainbow.cs.unipi.gr} & 1.2.11 \\
\hline
Hungarian &
F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt\tiny foldvari lost@cyberspace} & up-to-date
\\
~ &
\'{A}kos Kiss & {\tt\tiny akiss@users.sourceforge.net
} & ~ \\
Hungarian &
\'{A}kos Kiss & {\tt\tiny akiss@users.sourceforge.net} & 1.4.1
\\
~ &
F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt\tiny foldvari lost@cyberspace
} & ~ \\
\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} & ~ \\
\hline
Japanese & Ryunosuke Satoh & {\tt\tiny sun594@hotmail.com} & 1.3.9 \\
...
...
@@ -299,7 +299,7 @@ when the translator was updated.
\hline
JapaneseEn & see the Japanese language & {\tt\tiny ~} & English based \\
\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} & ~ \\
\hline
KoreanEn & see the Korean language & {\tt\tiny ~} & English based \\
...
...
@@ -310,16 +310,16 @@ when the translator was updated.
\hline
Norwegian & Lars Erik Jordet & {\tt\tiny lejordet@gmail.com} & 1.3.9 \\
\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} & ~ \\
\hline
Portuguese & Rui Godinho Lopes & {\tt\tiny ruiglopes@yahoo.com} & 1.3.3 \\
\hline
Romanian & Alexandru Iosup & {\tt\tiny aiosup@yahoo.com} & 1.
2.16
\\
Romanian & Alexandru Iosup & {\tt\tiny aiosup@yahoo.com} & 1.
4.1
\\
\hline
Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} &
up-to-date
\\
Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} &
1.4.1
\\
\hline
Serbian & Dejan Milosavljevic & {\tt\tiny dmilos@email.com} &
up-to-date
\\
Serbian & Dejan Milosavljevic & {\tt\tiny dmilos@email.com} &
1.4.1
\\
\hline
Slovak & Stanislav Kudl\'{a}\v{c} & {\tt\tiny skudlac@pobox.sk} & 1.2.18 \\
\hline
...
...
@@ -327,9 +327,9 @@ when the translator was updated.
\hline
Spanish & Francisco Oltra Thennet & {\tt\tiny foltra@puc.cl} & 1.3.8 \\
\hline
Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} &
up-to-date
\\
Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} &
1.4.1
\\
\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
\end{tabular}
\endlatexonly
...
...
doc/maintainers.txt
View file @
42eb3f9c
...
...
@@ -54,8 +54,8 @@ TranslatorGreek
Harry Kalogirou: harkal@rainbow.cs.unipi.gr
TranslatorHungarian
Földvári György: foldvari lost@cyberspace
Ákos Kiss: akiss@users.sourceforge.net
Földvári György: foldvari lost@cyberspace
TranslatorItalian
Alessandro Falappa: alessandro@falappa.net
...
...
doc/translator.py
View file @
42eb3f9c
...
...
@@ -45,6 +45,7 @@
2004/07/26 - Better reporting of not-needed adapters.
2004/10/04 - Reporting of not called translator methods added.
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
...
...
@@ -1435,6 +1436,13 @@ class TrManager:
return
trdic
def
__email
(
self
,
classId
):
"""Returns the first maintainer for the translator class"""
return
self
.
__maintainersDic
[
classId
][
0
][
1
]
def
generateTranslatorReport
(
self
):
"""Generates the translator report."""
...
...
@@ -1466,7 +1474,12 @@ class TrManager:
s
+=
'and
%
d are English based.'
%
len
(
self
.
EnBasedIdLst
)
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
:
s
=
'''The following translator classes are up-to-date (sorted
alphabetically). This means that they derive from the
...
...
@@ -1476,12 +1489,18 @@ class TrManager:
s
=
s
%
len
(
self
.
requiredMethodsDic
)
f
.
write
(
'-'
*
70
+
'
\n
'
)
f
.
write
(
fill
(
s
)
+
'
\n\n
'
)
mailtoLst
=
[]
for
x
in
self
.
upToDateIdLst
:
obj
=
self
.
__translDic
[
x
]
f
.
write
(
' '
+
obj
.
classId
)
if
obj
.
note
:
f
.
write
(
' -- '
+
obj
.
note
)
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
# translators that derive from TranslatorEnglish are included.
...
...
@@ -1497,6 +1516,7 @@ class TrManager:
# Find also whether some adapter classes may be removed.
adaptMinVersion
=
'9.9.99'
mailtoLst
=
[]
for
x
in
self
.
adaptIdLst
:
obj
=
self
.
__translDic
[
x
]
f
.
write
(
'
%-30
s'
%
obj
.
classId
)
...
...
@@ -1508,10 +1528,14 @@ class TrManager:
if
obj
.
note
:
f
.
write
(
'
\n\t
Note: '
+
obj
.
note
+
'
\n
'
)
f
.
write
(
'
\n
'
)
mailtoLst
.
append
(
self
.
__email
(
obj
.
classId
))
# to maintainer
# Check the level of required adapter classes.
if
obj
.
status
!=
'0.0.00'
and
obj
.
status
<
adaptMinVersion
:
adaptMinVersion
=
obj
.
status
fmail
.
write
(
'
\n\n
translator based
\n
'
)
fmail
.
write
(
'; '
.
join
(
mailtoLst
))
# Set the note if some old translator adapters are not needed
# any more. Do it only when the script is called without arguments,
...
...
@@ -1588,8 +1612,9 @@ class TrManager:
assert
(
obj
.
classId
!=
'Translator'
)
obj
.
report
(
f
)
# Close the report file
.
# Close the report file
and the auxiliary file with e-mails.
f
.
close
()
fmail
.
close
()
def
__loadMaintainers
(
self
):
...
...
@@ -1599,7 +1624,7 @@ class TrManager:
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.
tim
=
os
.
path
.
getmtime
(
fname
)
if
tim
>
self
.
lastModificationTime
:
...
...
@@ -1625,7 +1650,7 @@ class TrManager:
classId
=
line
maintainersLst
=
[]
inside
=
True
# Otherwise skip empty line that do not act as separator
s
.
# Otherwise skip empty line that do not act as separator.
else
:
# if inside the record
if
line
==
''
:
# separator found
...
...
@@ -1642,8 +1667,8 @@ class TrManager:
t
=
(
lst
[
0
]
.
strip
(),
lst
[
1
]
.
strip
())
self
.
__maintainersDic
[
classId
]
.
append
(
t
)
f
.
close
()
def
generateLanguageDoc
(
self
):
"""Checks the modtime of files and generates language.doc."""
self
.
__loadMaintainers
()
...
...
doc/translator_report.txt
View file @
42eb3f9c
...
...
@@ -8,31 +8,17 @@ German, Greek, Hungarian, Italian, Japanese (+En), Korean (+En),
Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, Serbian,
Slovak, Slovene, Spanish, Swedish, and Ukrainian.
Of them,
16 translators are up-to-date, 14
translators are based on
Of them,
2 translators are up-to-date, 28
translators are based on
some adapter class, and 2 are English based.
----------------------------------------------------------------------
The following translator classes are up-to-date (sorted
alphabetically). This means that they derive from the Translator class
and they implement all 19
1
of the required methods. Anyway, there
and they implement all 19
2
of the required methods. Anyway, there
still may be some details listed even for them:
TranslatorBrazilian -- Remove the obsolete methods (never used).
TranslatorChinese -- Remove the obsolete methods (never used).
TranslatorCroatian -- Remove the obsolete methods (never used).
TranslatorCzech
TranslatorDutch -- Remove the obsolete methods (never used).
TranslatorEnglish -- Remove the obsolete methods (never used).
TranslatorFrench -- Remove the obsolete methods (never used).
TranslatorGerman -- Remove the obsolete methods (never used).
TranslatorHungarian -- Remove the obsolete methods (never used).
TranslatorItalian -- Remove the obsolete methods (never used).
TranslatorKorean -- Change the base class to Translator.
TranslatorPolish -- Remove the obsolete methods (never used).
TranslatorRussian -- Remove the obsolete methods (never used).
TranslatorSerbian -- Remove the obsolete methods (never used).
TranslatorSwedish -- Remove the obsolete methods (never used).
TranslatorUkrainian -- Remove the obsolete methods (never used).
----------------------------------------------------------------------
The following translator classes need some maintenance (the most
...
...
@@ -40,20 +26,36 @@ obsolete at the end). The other info shows the estimation of Doxygen
version when the class was last updated and number of methods that
must be implemented to become up-to-date:
TranslatorNorwegian 1.3.9 6 methods to implement
TranslatorJapanese 1.3.9 6 methods to implement
TranslatorDanish 1.3.9 6 methods to implement
TranslatorAfrikaans 1.3.9 6 methods to implement
TranslatorSpanish 1.3.8 7 methods to implement
TranslatorLithuanian 1.3.8 7 methods to implement
TranslatorChinesetraditional 1.3.8 7 methods to implement
TranslatorPortuguese 1.3.3 11 methods to implement
TranslatorSlovak 1.2.18 20 methods to implement
TranslatorCatalan 1.2.17 21 methods to implement
TranslatorSlovene 1.2.16 22 methods to implement
TranslatorRomanian 1.2.16 22 methods to implement
TranslatorGreek 1.2.11 25 methods to implement
TranslatorFinnish obsolete 94 methods to implement
TranslatorUkrainian 1.4.1 1 method to implement
TranslatorSwedish 1.4.1 1 method to implement
TranslatorSerbian 1.4.1 1 method to implement
TranslatorRussian 1.4.1 1 method to implement
TranslatorRomanian 1.4.1 1 method to implement
TranslatorPolish 1.4.1 1 method to implement
TranslatorKorean 1.4.01 1 method to implement
Note: Change the base class to TranslatorAdapter_1_4_1.
TranslatorItalian 1.4.1 1 method to implement
TranslatorHungarian 1.4.1 1 method to implement
TranslatorGerman 1.4.1 1 method to implement
TranslatorFrench 1.4.1 1 method to implement
TranslatorCzech 1.4.1 1 method to implement
TranslatorCroatian 1.4.1 1 method to implement
TranslatorChinese 1.4.1 1 method to implement
TranslatorBrazilian 1.4.1 1 method to implement
TranslatorNorwegian 1.3.9 7 methods to implement
TranslatorJapanese 1.3.9 7 methods to implement
TranslatorDanish 1.3.9 7 methods to implement
TranslatorAfrikaans 1.3.9 7 methods to implement
TranslatorSpanish 1.3.8 8 methods to implement
TranslatorLithuanian 1.3.8 8 methods to implement
TranslatorChinesetraditional 1.3.8 8 methods to implement
TranslatorPortuguese 1.3.3 12 methods to implement
TranslatorSlovak 1.2.18 21 methods to implement
TranslatorCatalan 1.2.17 22 methods to implement
TranslatorSlovene 1.2.16 23 methods to implement
TranslatorGreek 1.2.11 26 methods to implement
TranslatorFinnish obsolete 95 methods to implement
----------------------------------------------------------------------
The following translator classes derive directly from the
...
...
@@ -69,13 +71,14 @@ Details for translators (classes sorted alphabetically):
TranslatorAfrikaans (TranslatorAdapter_1_3_9)
6
methods to implement
TranslatorAfrikaans (TranslatorAdapter_1_3_9)
7
methods to implement
-------------------
Implements 185 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
virtual QCString trDirIndex()
virtual QCString trDirDocumentation()
virtual QCString trDirectories()
...
...
@@ -97,11 +100,15 @@ TranslatorAfrikaans (TranslatorAdapter_1_3_9) 6 methods to implement
virtual QCString trNoDescriptionAvailable()
TranslatorBrazilian (Translator
)
TranslatorBrazilian (Translator
Adapter_1_4_1) 1 method to implement
-------------------
Implements 191 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
Obsolete methods (should be removed, never used):
virtual QCString trHeaderFilesDescription()
...
...
@@ -116,13 +123,14 @@ TranslatorBrazilian (Translator)
virtual QCString trNoDescriptionAvailable()
TranslatorCatalan (TranslatorAdapter_1_2_17) 2
1
methods to implement
TranslatorCatalan (TranslatorAdapter_1_2_17) 2
2
methods to implement
-----------------
Implements 170 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
virtual QCString trEventDocumentation()
virtual QCString trDirIndex()
virtual QCString trPackageMembers()
...
...
@@ -159,32 +167,24 @@ TranslatorCatalan (TranslatorAdapter_1_2_17) 21 methods to implement
virtual QCString trNoDescriptionAvailable()
TranslatorChinese (Translator
)
TranslatorChinese (Translator
Adapter_1_4_1) 1 method to implement
-----------------
Implements 191 of the required methods.
Obsolete methods (should be removed, never us
ed):
Missing methods (should be implement
ed):
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 trEnumerationValueDocumentation()
virtual QCString trNoDescriptionAvailable()
virtual QCString trOverloadText()
TranslatorChinesetraditional (TranslatorAdapter_1_3_8)
7
methods to implement
TranslatorChinesetraditional (TranslatorAdapter_1_3_8)
8
methods to implement
----------------------------
Implements 184 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
virtual QCString trDirIndex()
virtual QCString trDirDocumentation()
virtual QCString trDirectories()
...
...
@@ -207,32 +207,34 @@ TranslatorChinesetraditional (TranslatorAdapter_1_3_8) 7 methods to implement
virtual QCString trNoDescriptionAvailable()
TranslatorCroatian (Translator
)
TranslatorCroatian (Translator
Adapter_1_4_1) 1 method to implement
------------------
Implements 191 of the required methods.
Obsolete methods (should be removed, never us
ed):
Missing methods (should be implement
ed):
QCString trHeaderFilesDescription()
virtual QCString trField(bool first_capital, bool singular)
virtual QCString trPackageDocumentation()
QCString trSources()
QCString trReimplementedForInternalReasons()
virtual QCString trInterfaces()
QCString trHeaderFiles()
QCString trBugsAndLimitations()
QCString trEnumerationValueDocumentation()
QCString trNoDescriptionAvailable()
virtual QCString trOverloadText()
TranslatorCzech (TranslatorAdapter_1_4_1) 1 method to implement
---------------
Implements 191 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
TranslatorDanish (TranslatorAdapter_1_3_9)
6
methods to implement
TranslatorDanish (TranslatorAdapter_1_3_9)
7
methods to implement
----------------
Implements 185 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
virtual QCString trDirIndex()
virtual QCString trDirDocumentation()
virtual QCString trDirectories()
...
...
@@ -257,7 +259,7 @@ TranslatorDanish (TranslatorAdapter_1_3_9) 6 methods to implement
TranslatorDutch (Translator)
---------------
Implements 19
1
of the required methods.
Implements 19
2
of the required methods.
Obsolete methods (should be removed, never used):
...
...
@@ -276,7 +278,7 @@ TranslatorDutch (Translator)
TranslatorEnglish (Translator)
-----------------
Implements 19
1
of the required methods.
Implements 19
2
of the required methods.
Obsolete methods (should be removed, never used):
...
...
@@ -292,7 +294,7 @@ TranslatorEnglish (Translator)
virtual QCString trNoDescriptionAvailable()
TranslatorFinnish (TranslatorEnglish) 9
4
methods to implement
TranslatorFinnish (TranslatorEnglish) 9
5
methods to implement
-----------------
Implements 97 of the required methods.
...
...
@@ -303,6 +305,7 @@ TranslatorFinnish (TranslatorEnglish) 94 methods to implement
virtual QCString trPropertyDocumentation()
virtual QCString trMember(bool first_capital, bool singular)
virtual QCString trPageIndex()
virtual QCString trOverloadText()
virtual QCString trSince()
virtual QCString trEventDocumentation()
virtual QCString trDirIndex()
...
...
@@ -407,11 +410,15 @@ TranslatorFinnish (TranslatorEnglish) 94 methods to implement
QCString trNoDescriptionAvailable()
TranslatorFrench (Translator
)
TranslatorFrench (Translator
Adapter_1_4_1) 1 method to implement
----------------
Implements 191 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
Obsolete methods (should be removed, never used):
virtual QCString trHeaderFilesDescription()
...
...
@@ -426,11 +433,15 @@ TranslatorFrench (Translator)
virtual QCString trNoDescriptionAvailable()
TranslatorGerman (Translator
)
TranslatorGerman (Translator
Adapter_1_4_1) 1 method to implement
----------------
Implements 191 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
Obsolete methods (should be removed, never used):
virtual QCString trHeaderFilesDescription()
...
...
@@ -445,13 +456,14 @@ TranslatorGerman (Translator)
virtual QCString trNoDescriptionAvailable()
TranslatorGreek (TranslatorAdapter_1_2_11) 2
5
methods to implement
TranslatorGreek (TranslatorAdapter_1_2_11) 2
6
methods to implement
---------------
Implements 166 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
virtual QCString trEventDocumentation()
virtual QCString trDirIndex()
virtual QCString trImplementedFromList(int numEntries)
...
...
@@ -492,11 +504,15 @@ TranslatorGreek (TranslatorAdapter_1_2_11) 25 methods to implement
virtual QCString trNoDescriptionAvailable()
TranslatorHungarian (Translator
)
TranslatorHungarian (Translator
Adapter_1_4_1) 1 method to implement
-------------------
Implements 191 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
Obsolete methods (should be removed, never used):
QCString trHeaderFilesDescription()
...
...
@@ -511,11 +527,15 @@ TranslatorHungarian (Translator)
QCString trNoDescriptionAvailable()
TranslatorItalian (Translator
)
TranslatorItalian (Translator
Adapter_1_4_1) 1 method to implement
-----------------
Implements 191 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
Obsolete methods (should be removed, never used):
QCString trHeaderFilesDescription()
...
...
@@ -530,13 +550,14 @@ TranslatorItalian (Translator)
QCString trNoDescriptionAvailable()
TranslatorJapanese (TranslatorAdapter_1_3_9)
6
methods to implement
TranslatorJapanese (TranslatorAdapter_1_3_9)
7
methods to implement
------------------
Implements 185 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
virtual QCString trDirIndex()
virtual QCString trDirDocumentation()
virtual QCString trDirectories()
...
...
@@ -558,7 +579,7 @@ TranslatorJapanese (TranslatorAdapter_1_3_9) 6 methods to implement
virtual QCString trNoDescriptionAvailable()
TranslatorJapaneseEn (TranslatorEnglish) 18
6
methods to implement
TranslatorJapaneseEn (TranslatorEnglish) 18
7
methods to implement
--------------------
Implements 5 of the required methods.
...
...
@@ -572,11 +593,15 @@ TranslatorJapaneseEn (TranslatorEnglish) 186 methods to implement
virtual QCString latexLanguageSupportCommand()
TranslatorKorean (TranslatorAdapter_1_3_9)
TranslatorKorean (TranslatorAdapter_1_3_9)
1 method to implement
----------------
Implements 191 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
Obsolete methods (should be removed, never used):
virtual QCString trHeaderFilesDescription()
...
...
@@ -591,7 +616,7 @@ TranslatorKorean (TranslatorAdapter_1_3_9)
virtual QCString trNoDescriptionAvailable()
TranslatorKoreanEn (TranslatorEnglish) 18
6
methods to implement
TranslatorKoreanEn (TranslatorEnglish) 18
7
methods to implement
------------------
Implements 5 of the required methods.
...
...
@@ -605,13 +630,14 @@ TranslatorKoreanEn (TranslatorEnglish) 186 methods to implement
virtual QCString latexLanguageSupportCommand()
TranslatorLithuanian (TranslatorAdapter_1_3_8)
7
methods to implement
TranslatorLithuanian (TranslatorAdapter_1_3_8)
8
methods to implement
--------------------
Implements 184 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
virtual QCString trDirIndex()
virtual QCString trDirDocumentation()
virtual QCString trDirectories()
...
...
@@ -634,13 +660,14 @@ TranslatorLithuanian (TranslatorAdapter_1_3_8) 7 methods to implement
virtual QCString trNoDescriptionAvailable()
TranslatorNorwegian (TranslatorAdapter_1_3_9)
6
methods to implement
TranslatorNorwegian (TranslatorAdapter_1_3_9)
7
methods to implement
-------------------
Implements 185 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
virtual QCString trDirIndex()
virtual QCString trDirDocumentation()
virtual QCString trDirectories()
...
...
@@ -662,11 +689,15 @@ TranslatorNorwegian (TranslatorAdapter_1_3_9) 6 methods to implement
virtual QCString trNoDescriptionAvailable()
TranslatorPolish (Translator
)
TranslatorPolish (Translator
Adapter_1_4_1) 1 method to implement
----------------
Implements 191 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
Obsolete methods (should be removed, never used):
QCString trHeaderFilesDescription()
...
...
@@ -681,13 +712,14 @@ TranslatorPolish (Translator)
QCString trNoDescriptionAvailable()
TranslatorPortuguese (TranslatorAdapter_1_3_3) 1
1
methods to implement
TranslatorPortuguese (TranslatorAdapter_1_3_3) 1
2
methods to implement
--------------------
Implements 180 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
virtual QCString trDirIndex()
virtual QCString trDirDocumentation()
virtual QCString trSearchResultsTitle()
...
...
@@ -714,35 +746,14 @@ TranslatorPortuguese (TranslatorAdapter_1_3_3) 11 methods to implement
QCString trNoDescriptionAvailable()
TranslatorRomanian (TranslatorAdapter_1_
2_16) 22 methods
to implement
TranslatorRomanian (TranslatorAdapter_1_
4_1) 1 method
to implement
------------------
Implements 1
69
of the required methods.
Implements 1
91
of the required methods.
Missing methods (should be implemented):
virtual QCString trEventDocumentation()
virtual QCString trDirIndex()
virtual QCString trPackageMembers()
virtual QCString trStaticPackageMembers()
virtual QCString trDirDocumentation()
virtual QCString trSearchResultsTitle()
virtual QCString trDirectories()
virtual QCString trDeprecatedList()
virtual QCString trDirDescription()
virtual QCString trStaticPackageAttribs()
virtual QCString trCallGraph()
virtual QCString trPackageTypes()
virtual QCString trSearchResults(int numDocuments)
virtual QCString trPackageAttribs()
virtual QCString trSearchMatches()
virtual QCString trEvents()
virtual QCString trSourceFile(QCString & filename)
virtual QCString trDirReference(const char * dirName)
virtual QCString trDir(bool first_capital, bool singular)
virtual QCString trSearchForIndex()
virtual QCString trAll()
virtual QCString trRTFTableOfContents()
virtual QCString trOverloadText()
Obsolete methods (should be removed, never used):
...
...
@@ -758,11 +769,15 @@ TranslatorRomanian (TranslatorAdapter_1_2_16) 22 methods to implement
virtual QCString trNoDescriptionAvailable()
TranslatorRussian (Translator
)
TranslatorRussian (Translator
Adapter_1_4_1) 1 method to implement
-----------------
Implements 191 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
Obsolete methods (should be removed, never used):
virtual QCString trHeaderFilesDescription()
...
...
@@ -777,11 +792,15 @@ TranslatorRussian (Translator)
virtual QCString trNoDescriptionAvailable()
TranslatorSerbian (Translator
)
TranslatorSerbian (Translator
Adapter_1_4_1) 1 method to implement
-----------------
Implements 191 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
Obsolete methods (should be removed, never used):
virtual QCString trHeaderFilesDescription()
...
...
@@ -796,13 +815,14 @@ TranslatorSerbian (Translator)
virtual QCString trNoDescriptionAvailable()
TranslatorSlovak (TranslatorAdapter_1_2_18) 2
0
methods to implement
TranslatorSlovak (TranslatorAdapter_1_2_18) 2
1
methods to implement
----------------
Implements 171 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
virtual QCString trEventDocumentation()
virtual QCString trDirIndex()
virtual QCString trPackageMembers()
...
...
@@ -838,13 +858,14 @@ TranslatorSlovak (TranslatorAdapter_1_2_18) 20 methods to implement
virtual QCString trNoDescriptionAvailable()
TranslatorSlovene (TranslatorAdapter_1_2_16) 2
2
methods to implement
TranslatorSlovene (TranslatorAdapter_1_2_16) 2
3
methods to implement
-----------------
Implements 169 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
virtual QCString trEventDocumentation()
virtual QCString trDirIndex()
virtual QCString trPackageMembers()
...
...
@@ -882,13 +903,14 @@ TranslatorSlovene (TranslatorAdapter_1_2_16) 22 methods to implement
QCString trNoDescriptionAvailable()
TranslatorSpanish (TranslatorAdapter_1_3_8)
7
methods to implement
TranslatorSpanish (TranslatorAdapter_1_3_8)
8
methods to implement
-----------------
Implements 184 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
virtual QCString trDirIndex()
virtual QCString trDirDocumentation()
virtual QCString trDirectories()
...
...
@@ -911,11 +933,15 @@ TranslatorSpanish (TranslatorAdapter_1_3_8) 7 methods to implement
virtual QCString trNoDescriptionAvailable()
TranslatorSwedish (Translator
)
TranslatorSwedish (Translator
Adapter_1_4_1) 1 method to implement
-----------------
Implements 191 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
Obsolete methods (should be removed, never used):
virtual QCString trHeaderFilesDescription()
...
...
@@ -930,11 +956,15 @@ TranslatorSwedish (Translator)
virtual QCString trNoDescriptionAvailable()
TranslatorUkrainian (Translator
)
TranslatorUkrainian (Translator
Adapter_1_4_1) 1 method to implement
-------------------
Implements 191 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
Obsolete methods (should be removed, never used):
virtual QCString trHeaderFilesDescription()
...
...
packages/rpm/doxygen.spec
View file @
42eb3f9c
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.4.1_20050
22
7
Version: 1.4.1_20050
30
7
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
...
...
src/code.l
View file @
42eb3f9c
...
...
@@ -133,6 +133,8 @@ static int g_braceCount=0;
static void saveObjCContext();
static void restoreObjCContext();
//-------------------------------------------------------------------
/*! 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)
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"));
scope->append(lname,dummyContext);
if (m_scopes.count()>0) // for local variables add a dummy entry so the name
// 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)
return result;
}
const ClassDef *VariableContext::dummyContext = (ClassDef*)0x8;
static VariableContext g_theVarContext;
const ClassDef *VariableContext::dummyContext = (ClassDef*)0x8;
//-------------------------------------------------------------------
...
...
@@ -848,6 +854,7 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
}
ClassDef *cd=0,*lcd=0;
MemberDef *md=0;
bool isLocal=FALSE;
//fprintf(stderr,"generateClassOrGlobalLink(className=%s)\n",className.data());
if ((lcd=g_theVarContext.findVariable(className))==0) // not a local variable
...
...
@@ -859,7 +866,7 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
{
cd=getResolvedClass(d,g_sourceFileDef,className.left(i),&md);
}
//print("is found as a type %s\n",cd?cd->name().data():"<null>");
//print
f
("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 (getLink(g_classScope,clName,ol,clName))
...
...
@@ -874,7 +881,8 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
{
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
{
...
...
@@ -907,7 +915,7 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
else // not a class, maybe a global member
{
//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
{
...
...
src/commentcnv.l
View file @
42eb3f9c
...
...
@@ -57,6 +57,8 @@ static QCString g_fileName;
static int g_lineNr;
static int g_condCtx;
static QStack<CondCtx> g_condStack;
static QCString g_blockName;
static int g_lastCommentContext;
static void replaceCommentMarker(const char *s,int len)
{
...
...
@@ -217,6 +219,32 @@ static QCString handleCondCmdInAliases(const QCString &s)
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
#define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size);
...
...
@@ -245,7 +273,6 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
%x Verbatim
%x ReadLine
%x CondLine
%x SkipLang
%%
...
...
@@ -271,7 +298,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
}
g_blockHeadCol=g_col;
copyToOutput("/**",3);
copyToOutput(yytext+i,yyleng-i);
//copyToOutput(yytext+i,yyleng-i);
replaceAliases(yytext+i,yyleng-i);
BEGIN(SComment);
}
<Scan>"//##Documentation".*/\n { /* Start of Rational Rose ANSI C++ comment block */
...
...
@@ -279,7 +307,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
int i=17; //=strlen("//##Documentation");
g_blockHeadCol=g_col;
copyToOutput("/**",3);
copyToOutput(yytext+i,yyleng-i);
//copyToOutput(yytext+i,yyleng-i);
replaceAliases(yytext+i,yyleng-i);
BEGIN(SComment);
}
<Scan>"//"/.*\n { /* one line C++ comment */
...
...
@@ -291,16 +320,21 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
copyToOutput(yytext,yyleng);
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);
g_blockName=&yytext[1];
g_lastCommentContext = YY_START;
BEGIN(Verbatim);
}
<Scan>. { /* any other character */
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);
BEGIN(Scan);
if (&yytext[4]==g_blockName)
{
BEGIN(g_lastCommentContext);
}
}
<Verbatim>[^@\\\n]* { /* any character not a backslash or new line */
copyToOutput(yytext,yyleng);
...
...
@@ -311,25 +345,6 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
<Verbatim>. { /* any other character */
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 */
copyToOutput(yytext,yyleng);
}
...
...
@@ -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
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
g_condCtx = YY_START;
BEGIN(CondLine);
...
...
@@ -492,7 +499,7 @@ void replaceComment(int offset)
}
}
/*! This function does t
wo
things:
/*! This function does t
hree
things:
* -# 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).
* -# It replaces aliases with their definition (see ALIASES)
...
...
src/commentscan.l
View file @
42eb3f9c
...
...
@@ -161,7 +161,9 @@ static DocCmdMap docCmdMap[] =
{ "verbatim", &handleFormatBlock },
{ "latexonly", &handleFormatBlock },
{ "htmlonly", &handleFormatBlock },
{ "xmlonly", &handleFormatBlock },
{ "rtfonly", &handleFormatBlock },
{ "manonly", &handleFormatBlock },
{ "dot", &handleFormatBlock },
{ "code", &handleFormatBlock },
{ "addindex", &handleAddIndex },
...
...
@@ -316,7 +318,6 @@ static QCString xrefItemTitle;
static QCString xrefListTitle;
static Protection protection;
static bool xrefAppendToPrev;
static bool xrefAppendFlag;
//-----------------------------------------------------------------------------
...
...
@@ -405,8 +406,8 @@ static void addXRefItem(const char *listName,const char *itemTitle,
{
Entry *docEntry = current; // inBody && previous ? previous : current;
if (listName==0) return;
//printf("addXRefItem(%s,%s,%s,%d)\n",listName,itemTitle,listTitle,append);
ListItemInfo *lii=0;
RefList *refList = Doxygen::xrefLists->find(listName);
if (refList==0) // new list
...
...
@@ -539,17 +540,20 @@ static void addSection()
// selects the output to write to
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);
if (inContext==OutputXRef) // end of XRef section => add the item
{
// 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
// 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)
{
case XRef_Todo:
...
...
@@ -604,7 +608,7 @@ static inline void setOutput(OutputContext ctx)
case OutputXRef:
pOutputString = &outputXRef;
// first item found, so can't append to previous
xrefAppendFlag = FALSE;
//
xrefAppendFlag = FALSE;
break;
}
}
...
...
@@ -641,8 +645,7 @@ static int yyread(char *buf,int max_size)
/* start command character */
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")
/* ("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}">") */
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")
PRE [pP][rR][eE]
TABLE [tT][aA][bB][lL][eE]
P [pP]
...
...
@@ -706,6 +709,7 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
%x ReadFormulaLong
%x AnchorLabel
%x HtmlComment
%x SkipLang
%%
...
...
@@ -720,11 +724,15 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
* end of brief description due to some command (@command, or <command>).
* words and whitespace and other characters (#,?!, etc).
* grouping commands (e.g. @{ and @})
* language switch (e.g. \~english or \~).
*/
<Comment>{CMD}{CMD}[a-z_A-Z]+{B}* { // escaped command
addOutput(yytext);
}
<Comment>{CMD}{CMD}"~"[a-z_A-Z]* { // escaped command
addOutput(yytext);
}
<Comment>("\\"[a-z_A-Z]+)+"\\" { // directory (or chain of commands!)
addOutput(yytext);
}
...
...
@@ -757,6 +765,14 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
<Comment>("\\\\"|"@@")"f"[$\[{] { // escaped formula command
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
formulaText="\\begin";
formulaEnv=&yytext[2];
...
...
@@ -793,7 +809,7 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
addOutput(yytext[0]);
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)
{
setOutput(OutputDoc);
...
...
@@ -1091,7 +1107,6 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
<XRefItemParam1>{ID} { // first argument
newXRefItemKey=yytext;
setOutput(OutputXRef);
xrefItemKey==yytext;
BEGIN(XRefItemParam2);
}
<XRefItemParam1>{LC} { // line continuation
...
...
@@ -1274,7 +1289,7 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
/* ----- handle arguments of the preformatted block commands ------- */
<FormatBlock>{CMD}("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"enddot"|"endcode")/{NW} { // possible ends
<FormatBlock>{CMD}("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"end
rtfonly"|"endmanonly"|"end
dot"|"endcode")/{NW} { // possible ends
addOutput(yytext);
if (&yytext[4]==blockName) // found end of the block
{
...
...
@@ -1429,6 +1444,7 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
}
<NameParam>. { // ignore other stuff
nameHeader+=*yytext;
current->name+=*yytext;
}
/* ----- handle argument of ingroup command ------- */
...
...
@@ -1523,6 +1539,25 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
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 */
}
%%
//----------------------------------------------------------------------------
...
...
src/doxygen.cpp
View file @
42eb3f9c
...
...
@@ -653,16 +653,23 @@ static void addClassToContext(Entry *root)
// see if the using statement was found inside a namespace or inside
// the global file scope.
QCString
scName
;
if
(
root
->
parent
->
section
==
Entry
::
NAMESPACE_SEC
)
{
QCString
scName
=
root
->
parent
->
name
;
scName
=
root
->
parent
->
name
;
if
(
!
scName
.
isEmpty
())
{
nd
=
getResolvedNamespace
(
scName
);
}
}
QCString
fullName
=
root
->
name
;
ClassDef
*
cd
=
getResolvedClass
(
nd
,
fd
,
root
->
name
,
0
,
0
,
TRUE
);
ClassDef
*
cd
=
getResolvedClass
(
nd
,
fd
,
// normally we could use root->name to find the class, but since we did not yet resolve
// the class/namespace nesting relations we have to use the fully qualified name here.
scName
.
isEmpty
()
?
root
->
name
:
scName
+
"::"
+
root
->
name
,
0
,
0
,
TRUE
);
Debug
::
print
(
Debug
::
Classes
,
0
,
" Found class with name %s (cd=%p)
\n
"
,
cd
?
cd
->
name
().
data
()
:
root
->
name
.
data
(),
cd
);
...
...
@@ -1501,11 +1508,7 @@ static MemberDef *addVariableToClass(
root
->
type
,
name
,
root
->
args
,
0
,
prot
,
Normal
,
root
->
stat
,
related
,
mtype
,
0
,
0
);
if
(
root
->
tagInfo
)
{
md
->
setAnchor
(
root
->
tagInfo
->
anchor
);
md
->
setReference
(
root
->
tagInfo
->
tagName
);
}
md
->
setTagInfo
(
root
->
tagInfo
);
md
->
setMemberClass
(
cd
);
//md->setDefFile(root->fileName);
//md->setDefLine(root->startLine);
...
...
@@ -1662,11 +1665,7 @@ static MemberDef *addVariableToFile(
root
->
type
,
name
,
root
->
args
,
0
,
Public
,
Normal
,
root
->
stat
,
FALSE
,
mtype
,
0
,
0
);
if
(
root
->
tagInfo
)
{
md
->
setAnchor
(
root
->
tagInfo
->
anchor
);
md
->
setReference
(
root
->
tagInfo
->
tagName
);
}
md
->
setTagInfo
(
root
->
tagInfo
);
md
->
setDocumentation
(
root
->
doc
,
root
->
docFile
,
root
->
docLine
);
md
->
setBriefDescription
(
root
->
brief
,
root
->
briefFile
,
root
->
briefLine
);
md
->
setInbodyDocumentation
(
root
->
inbodyDocs
,
root
->
inbodyFile
,
root
->
inbodyLine
);
...
...
@@ -1774,7 +1773,11 @@ static bool isVarWithConstructor(Entry *root)
}
if
(
root
->
parent
->
name
)
ctx
=
Doxygen
::
namespaceSDict
.
find
(
root
->
parent
->
name
);
type
=
root
->
type
;
if
(
type
.
left
(
6
)
==
"const "
)
type
=
type
.
right
(
type
.
length
()
-
6
);
// remove qualifiers
findAndRemoveWord
(
type
,
"const"
);
findAndRemoveWord
(
type
,
"static"
);
findAndRemoveWord
(
type
,
"volatile"
);
//if (type.left(6)=="const ") type=type.right(type.length()-6);
typeIsClass
=
getResolvedClass
(
ctx
,
fd
,
type
)
!=
0
;
if
(
!
typeIsClass
&&
(
ti
=
type
.
find
(
'<'
))
!=-
1
)
{
...
...
@@ -2096,11 +2099,7 @@ static void addMethodToClass(Entry *root,ClassDef *cd,
root
->
type
,
name
,
root
->
args
,
root
->
exception
,
root
->
protection
,
root
->
virt
,
root
->
stat
,
!
root
->
relates
.
isEmpty
(),
mtype
,
root
->
tArgLists
?
root
->
tArgLists
->
last
()
:
0
,
root
->
argList
);
if
(
root
->
tagInfo
)
{
md
->
setAnchor
(
root
->
tagInfo
->
anchor
);
md
->
setReference
(
root
->
tagInfo
->
tagName
);
}
md
->
setTagInfo
(
root
->
tagInfo
);
md
->
setMemberClass
(
cd
);
md
->
setDocumentation
(
root
->
doc
,
root
->
docFile
,
root
->
docLine
);
md
->
setDocsForDefinition
(
!
root
->
proto
);
...
...
@@ -2237,6 +2236,7 @@ static void buildFunctionList(Entry *root)
bool
isFriend
=
root
->
type
.
find
(
"friend "
)
!=-
1
;
QCString
rname
=
removeRedundantWhiteSpace
(
root
->
name
);
//printf("rname=%s\n",rname.data());
if
(
!
rname
.
isEmpty
())
{
...
...
@@ -2247,10 +2247,12 @@ static void buildFunctionList(Entry *root)
//printf("root->parent=`%s' %x cd=%p root->type.find(re,0)=%d\n",
// root->parent->name.data(),root->parent->section,getClass(root->parent->name),
// root->type.find(re,0));
QCString
scope
=
stripAnonymousNamespaceScope
(
root
->
parent
->
name
);
QCString
scope
=
root
->
parent
->
name
;
//
stripAnonymousNamespaceScope(root->parent->name);
scope
=
stripTemplateSpecifiersFromScope
(
scope
,
FALSE
);
//printf("scope=%s\n",scope.data());
cd
=
getClass
(
scope
);
//printf("cd=%p\n",cd);
if
(
cd
&&
scope
+
"::"
==
rname
.
left
(
scope
.
length
()
+
2
))
// found A::f inside A
{
// strip scope from name
...
...
@@ -2423,11 +2425,7 @@ static void buildFunctionList(Entry *root)
MemberDef
::
Function
,
tArgList
,
root
->
argList
);
if
(
root
->
tagInfo
)
{
md
->
setAnchor
(
root
->
tagInfo
->
anchor
);
md
->
setReference
(
root
->
tagInfo
->
tagName
);
}
md
->
setTagInfo
(
root
->
tagInfo
);
//md->setDefFile(root->fileName);
//md->setDefLine(root->startLine);
md
->
setDocumentation
(
root
->
doc
,
root
->
docFile
,
root
->
docLine
);
...
...
@@ -4131,63 +4129,6 @@ static ClassDef *findClassDefinition(FileDef *fd,NamespaceDef *nd,
const
char
*
scopeName
)
{
ClassDef
*
tcd
=
getResolvedClass
(
nd
,
fd
,
scopeName
,
0
,
0
,
TRUE
);
#if 0
if (tcd==0) // try using declaration
{
ClassSDict *cl = 0;
if (nd)
{
cl=nd->getUsedClasses();
}
else if (fd)
{
cl=fd->getUsedClasses();
}
if (cl)
{
ClassSDict::Iterator cli(*cl);
ClassDef *cd;
for (;(cd=cli.current()) && tcd==0;++cli)
{
QCString scName = scopeName;
int scopeOffset = scName.length();
do
{
QCString scope=scName.left(scopeOffset);
//printf("`%s'<->`%s' `%s'\n",cd->name().data(),scope.data(),scopeName);
if (rightScopeMatch(cd->name(),scope))
{
//printf("Trying to find `%s'\n",(cd->name()+scName.right(scName.length()-scopeOffset)).data());
tcd = getClass(cd->name()+scName.right(scName.length()-scopeOffset));
}
scopeOffset=scName.findRev("::",scopeOffset-1);
} while (scopeOffset>=0 && tcd==0);
}
}
}
if (tcd==0) // try using directive
{
NamespaceSDict *nl = 0;
if (nd)
{
nl=nd->getUsedNamespaces();
}
else if (fd)
{
nl=fd->getUsedNamespaces();
}
if (nl)
{
NamespaceSDict::Iterator nli(*nl);
NamespaceDef *nd;
for (;(nd=nli.current()) && tcd==0;++nli)
{
//printf("Trying with scope=%s\n",nd->name().data());
tcd = getClass(nd->name()+"::"+scopeName);
}
}
}
#endif
return
tcd
;
}
...
...
@@ -4708,7 +4649,8 @@ static void findMember(Entry *root,
if
(
!
namespaceName
.
isEmpty
())
nd
=
getResolvedNamespace
(
namespaceName
);
ClassDef
*
tcd
=
findClassDefinition
(
fd
,
nd
,
scopeName
);
//printf("*** cd=%s tcd=%s fd=%s\n",cd->name().data(),tcd->name().data(),fd->name().data());
//printf("Looking for %s inside nd=%s result=%p\n",
// scopeName.data(),nd?nd->name().data():"<none>",tcd);
if
(
cd
&&
tcd
==
cd
)
// member's classes match
{
...
...
@@ -4967,7 +4909,7 @@ static void findMember(Entry *root,
for
(
mni
.
toFirst
();(
md
=
mni
.
current
());
++
mni
)
{
ClassDef
*
cd
=
md
->
getClassDef
();
if
(
cd
!=
0
&&
cd
->
name
()
==
className
)
if
(
cd
!=
0
&&
rightScopeMatch
(
cd
->
name
(),
className
)
)
{
if
(
md
->
templateArguments
())
{
...
...
@@ -4998,11 +4940,7 @@ static void findMember(Entry *root,
root
->
protection
,
root
->
virt
,
root
->
stat
,
FALSE
,
mtype
,
tArgList
,
root
->
argList
);
//printf("new specialized member %s args=`%s'\n",md->name().data(),funcArgs.data());
if
(
root
->
tagInfo
)
{
md
->
setAnchor
(
root
->
tagInfo
->
anchor
);
md
->
setReference
(
root
->
tagInfo
->
tagName
);
}
md
->
setTagInfo
(
root
->
tagInfo
);
md
->
setMemberClass
(
cd
);
md
->
setTemplateSpecialization
(
TRUE
);
md
->
setDefinition
(
funcDecl
);
...
...
@@ -5063,11 +5001,7 @@ static void findMember(Entry *root,
funcType
,
funcName
,
funcArgs
,
exceptions
,
root
->
protection
,
root
->
virt
,
root
->
stat
,
TRUE
,
mtype
,
tArgList
,
root
->
argList
);
if
(
root
->
tagInfo
)
{
md
->
setAnchor
(
root
->
tagInfo
->
anchor
);
md
->
setReference
(
root
->
tagInfo
->
tagName
);
}
md
->
setTagInfo
(
root
->
tagInfo
);
md
->
setMemberClass
(
cd
);
md
->
setDefinition
(
funcDecl
);
md
->
enableCallGraph
(
root
->
callGraph
);
...
...
@@ -5173,11 +5107,7 @@ static void findMember(Entry *root,
funcType
,
funcName
,
funcArgs
,
exceptions
,
root
->
protection
,
root
->
virt
,
root
->
stat
,
TRUE
,
mtype
,
tArgList
,
funcArgs
.
isEmpty
()
?
0
:
root
->
argList
);
if
(
root
->
tagInfo
)
{
md
->
setAnchor
(
root
->
tagInfo
->
anchor
);
md
->
setReference
(
root
->
tagInfo
->
tagName
);
}
md
->
setTagInfo
(
root
->
tagInfo
);
//printf("Related member name=`%s' decl=`%s' bodyLine=`%d'\n",
// funcName.data(),funcDecl.data(),root->bodyLine);
...
...
@@ -5274,11 +5204,7 @@ localObjCMethod:
funcType
,
funcName
,
funcArgs
,
exceptions
,
root
->
protection
,
root
->
virt
,
root
->
stat
,
FALSE
,
MemberDef
::
Function
,
0
,
root
->
argList
);
if
(
root
->
tagInfo
)
{
md
->
setAnchor
(
root
->
tagInfo
->
anchor
);
md
->
setReference
(
root
->
tagInfo
->
tagName
);
}
md
->
setTagInfo
(
root
->
tagInfo
);
md
->
makeImplementationDetail
();
md
->
setMemberClass
(
cd
);
md
->
setDefinition
(
funcDecl
);
...
...
@@ -5559,11 +5485,7 @@ static void findEnums(Entry *root)
0
,
name
,
0
,
0
,
root
->
protection
,
Normal
,
FALSE
,
isRelated
,
MemberDef
::
Enumeration
,
0
,
0
);
if
(
root
->
tagInfo
)
{
md
->
setAnchor
(
root
->
tagInfo
->
anchor
);
md
->
setReference
(
root
->
tagInfo
->
tagName
);
}
md
->
setTagInfo
(
root
->
tagInfo
);
if
(
!
isGlobal
)
md
->
setMemberClass
(
cd
);
else
md
->
setFileDef
(
fd
);
md
->
setBodySegment
(
root
->
bodyLine
,
root
->
endBodyLine
);
bool
ambig
;
...
...
@@ -6480,8 +6402,7 @@ static void findDefineDocumentation(Entry *root)
MemberDef
*
md
=
new
MemberDef
(
"<tagfile>"
,
1
,
"#define"
,
root
->
name
,
root
->
args
,
0
,
Public
,
Normal
,
FALSE
,
FALSE
,
MemberDef
::
Define
,
0
,
0
);
md
->
setAnchor
(
root
->
tagInfo
->
anchor
);
md
->
setReference
(
root
->
tagInfo
->
tagName
);
md
->
setTagInfo
(
root
->
tagInfo
);
bool
ambig
;
QCString
filePathName
=
root
->
parent
->
fileName
;
FileDef
*
fd
=
findFileDef
(
Doxygen
::
inputNameDict
,
filePathName
,
ambig
);
...
...
@@ -8610,6 +8531,10 @@ void parseInput()
buildClassList
(
root
);
buildClassDocList
(
root
);
resolveClassNestingRelations
();
// calling buildClassList may result in cached relations that
// become invalid after resolveClassNestingRelation(), that's why
// we need to clear the cache here
Doxygen
::
lookupCache
.
clear
();
msg
(
"Searching for members imported via using declarations...
\n
"
);
findUsingDeclImports
(
root
);
...
...
src/htmlgen.cpp
View file @
42eb3f9c
...
...
@@ -125,7 +125,8 @@ static const char *defaultStyleSheet =
"A:hover { text-decoration: none; background-color: #f2f2ff }
\n
"
"DL.el { margin-left: -1cm }
\n
"
".fragment {
\n
"
" font-family: monospace
\n
"
" font-family: Fixed, monospace;
\n
"
" font-size: 90%;
\n
"
"}
\n
"
"PRE.fragment {
\n
"
" border: 1px solid #CCCCCC;
\n
"
...
...
@@ -843,8 +844,10 @@ void HtmlGenerator::codify(const char *str)
t
<<
spaces
.
left
(
spacesToNextTabStop
);
col
+=
spacesToNextTabStop
;
break
;
case
'\n'
:
t
<<
'\n'
;
col
=
0
;
case
'\n'
:
t
<<
"
\n
"
;
col
=
0
;
break
;
//case '\n': t << "<br>"; col=0;
// break;
case
'\r'
:
break
;
case
'<'
:
t
<<
"<"
;
col
++
;
break
;
...
...
@@ -852,6 +855,8 @@ void HtmlGenerator::codify(const char *str)
break
;
case
'&'
:
t
<<
"&"
;
col
++
;
break
;
//case ' ': t << " "; col++;
// break;
case
'\\'
:
if
(
*
p
==
'<'
)
{
t
<<
"<"
;
p
++
;
}
...
...
src/index.cpp
View file @
42eb3f9c
...
...
@@ -1707,34 +1707,24 @@ static void writeMemberIndexFiltered(OutputList &ol, ClassMemberHighlight hl)
numPages
=
127
;
}
struct
struct
CmhlInfo
{
CmhlInfo
(
const
char
*
fn
,
const
char
*
t
)
:
fname
(
fn
),
title
(
t
)
{}
const
char
*
fname
;
QCString
title
;
}
cmhlInfo
[]
=
{
{
"functions"
,
0
},
{
"functions_func"
,
0
},
{
"functions_vars"
,
0
},
{
"functions_type"
,
0
},
{
"functions_enum"
,
0
},
{
"functions_eval"
,
0
},
{
"functions_rela"
,
0
},
{
"functions_prop"
,
0
},
{
"functions_evnt"
,
0
},
{
"functions_rela"
,
0
},
CmhlInfo
(
"functions"
,
theTranslator
->
trAll
()),
CmhlInfo
(
"functions_func"
,
theTranslator
->
trFunctions
()),
CmhlInfo
(
"functions_vars"
,
theTranslator
->
trVariables
()),
CmhlInfo
(
"functions_type"
,
theTranslator
->
trTypedefs
()),
CmhlInfo
(
"functions_enum"
,
theTranslator
->
trEnumerations
()),
CmhlInfo
(
"functions_eval"
,
theTranslator
->
trEnumerationValues
()),
CmhlInfo
(
"functions_prop"
,
theTranslator
->
trProperties
()),
CmhlInfo
(
"functions_evnt"
,
theTranslator
->
trEvents
()),
CmhlInfo
(
"functions_rela"
,
theTranslator
->
trRelatedFunctions
())
};
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
.
disableAllBut
(
OutputGenerator
::
Html
);
...
...
@@ -2114,27 +2104,21 @@ static void writeFileMemberIndexFiltered(OutputList &ol, FileMemberHighlight hl)
numPages
=
127
;
}
struct
struct
FmhlInfo
{
FmhlInfo
(
const
char
*
fn
,
const
char
*
t
)
:
fname
(
fn
),
title
(
t
)
{}
const
char
*
fname
;
QCString
title
;
}
fmhlInfo
[]
=
{
{
"globals"
,
0
}
,
{
"globals_func"
,
0
}
,
{
"globals_vars"
,
0
}
,
{
"globals_type"
,
0
}
,
{
"globals_enum"
,
0
}
,
{
"globals_eval"
,
0
}
,
{
"globals_defs"
,
0
}
FmhlInfo
(
"globals"
,
theTranslator
->
trAll
())
,
FmhlInfo
(
"globals_func"
,
theTranslator
->
trFunctions
())
,
FmhlInfo
(
"globals_vars"
,
theTranslator
->
trVariables
())
,
FmhlInfo
(
"globals_type"
,
theTranslator
->
trTypedefs
())
,
FmhlInfo
(
"globals_enum"
,
theTranslator
->
trEnumerations
())
,
FmhlInfo
(
"globals_eval"
,
theTranslator
->
trEnumerationValues
())
,
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
.
disableAllBut
(
OutputGenerator
::
Html
);
...
...
@@ -2241,25 +2225,20 @@ static void writeNamespaceMemberIndexFiltered(OutputList &ol,
numPages
=
127
;
}
struct
struct
NmhlInfo
{
NmhlInfo
(
const
char
*
fn
,
const
char
*
t
)
:
fname
(
fn
),
title
(
t
)
{}
const
char
*
fname
;
QCString
title
;
}
nmhlInfo
[]
=
{
{
"namespacemembers"
,
0
}
,
{
"namespacemembers_func"
,
0
}
,
{
"namespacemembers_vars"
,
0
}
,
{
"namespacemembers_type"
,
0
}
,
{
"namespacemembers_enum"
,
0
}
,
{
"namespacemembers_eval"
,
0
}
NmhlInfo
(
"namespacemembers"
,
theTranslator
->
trAll
())
,
NmhlInfo
(
"namespacemembers_func"
,
theTranslator
->
trFunctions
())
,
NmhlInfo
(
"namespacemembers_vars"
,
theTranslator
->
trVariables
())
,
NmhlInfo
(
"namespacemembers_type"
,
theTranslator
->
trTypedefs
())
,
NmhlInfo
(
"namespacemembers_enum"
,
theTranslator
->
trEnumerations
())
,
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
.
disableAllBut
(
OutputGenerator
::
Html
);
...
...
src/memberdef.cpp
View file @
42eb3f9c
...
...
@@ -509,7 +509,11 @@ bool MemberDef::hasExamples()
QCString
MemberDef
::
getOutputFileBase
()
const
{
QCString
baseName
;
if
(
m_templateMaster
)
if
(
explicitOutputFileBase
)
{
return
explicitOutputFileBase
;
}
else
if
(
m_templateMaster
)
{
return
m_templateMaster
->
getOutputFileBase
();
}
...
...
@@ -835,6 +839,10 @@ void MemberDef::writeDeclaration(OutputList &ol,
// hide members whose brief section should not be visible
//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
if
(
!
Config_getString
(
"GENERATE_TAGFILE"
).
isEmpty
())
{
...
...
@@ -875,6 +883,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
Doxygen
::
tagFile
<<
"
\"
>"
<<
endl
;
Doxygen
::
tagFile
<<
" <type>"
<<
convertToXML
(
typeString
())
<<
"</type>"
<<
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
<<
" <arglist>"
<<
convertToXML
(
argsString
())
<<
"</arglist>"
<<
endl
;
writeDocAnchorsToTagFile
();
...
...
@@ -889,9 +898,6 @@ void MemberDef::writeDeclaration(OutputList &ol,
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
cfname
=
getOutputFileBase
();
QCString
osname
=
cname
;
...
...
@@ -2080,11 +2086,14 @@ void MemberDef::addListReference(Definition *)
}
QCString
memName
=
name
();
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
=
getClassDef
())
&&
!
isRelated
())
// it's a class so we
||
(
pd
=
getClassDef
())
// it's a class so we
// show the scope anyway
)
)
{
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_JAVA"
))
...
...
@@ -2328,3 +2337,13 @@ QCString MemberDef::qualifiedName()
}
}
void
MemberDef
::
setTagInfo
(
TagInfo
*
ti
)
{
if
(
ti
)
{
setAnchor
(
ti
->
anchor
);
setReference
(
ti
->
tagName
);
explicitOutputFileBase
=
stripExtension
(
ti
->
fileName
);
}
}
src/memberdef.h
View file @
42eb3f9c
...
...
@@ -182,6 +182,7 @@ class MemberDef : public Definition
void
setHasDocumentedParams
(
bool
b
)
{
m_hasDocumentedParams
=
b
;
}
void
setHasDocumentedReturnType
(
bool
b
)
{
m_hasDocumentedReturnType
=
b
;
}
void
setInheritsDocsFrom
(
MemberDef
*
md
)
{
m_docProvider
=
md
;
}
void
setTagInfo
(
TagInfo
*
i
);
// output generation
void
writeLink
(
OutputList
&
ol
,
...
...
@@ -400,6 +401,9 @@ class MemberDef : public Definition
// documentation inheritance
MemberDef
*
m_docProvider
;
// to store the output file base from tag files
QCString
explicitOutputFileBase
;
};
#endif
src/pre.l
View file @
42eb3f9c
...
...
@@ -100,6 +100,7 @@ static bool g_expandOnlyPredef; // from the configuration
static int g_commentCount;
static bool g_insideComment;
static bool g_isImported;
static QCString g_blockName;
static void setFileName(const char *name)
...
...
@@ -1776,13 +1777,17 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
outputChar('/');outputChar('*');
//g_commentCount++;
}
<SkipCComment>[\\@]
"verbatim"
{BN}+ {
<SkipCComment>[\\@]
("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code")
{BN}+ {
outputArray(yytext,yyleng);
g_blockName=&yytext[1];
BEGIN(SkipVerbatim);
}
<SkipVerbatim>[\\@]
"endverbatim" {
<SkipVerbatim>[\\@]
("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"endrtfonly"|"endmanonly"|"enddot"|"endcode") { /* end of verbatim block */
outputArray(yytext,yyleng);
BEGIN(SkipCComment);
if (&yytext[4]==g_blockName)
{
BEGIN(SkipCComment);
}
}
<SkipCComment,SkipVerbatim>[^*\x06\n\/]+ {
outputArray(yytext,yyleng);
...
...
src/scanner.l
View file @
42eb3f9c
...
...
@@ -2121,7 +2121,12 @@ IDLATTR ("["[^\]]*"]"){BN}*
<FindMembers,FindFields>("//"([!/]?){B}*{CMD}"{")|("/*"([!*]?){B}*{CMD}"{") {
#ifdef COMMENTSCAN
REJECT;
Entry *tmp = current;
current = previous;
handleGroupStartCommand(current->name);
current = tmp;
initEntry();
#else
startGroup();
tmpDocType=-1;
...
...
@@ -2154,7 +2159,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
}
<FindMembers,FindFields,ReadInitializer>"//"([!/]?){B}*{CMD}"}".*|"/*"([!*]?){B}*{CMD}"}".*"*/" {
#ifdef COMMENTSCAN
REJECT
;
handleGroupEndCommand()
;
#else
if (memberGroupId==DOX_NOGROUP && autoGroupStack.isEmpty())
{
...
...
@@ -3266,7 +3271,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
<FuncQual>[{:;,] {
if ( strcmp(yytext,";")==0 &&
insidePHP &&
current->type.left(8) != "function"
)
!containsWord(current->type,"function")
)
{
current->reset();
initEntry();
...
...
@@ -3497,26 +3502,24 @@ IDLATTR ("["[^\]]*"]"){BN}*
//printf("Adding entry `%s'\n",current->name.data());
if ( insidePHP)
{
if (
current->type.left(6) == "final "
)
if (
findAndRemoveWord(current->type,"final")
)
{
current->type = current->type.mid(6);
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;
}
}
if ( insidePHP &&
current->type.left(8) != "function"
)
if ( insidePHP &&
!containsWord(current->type,"function")
)
{
initEntry();
}
else
{
if ( insidePHP
&& current->type.left(8) == "function"
)
if ( insidePHP)
{
current->type = current->type.mid(8
);
findAndRemoveWord(current->type,"function"
);
}
previous = current;
current_root->addSubEntry(current);
...
...
@@ -4303,7 +4306,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
<FindMembers>"{" {
if (insideCS && !current->name.isEmpty() && !current->type.isEmpty())
{
if (c
urrent->type.left(6)=="event " || current->type.find("event")!=-1
) // event
if (c
ontainsWord(current->type,"event")
) // event
{
current->mtype = mtype = Event;
}
...
...
src/tagreader.cpp
View file @
42eb3f9c
...
...
@@ -19,6 +19,8 @@
#include "tagreader.h"
#include <stdio.h>
#include <stdarg.h>
#include <qxml.h>
#include <qstack.h>
#include <qdict.h>
...
...
@@ -58,6 +60,7 @@ class TagMemberInfo
TagMemberInfo
()
:
prot
(
Public
),
virt
(
Normal
),
isStatic
(
FALSE
)
{}
QString
type
;
QString
name
;
QString
anchorFile
;
QString
anchor
;
QString
arglist
;
QString
kind
;
...
...
@@ -80,6 +83,7 @@ class TagClassInfo
QList
<
BaseInfo
>
*
bases
;
QList
<
TagMemberInfo
>
members
;
QList
<
QString
>
*
templateArguments
;
QStringList
classList
;
Kind
kind
;
bool
isObjC
;
};
...
...
@@ -91,9 +95,10 @@ class TagNamespaceInfo
TagNamespaceInfo
()
{
members
.
setAutoDelete
(
TRUE
);
}
QString
name
;
QString
filename
;
QStringList
classList
;
QStringList
namespaceList
;
TagAnchorInfoList
docAnchors
;
QList
<
TagMemberInfo
>
members
;
QStringList
classList
;
};
/*! Container for package specific info that can be read from a tagfile */
...
...
@@ -201,6 +206,7 @@ class TagFileParser : public QXmlDefaultHandler
TagFileParser
*
m_parent
;
Handler
m_handler
;
};
class
EndElementHandler
{
typedef
void
(
TagFileParser
::*
Handler
)();
...
...
@@ -220,6 +226,24 @@ class TagFileParser : public QXmlDefaultHandler
m_startElementHandlers
.
setAutoDelete
(
TRUE
);
m_endElementHandlers
.
setAutoDelete
(
TRUE
);
}
void
setDocumentLocator
(
QXmlLocator
*
locator
)
{
m_locator
=
locator
;
}
void
setFileName
(
const
QString
&
fileName
)
{
m_inputFileName
=
fileName
;
}
void
warn
(
const
char
*
fmt
,...)
{
va_list
args
;
va_start
(
args
,
fmt
);
::
warn
(
m_inputFileName
,
m_locator
->
lineNumber
(),
fmt
,
args
);
va_end
(
args
);
}
void
startCompound
(
const
QXmlAttributes
&
attrib
)
{
...
...
@@ -300,13 +324,14 @@ class TagFileParser : public QXmlDefaultHandler
}
else
{
err
(
"Error
: Unknown compound attribute `%s' found!
\n
"
,
kind
.
data
());
warn
(
"Warning
: Unknown compound attribute `%s' found!
\n
"
,
kind
.
data
());
}
if
(
isObjC
==
"yes"
&&
m_curClass
)
{
m_curClass
->
isObjC
=
TRUE
;
}
}
void
endCompound
()
{
switch
(
m_state
)
...
...
@@ -326,9 +351,10 @@ class TagFileParser : public QXmlDefaultHandler
case
InPackage
:
m_tagFilePackages
.
append
(
m_curPackage
);
m_curPackage
=
0
;
break
;
default
:
err
(
"Error
: tag `compound' was not expected!
\n
"
);
warn
(
"Warning
: tag `compound' was not expected!
\n
"
);
}
}
void
startMember
(
const
QXmlAttributes
&
attrib
)
{
m_curMember
=
new
TagMemberInfo
;
...
...
@@ -371,11 +397,10 @@ class TagFileParser : public QXmlDefaultHandler
case
InNamespace
:
m_curNamespace
->
members
.
append
(
m_curMember
);
break
;
case
InGroup
:
m_curGroup
->
members
.
append
(
m_curMember
);
break
;
case
InPackage
:
m_curPackage
->
members
.
append
(
m_curMember
);
break
;
default
:
err
(
"Error
: Unexpected tag `member' found
\n
"
);
break
;
default
:
warn
(
"Warning
: Unexpected tag `member' found
\n
"
);
break
;
}
}
void
endDocAnchor
()
{
switch
(
m_state
)
...
...
@@ -388,63 +413,73 @@ class TagFileParser : public QXmlDefaultHandler
case
InMember
:
m_curMember
->
docAnchors
.
append
(
new
TagAnchorInfo
(
m_fileName
,
m_curString
));
break
;
case
InPackage
:
m_curPackage
->
docAnchors
.
append
(
new
TagAnchorInfo
(
m_fileName
,
m_curString
));
break
;
case
InDir
:
m_curDir
->
docAnchors
.
append
(
new
TagAnchorInfo
(
m_fileName
,
m_curString
));
break
;
default
:
err
(
"Error
: Unexpected tag `member' found
\n
"
);
break
;
default
:
warn
(
"Warning
: Unexpected tag `member' found
\n
"
);
break
;
}
}
void
endClass
()
{
switch
(
m_state
)
{
case
InClass
:
m_curClass
->
classList
.
append
(
m_curString
);
break
;
case
InFile
:
m_curFile
->
classList
.
append
(
m_curString
);
break
;
case
InNamespace
:
m_curNamespace
->
classList
.
append
(
m_curString
);
break
;
case
InGroup
:
m_curGroup
->
classList
.
append
(
m_curString
);
break
;
case
InPackage
:
m_curPackage
->
classList
.
append
(
m_curString
);
break
;
default
:
err
(
"Error
: Unexpected tag `class' found
\n
"
);
break
;
default
:
warn
(
"Warning
: Unexpected tag `class' found
\n
"
);
break
;
}
}
void
endNamespace
()
{
switch
(
m_state
)
{
case
InNamespace
:
m_curNamespace
->
classList
.
append
(
m_curString
);
break
;
case
InFile
:
m_curFile
->
namespaceList
.
append
(
m_curString
);
break
;
case
InGroup
:
m_curGroup
->
namespaceList
.
append
(
m_curString
);
break
;
default
:
err
(
"Error
: Unexpected tag `namespace' found
\n
"
);
break
;
default
:
warn
(
"Warning
: Unexpected tag `namespace' found
\n
"
);
break
;
}
}
void
endFile
()
{
switch
(
m_state
)
{
case
InGroup
:
m_curGroup
->
fileList
.
append
(
m_curString
);
break
;
case
InDir
:
m_curDir
->
fileList
.
append
(
m_curString
);
break
;
default
:
err
(
"Error
: Unexpected tag `file' found
\n
"
);
break
;
default
:
warn
(
"Warning
: Unexpected tag `file' found
\n
"
);
break
;
}
}
void
endPage
()
{
switch
(
m_state
)
{
case
InGroup
:
m_curGroup
->
fileList
.
append
(
m_curString
);
break
;
default
:
err
(
"Error
: Unexpected tag `page' found
\n
"
);
break
;
default
:
warn
(
"Warning
: Unexpected tag `page' found
\n
"
);
break
;
}
}
void
endDir
()
{
switch
(
m_state
)
{
case
InDir
:
m_curDir
->
subdirList
.
append
(
m_curString
);
break
;
default
:
err
(
"Error
: Unexpected tag `page' found
\n
"
);
break
;
default
:
warn
(
"Warning
: Unexpected tag `page' found
\n
"
);
break
;
}
}
void
startStringValue
(
const
QXmlAttributes
&
)
{
m_curString
=
""
;
}
void
startDocAnchor
(
const
QXmlAttributes
&
attrib
)
{
m_fileName
=
attrib
.
value
(
"file"
);
m_curString
=
""
;
}
void
endType
()
{
if
(
m_state
==
InMember
)
...
...
@@ -453,9 +488,10 @@ class TagFileParser : public QXmlDefaultHandler
}
else
{
err
(
"Error
: Unexpected tag `type' found
\n
"
);
warn
(
"Warning
: Unexpected tag `type' found
\n
"
);
}
}
void
endName
()
{
switch
(
m_state
)
...
...
@@ -468,9 +504,10 @@ class TagFileParser : public QXmlDefaultHandler
case
InDir
:
m_curDir
->
name
=
m_curString
;
break
;
case
InMember
:
m_curMember
->
name
=
m_curString
;
break
;
case
InPackage
:
m_curPackage
->
name
=
m_curString
;
break
;
default
:
err
(
"Error
: Unexpected tag `name' found
\n
"
);
break
;
default
:
warn
(
"Warning
: Unexpected tag `name' found
\n
"
);
break
;
}
}
void
startBase
(
const
QXmlAttributes
&
attrib
)
{
m_curString
=
""
;
...
...
@@ -501,9 +538,10 @@ class TagFileParser : public QXmlDefaultHandler
}
else
{
err
(
"Error
: Unexpected tag `base' found
\n
"
);
warn
(
"Warning
: Unexpected tag `base' found
\n
"
);
}
}
void
endBase
()
{
if
(
m_state
==
InClass
&&
m_curClass
)
...
...
@@ -512,9 +550,10 @@ class TagFileParser : public QXmlDefaultHandler
}
else
{
err
(
"Error
: Unexpected tag `base' found
\n
"
);
warn
(
"Warning
: Unexpected tag `base' found
\n
"
);
}
}
void
startIncludes
(
const
QXmlAttributes
&
attrib
)
{
if
(
m_state
==
InFile
&&
m_curFile
)
...
...
@@ -528,14 +567,16 @@ class TagFileParser : public QXmlDefaultHandler
}
else
{
err
(
"Error
: Unexpected tag `includes' found
\n
"
);
warn
(
"Warning
: Unexpected tag `includes' found
\n
"
);
}
m_curString
=
""
;
}
void
endIncludes
()
{
m_curIncludes
->
text
=
m_curString
;
}
void
endTemplateArg
()
{
if
(
m_state
==
InClass
&&
m_curClass
)
...
...
@@ -549,9 +590,10 @@ class TagFileParser : public QXmlDefaultHandler
}
else
{
err
(
"Error
: Unexpected tag `templarg' found
\n
"
);
warn
(
"Warning
: Unexpected tag `templarg' found
\n
"
);
}
}
void
endFilename
()
{
switch
(
m_state
)
...
...
@@ -563,18 +605,20 @@ class TagFileParser : public QXmlDefaultHandler
case
InPage
:
m_curPage
->
filename
=
m_curString
;
break
;
case
InPackage
:
m_curPackage
->
filename
=
m_curString
;
break
;
case
InDir
:
m_curDir
->
filename
=
m_curString
;
break
;
default
:
err
(
"Error
: Unexpected tag `filename' found
\n
"
);
break
;
default
:
warn
(
"Warning
: Unexpected tag `filename' found
\n
"
);
break
;
}
}
void
endPath
()
{
switch
(
m_state
)
{
case
InFile
:
m_curFile
->
path
=
m_curString
;
break
;
case
InDir
:
m_curDir
->
path
=
m_curString
;
break
;
default
:
err
(
"Error
: Unexpected tag `path' found
\n
"
);
break
;
default
:
warn
(
"Warning
: Unexpected tag `path' found
\n
"
);
break
;
}
}
void
endAnchor
()
{
if
(
m_state
==
InMember
)
...
...
@@ -583,9 +627,22 @@ class TagFileParser : public QXmlDefaultHandler
}
else
{
err
(
"Error: Unexpected tag `anchor' found
\n
"
);
warn
(
"Warning: Unexpected tag `anchor' found
\n
"
);
}
}
void
endAnchorFile
()
{
if
(
m_state
==
InMember
)
{
m_curMember
->
anchorFile
=
m_curString
;
}
else
{
warn
(
"Warning: Unexpected tag `anchorfile' found
\n
"
);
}
}
void
endArglist
()
{
if
(
m_state
==
InMember
)
...
...
@@ -594,7 +651,7 @@ class TagFileParser : public QXmlDefaultHandler
}
else
{
err
(
"Error
: Unexpected tag `arglist' found
\n
"
);
warn
(
"Warning
: Unexpected tag `arglist' found
\n
"
);
}
}
void
endTitle
()
...
...
@@ -603,9 +660,10 @@ class TagFileParser : public QXmlDefaultHandler
{
case
InGroup
:
m_curGroup
->
title
=
m_curString
;
break
;
case
InPage
:
m_curPage
->
title
=
m_curString
;
break
;
default
:
err
(
"Error
: Unexpected tag `title' found
\n
"
);
break
;
default
:
warn
(
"Warning
: Unexpected tag `title' found
\n
"
);
break
;
}
}
void
endSubgroup
()
{
if
(
m_state
==
InGroup
)
...
...
@@ -614,12 +672,14 @@ class TagFileParser : public QXmlDefaultHandler
}
else
{
err
(
"Error
: Unexpected tag `subgroup' found
\n
"
);
warn
(
"Warning
: Unexpected tag `subgroup' found
\n
"
);
}
}
void
startIgnoreElement
(
const
QXmlAttributes
&
)
{
}
void
endIgnoreElement
()
{
}
...
...
@@ -652,6 +712,7 @@ class TagFileParser : public QXmlDefaultHandler
m_startElementHandlers
.
insert
(
"filename"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startStringValue
));
m_startElementHandlers
.
insert
(
"includes"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startIncludes
));
m_startElementHandlers
.
insert
(
"path"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startStringValue
));
m_startElementHandlers
.
insert
(
"anchorfile"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startStringValue
));
m_startElementHandlers
.
insert
(
"anchor"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startStringValue
));
m_startElementHandlers
.
insert
(
"arglist"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startStringValue
));
m_startElementHandlers
.
insert
(
"title"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startStringValue
));
...
...
@@ -673,6 +734,7 @@ class TagFileParser : public QXmlDefaultHandler
m_endElementHandlers
.
insert
(
"filename"
,
new
EndElementHandler
(
this
,
&
TagFileParser
::
endFilename
));
m_endElementHandlers
.
insert
(
"includes"
,
new
EndElementHandler
(
this
,
&
TagFileParser
::
endIncludes
));
m_endElementHandlers
.
insert
(
"path"
,
new
EndElementHandler
(
this
,
&
TagFileParser
::
endPath
));
m_endElementHandlers
.
insert
(
"anchorfile"
,
new
EndElementHandler
(
this
,
&
TagFileParser
::
endAnchorFile
));
m_endElementHandlers
.
insert
(
"anchor"
,
new
EndElementHandler
(
this
,
&
TagFileParser
::
endAnchor
));
m_endElementHandlers
.
insert
(
"arglist"
,
new
EndElementHandler
(
this
,
&
TagFileParser
::
endArglist
));
m_endElementHandlers
.
insert
(
"title"
,
new
EndElementHandler
(
this
,
&
TagFileParser
::
endTitle
));
...
...
@@ -689,6 +751,7 @@ class TagFileParser : public QXmlDefaultHandler
return
TRUE
;
}
bool
startElement
(
const
QString
&
,
const
QString
&
,
const
QString
&
name
,
const
QXmlAttributes
&
attrib
)
{
...
...
@@ -700,10 +763,11 @@ class TagFileParser : public QXmlDefaultHandler
}
else
{
err
(
"Error
: Unknown tag `%s' found!
\n
"
,
name
.
data
());
warn
(
"Warning
: Unknown tag `%s' found!
\n
"
,
name
.
data
());
}
return
TRUE
;
}
bool
endElement
(
const
QString
&
,
const
QString
&
,
const
QString
&
name
)
{
//printf("endElement `%s'\n",name.data());
...
...
@@ -714,15 +778,17 @@ class TagFileParser : public QXmlDefaultHandler
}
else
{
err
(
"Error
: Unknown tag `%s' found!
\n
"
,
name
.
data
());
warn
(
"Warning
: Unknown tag `%s' found!
\n
"
,
name
.
data
());
}
return
TRUE
;
}
bool
characters
(
const
QString
&
ch
)
{
m_curString
+=
ch
;
return
TRUE
;
}
void
dump
();
void
buildLists
(
Entry
*
root
);
void
addIncludes
();
...
...
@@ -753,6 +819,8 @@ class TagFileParser : public QXmlDefaultHandler
QString
m_fileName
;
State
m_state
;
QStack
<
State
>
m_stateStack
;
QXmlLocator
*
m_locator
;
QString
m_inputFileName
;
};
/*! Error handler for the XML tag file parser.
...
...
@@ -971,7 +1039,7 @@ void TagFileParser::addDocAnchors(Entry *e,const TagAnchorInfoList &l)
}
else
{
err
(
"Duplicate anchor %s found
\n
"
,
ta
->
label
.
data
());
warn
(
"Duplicate anchor %s found
\n
"
,
ta
->
label
.
data
());
}
}
}
...
...
@@ -1004,6 +1072,7 @@ void TagFileParser::buildMemberList(Entry *ce,QList<TagMemberInfo> &members)
TagInfo
*
ti
=
new
TagInfo
;
ti
->
tagName
=
m_tagName
;
ti
->
anchor
=
tmi
->
anchor
;
ti
->
fileName
=
tmi
->
anchorFile
;
me
->
tagInfo
=
ti
;
if
(
tmi
->
kind
==
"define"
)
{
...
...
@@ -1315,6 +1384,7 @@ void parseTagFile(Entry *root,const char *fullName,const char *tagName)
QFileInfo
fi
(
fullName
);
if
(
!
fi
.
exists
())
return
;
TagFileParser
handler
(
tagName
);
handler
.
setFileName
(
fullName
);
TagFileErrorHandler
errorHandler
;
QFile
xmlFile
(
fullName
);
QXmlInputSource
source
(
xmlFile
);
...
...
src/translator.h
View file @
42eb3f9c
...
...
@@ -433,6 +433,12 @@ class Translator
virtual
QCString
trDirReference
(
const
char
*
dirName
)
=
0
;
virtual
QCString
trDir
(
bool
first_capital
,
bool
singular
)
=
0
;
//////////////////////////////////////////////////////////////////////////
// new since 1.4.1
//////////////////////////////////////////////////////////////////////////
virtual
QCString
trOverloadText
()
=
0
;
};
#endif
src/translator_adapter.h
View file @
42eb3f9c
...
...
@@ -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
:
virtual
QCString
updateNeededMessage
()
...
...
src/translator_br.h
View file @
42eb3f9c
...
...
@@ -34,7 +34,7 @@
#ifndef TRANSLATOR_BR_H
#define TRANSLATOR_BR_H
class
TranslatorBrazilian
:
public
Translator
class
TranslatorBrazilian
:
public
Translator
Adapter_1_4_1
{
public
:
...
...
src/translator_cn.h
View file @
42eb3f9c
...
...
@@ -24,7 +24,7 @@
*/
#define CN_SPC
class
TranslatorChinese
:
public
Translator
class
TranslatorChinese
:
public
Translator
Adapter_1_4_1
{
public
:
/*! Used for identification of the language. The identification
...
...
@@ -83,9 +83,6 @@ class TranslatorChinese : public Translator
virtual
QCString
trMemberEnumerationDocumentation
()
{
return
"成员枚举类型文档"
;
}
virtual
QCString
trEnumerationValueDocumentation
()
{
return
"成员枚举值文档"
;
}
/*! header that is put before the list of member function. */
virtual
QCString
trMemberFunctionDocumentation
()
{
return
"成员函数文档"
;
}
...
...
@@ -173,11 +170,6 @@ class TranslatorChinese : public Translator
virtual
QCString
trFileList
()
{
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. */
virtual
QCString
trCompoundMembers
()
{
...
...
@@ -286,9 +278,6 @@ class TranslatorChinese : public Translator
return
result
;
}
virtual
QCString
trHeaderFilesDescription
()
{
return
"这里列出组成API的头文件:"
;
}
virtual
QCString
trExamplesDescription
()
{
return
"这里列出所有示例:"
;
}
...
...
@@ -298,9 +287,6 @@ class TranslatorChinese : public Translator
virtual
QCString
trModulesDescription
()
{
return
"这里列出所有模块"
;
}
virtual
QCString
trNoDescriptionAvailable
()
{
return
"无可用文档"
;
}
virtual
QCString
trDocumentation
()
{
return
"文档"
;
}
...
...
@@ -422,16 +408,9 @@ class TranslatorChinese : public Translator
virtual
QCString
trForInternalUseOnly
()
{
return
"仅限内部使用。"
;
}
virtual
QCString
trReimplementedForInternalReasons
()
{
return
"由于内部原因被重载;但不影响API"
;
}
virtual
QCString
trWarning
()
{
return
"警告"
;
}
virtual
QCString
trBugsAndLimitations
()
{
return
"BUG"
CN_SPC
"与局限"
;
}
virtual
QCString
trVersion
()
{
return
"版本"
;
}
...
...
@@ -698,12 +677,7 @@ class TranslatorChinese : public Translator
// new since 0.49-991106
//////////////////////////////////////////////////////////////////////////
virtual
QCString
trSources
()
{
return
"源代码"
;
}
virtual
QCString
trDefinedAtLineInSourceFile
()
virtual
QCString
trDefinedAtLineInSourceFile
()
{
return
"在文件"
CN_SPC
"@1"
CN_SPC
"第"
CN_SPC
"@0"
CN_SPC
"行定义。"
;
}
...
...
@@ -1025,12 +999,6 @@ class TranslatorChinese : public Translator
// 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 */
virtual
QCString
trClasses
()
{
...
...
@@ -1068,12 +1036,6 @@ class TranslatorChinese : public Translator
return
"包"
;
}
/*! Used as a chapter title for Latex & RTF output */
virtual
QCString
trPackageDocumentation
()
{
return
"包的文档"
;
}
/*! Text shown before a multi-line define */
virtual
QCString
trDefineValue
()
{
...
...
@@ -1228,20 +1190,6 @@ class TranslatorChinese : public Translator
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
* be followed by a single name or by a list of names
* of the category.
...
...
@@ -1492,7 +1440,7 @@ class TranslatorChinese : public Translator
virtual
QCString
trDirIndex
()
/* { return "Directory Hierarchy"; } */
{
return
"
$(BL
\\
录结$(DC((B
"
;
return
"
目录结构
"
;
}
/*! This is used as the name of the chapter containing the documentation
...
...
@@ -1501,7 +1449,7 @@ class TranslatorChinese : public Translator
virtual
QCString
trDirDocumentation
()
/* { return "Directory Documentation"; } */
{
return
"
$(BL
\\
录J8[c(B
"
;
return
"
目录文档
"
;
}
/*! This is used as the title of the directory index and also in the
...
...
@@ -1510,7 +1458,7 @@ class TranslatorChinese : public Translator
virtual
QCString
trDirectories
()
/* { return "Directories"; } */
{
return
"
$(BL
\\
录(B
"
;
return
"
目录
"
;
}
/*! This returns a sentences that introduces the directory hierarchy.
...
...
@@ -1521,7 +1469,7 @@ class TranslatorChinese : public Translator
/* "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
...
...
@@ -1531,7 +1479,7 @@ class TranslatorChinese : public Translator
/* { QCString result=dirName; result+=" Directory Reference"; return result; } */
{
QCString
result
=
dirName
;
result
+=
CN_SPC
"
$(BL
\\
录;29M(B
"
;
result
+=
CN_SPC
"
目录参考
"
;
return
result
;
}
...
...
@@ -1543,9 +1491,10 @@ class TranslatorChinese : public Translator
/* QCString result((first_capital ? "Director" : "director")); */
/* if (singular) result+="y"; else result+="ies"; */
/* return result; */
return
"
$(BL
\\
录(B
"
;
return
"
目录
"
;
}
};
#endif
src/translator_cz.h
View file @
42eb3f9c
...
...
@@ -151,7 +151,7 @@
// Windows version. The version which does not call the function is
// probably slightly faster.
class
TranslatorCzech
:
public
Translator
class
TranslatorCzech
:
public
Translator
Adapter_1_4_1
{
private
:
/*! The decode() inline assumes the source written in the
...
...
src/translator_de.h
View file @
42eb3f9c
...
...
@@ -102,7 +102,7 @@
#ifndef TRANSLATOR_DE_H
#define TRANSLATOR_DE_H
class
TranslatorGerman
:
public
Translator
class
TranslatorGerman
:
public
Translator
Adapter_1_4_1
{
public
:
...
...
src/translator_en.h
View file @
42eb3f9c
...
...
@@ -1602,6 +1602,19 @@ class TranslatorEnglish : public Translator
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
src/translator_fr.h
View file @
42eb3f9c
...
...
@@ -85,7 +85,7 @@
// Translator class (by the local maintainer) when the localized
// translator is made up-to-date again.
class
TranslatorFrench
:
public
Translator
class
TranslatorFrench
:
public
Translator
Adapter_1_4_1
{
public
:
...
...
src/translator_hr.h
View file @
42eb3f9c
...
...
@@ -58,11 +58,15 @@
//
// 2004/09/15
// - Added strings for 1.3.9
//
// 2005/02/28
// - Removed obsolete (unused) methods
//
#ifndef TRANSLATOR_HR_H
#define TRANSLATOR_HR_H
class
TranslatorCroatian
:
public
Translator
class
TranslatorCroatian
:
public
Translator
Adapter_1_4_1
{
private
:
/*! to avoid macro redefinition from translator_cz.h */
...
...
@@ -104,10 +108,8 @@ class TranslatorCroatian : public Translator
{
return
decode
(
"Dokumentacija typedef lanova"
);
}
QCString
trMemberEnumerationDocumentation
()
{
return
decode
(
"Dokumentacija enumeracijskih lanova"
);
}
QCString
trEnumerationValueDocumentation
()
{
return
"Dokumentacija enumeracijskih vrijednosti"
;
}
QCString
trMemberFunctionDocumentation
()
{
return
"Dokumentacija funkcija"
;
}
{
return
"Dokumentacija funkcija"
;
}
QCString
trMemberDataDocumentation
()
{
return
"Documentacija varijabli"
;
}
QCString
trMore
()
...
...
@@ -149,8 +151,6 @@ class TranslatorCroatian : public Translator
}
QCString
trFileList
()
{
return
"Popis datoteka"
;
}
QCString
trHeaderFiles
()
{
return
"Header datoteke"
;
}
QCString
trCompoundMembers
()
{
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_FOR_C"
))
...
...
@@ -217,16 +217,12 @@ class TranslatorCroatian : public Translator
result
+=
"datoteke u kojima se nalaze:"
;
return
decode
(
result
);
}
QCString
trHeaderFilesDescription
()
{
return
decode
(
"Popis header datoteka koje ine API :"
);
}
QCString
trExamplesDescription
()
{
return
"Popis primjera :"
;
}
QCString
trRelatedPagesDescription
()
{
return
"Popis povezanih stranica:"
;
}
QCString
trModulesDescription
()
{
return
"Popis svih modula:"
;
}
QCString
trNoDescriptionAvailable
()
{
return
"Opis nije dostupan"
;
}
QCString
trDocumentation
()
{
return
"Dokumentacija"
;
}
...
...
@@ -314,14 +310,8 @@ class TranslatorCroatian : public Translator
}
QCString
trForInternalUseOnly
()
{
return
decode
(
"Iskljuivo za internu uporabu."
);
}
QCString
trReimplementedForInternalReasons
()
{
return
decode
(
"Reimplementirano zbog internih razloga; "
"Nema utjecaja na API."
);
}
QCString
trWarning
()
{
return
"Upozorenje"
;
}
QCString
trBugsAndLimitations
()
{
return
decode
(
"Greke i ogranienja"
);
}
QCString
trVersion
()
{
return
"Verzija"
;
}
QCString
trDate
()
...
...
@@ -563,10 +553,6 @@ class TranslatorCroatian : public Translator
// new since 0.49-991106
//////////////////////////////////////////////////////////////////////////
QCString
trSources
()
{
return
"Izvorne datoteke"
;
}
QCString
trDefinedAtLineInSourceFile
()
{
return
"Definirano u liniji @0 datoteke @1."
;
...
...
@@ -852,11 +838,6 @@ class TranslatorCroatian : public Translator
// 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 */
virtual
QCString
trClasses
()
{
...
...
@@ -882,11 +863,6 @@ class TranslatorCroatian : public Translator
{
return
"Paketi"
;
}
/*! Used as a chapter title for Latex & RTF output */
virtual
QCString
trPackageDocumentation
()
{
return
"Dokumentacija paketa"
;
}
/*! Text shown before a multi-line define */
virtual
QCString
trDefineValue
()
{
...
...
@@ -996,17 +972,6 @@ class TranslatorCroatian : public Translator
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
* be followed by a single name or by a list of names
* of the category.
...
...
src/translator_hu.h
View file @
42eb3f9c
...
...
@@ -29,7 +29,7 @@
#ifndef TRANSLATOR_HU_H
#define TRANSLATOR_HU_H
class
TranslatorHungarian
:
public
Translator
class
TranslatorHungarian
:
public
Translator
Adapter_1_4_1
{
private
:
const
char
*
zed
(
char
c
)
...
...
src/translator_it.h
View file @
42eb3f9c
...
...
@@ -72,7 +72,7 @@
#ifndef TRANSLATOR_IT_H
#define TRANSLATOR_IT_H
class
TranslatorItalian
:
public
Translator
class
TranslatorItalian
:
public
Translator
Adapter_1_4_1
{
public
:
...
...
src/translator_nl.h
View file @
42eb3f9c
...
...
@@ -1200,6 +1200,19 @@ class TranslatorDutch : public Translator
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."
;
}
};
...
...
src/translator_pl.h
View file @
42eb3f9c
...
...
@@ -20,7 +20,7 @@
#ifndef TRANSLATOR_PL_H
#define TRANSLATOR_PL_H
class
TranslatorPolish
:
public
Translator
class
TranslatorPolish
:
public
Translator
Adapter_1_4_1
{
private
:
/*! to avoid macro redefinition from translator_pl.h */
...
...
src/translator_ro.h
View file @
42eb3f9c
...
...
@@ -18,42 +18,44 @@
/* The translation from English to Romanian by Alexandru Iosup [aiosup@yahoo.com].
*
* Disclaimer: I hope I translated these to Romanian keeping
* the meaning of the sentences intact.
Keep in mind that
I used C-words were possible,
* (e.g. the
romanian for typedef is much unexpressive than the original), since we are
*
producing C-documentation of our projects
.
* the meaning of the sentences intact. I used C-words were possible,
* (e.g. the
Romanian "definire de tip" for "typedef" is too long and
*
unexpressive)
.
*
* If you have suggestions, please mail the comments and text proposals to the address
* shown aprox.10 lines above
*
* -------------------------------------------
* Project start : 20.Sep.2k
* Last Doxygen version covered : 1.
2.14
* Last revision : 0
7.Mar.2k2
* Last Doxygen version covered : 1.
4.1
* Last revision : 0
1.Mar.2k5
* -------------------------------------------
*
* Revision history
* ----------------
*
20.Sep.2k First version, covering Doxygen 1.2
.1
*
01.Mar.2k5 Third revision, covering Doxygen 1.4
.1
*
* 07.Mar.2k2 Second revision, covering Doxygen 1.2.14
* - fixed some bugs
*
* 20.Sep.2k First version, covering Doxygen 1.2.1
*
*/
#ifndef TRANSLATOR_RO_H
#define TRANSLATOR_RO_H
class
TranslatorRomanian
:
public
TranslatorAdapter_1_2_16
class
TranslatorRomanian
:
public
TranslatorAdapter_1_4_1
{
public
:
// --- Language control methods -------------------
/*! Used for identification of the language. May resemble
* the string returned by latexBabelPackage(), but it is not used
* for the same purpose. The identification should not be translated.
* It should be replaced by the name of the language in English
* (e.g. Czech, Japanese, Russian, etc.). It should be equal to
* the identification in language.h.
/*! Used for identification of the language. The identification
* should not be translated. It should be replaced by the name
* of the language in English using lower-case characters only
* (e.g. "czech", "japanese", "russian", etc.). It should be equal to
* the identification used in language.cpp.
*/
virtual
QCString
idLanguage
()
{
return
"romanian"
;
}
...
...
@@ -136,7 +138,7 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_16
/*! this is the first part of a sentence that is followed by a class name */
virtual
QCString
trThisIsTheListOfAllMembers
()
{
return
"
Aceasta este l
ista completã a membrilor din "
;
}
{
return
"
L
ista completã a membrilor din "
;
}
/*! this is the remainder of the sentence after the class name */
virtual
QCString
trIncludingInheritedMembers
()
...
...
@@ -247,7 +249,7 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_16
/*! This is an introduction to the list with all files. */
virtual
QCString
trFileListDescription
(
bool
extractAll
)
{
QCString
result
=
"
Aceasta este l
ista tuturor "
;
QCString
result
=
"
L
ista tuturor "
;
result
+=
"fiºierelor"
;
if
(
!
extractAll
)
result
+=
" documentate"
;
result
+=
", cu scurte descrieri:"
;
...
...
@@ -259,11 +261,11 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_16
{
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_FOR_C"
))
{
return
"
Acestea sunt structurile
de date, cu scurte descrieri:"
;
return
"
Lista structurilor
de date, cu scurte descrieri:"
;
}
else
{
return
"
Acestea sunt clasele, structurile, uniunile ºi interfeþe
le"
return
"
Lista claselor, structurilor, uniunilor ºi interfeþel
or"
", cu scurte descrieri:"
;
}
...
...
@@ -272,7 +274,7 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_16
/*! This is an introduction to the page with all class members. */
virtual
QCString
trCompoundMembersDescription
(
bool
extractAll
)
{
QCString
result
=
"
Aceasta este l
ista tuturor "
;
QCString
result
=
"
L
ista tuturor "
;
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_FOR_C"
))
{
...
...
@@ -316,7 +318,7 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_16
/*! This is an introduction to the page with all file members. */
virtual
QCString
trFileMembersDescription
(
bool
extractAll
)
{
QCString
result
=
"
Aceasta este l
ista tuturor "
;
QCString
result
=
"
L
ista tuturor "
;
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_FOR_C"
))
{
result
+=
"funcþiilor, variabilelor, define-urilor, enum-urilor ºi typedef-urilor"
;
...
...
@@ -339,19 +341,19 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_16
/*! This is an introduction to the page with the list of all header files. */
virtual
QCString
trHeaderFilesDescription
()
{
return
"
Aceastea sunt
fiºierele Header care fac parte din API:"
;
}
{
return
"
Lista
fiºierele Header care fac parte din API:"
;
}
/*! This is an introduction to the page with the list of all examples */
virtual
QCString
trExamplesDescription
()
{
return
"
Aceasta este l
ista tuturor exemplelor:"
;
}
{
return
"
L
ista tuturor exemplelor:"
;
}
/*! This is an introduction to the page with the list of related pages */
virtual
QCString
trRelatedPagesDescription
()
{
return
"
Aceasta este l
ista tuturor documentaþiilor înrudite:"
;
}
{
return
"
L
ista tuturor documentaþiilor înrudite:"
;
}
/*! This is an introduction to the page with the list of class/file groups */
virtual
QCString
trModulesDescription
()
{
return
"
Aceasta este l
ista tuturor modulelor:"
;
}
{
return
"
L
ista tuturor modulelor:"
;
}
/*! This sentences is used in the annotated class/file lists if no brief
* description is given.
...
...
@@ -389,7 +391,7 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_16
}
else
{
return
"Indexul C
omponenþ
ilor"
;
return
"Indexul C
lase
lor"
;
}
}
...
...
@@ -620,7 +622,7 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_16
/*! used as an introduction to the namespace list */
virtual
QCString
trNamespaceListDescription
(
bool
extractAll
)
{
QCString
result
=
"
Aceasta este l
ista tuturor "
;
QCString
result
=
"
L
ista tuturor "
;
result
+=
"namespace-urilor "
;
if
(
!
extractAll
)
result
+=
"documentate "
;
result
+=
", cu scurte descrieri:"
;
...
...
@@ -689,7 +691,7 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_16
virtual
QCString
trPublicMembers
()
{
return
"Metode Publice"
;
}
virtual
QCString
trPublicSlots
()
{
return
"
Sloturi Publice
"
;
}
{
return
"
Conectori (slots) Publici
"
;
}
virtual
QCString
trSignals
()
{
return
"Semnale"
;
}
virtual
QCString
trStaticPublicMembers
()
...
...
@@ -703,7 +705,7 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_16
virtual
QCString
trPrivateMembers
()
{
return
"Metode Private"
;
}
virtual
QCString
trPrivateSlots
()
{
return
"
Sloturi Private
"
;
}
{
return
"
Conectori (slots) Privaþ
i"
;
}
virtual
QCString
trStaticPrivateMembers
()
{
return
"Metode Statice Private"
;
}
...
...
@@ -771,7 +773,7 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_16
/*! This is an introduction to the page with all namespace members */
virtual
QCString
trNamespaceMemberDescription
(
bool
extractAll
)
{
QCString
result
=
"
Aceasta este l
ista tuturor membrilor "
;
QCString
result
=
"
L
ista tuturor membrilor "
;
if
(
!
extractAll
)
result
+=
"documentaþi "
;
result
+=
"din toate namespace-urile, cu legãturi cãtre "
;
...
...
@@ -962,7 +964,7 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_16
}
virtual
QCString
trPublicTypes
()
{
return
"Tipuri
p
ublice"
;
return
"Tipuri
P
ublice"
;
}
virtual
QCString
trPublicAttribs
()
{
...
...
@@ -1017,7 +1019,7 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_16
/*! Used as the header of the todo list */
virtual
QCString
trTodoList
()
{
return
"Lista lucrurilor
rãmase
de fãcut"
;
return
"Lista lucrurilor de fãcut"
;
}
//////////////////////////////////////////////////////////////////////////
...
...
@@ -1192,7 +1194,7 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_16
/*! The description of the package index page */
virtual
QCString
trPackageListDescription
()
{
return
"
Acestea sunt pachetele, însoþite, acolo unde este cazul, de scurte descrie
ri:"
;
return
"
Lista pachetelor, însoþitã de scurte explicaþii, acolo unde acestea e
xistã:"
;
}
/*! The link name in the Quick links header for each page */
virtual
QCString
trPackages
()
...
...
@@ -1217,12 +1219,12 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_16
/*! Used as a marker that is put before a \\bug item */
virtual
QCString
trBug
()
{
return
"
Bug
"
;
return
"
Problema (Bug)
"
;
}
/*! Used as the header of the bug list */
virtual
QCString
trBugList
()
{
return
"Lista de
Buguri
"
;
return
"Lista de
Probleme (Bugs)
"
;
}
//////////////////////////////////////////////////////////////////////////
...
...
@@ -1406,6 +1408,214 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_16
return
"Implementat în "
+
trWriteList
(
numEntries
)
+
"."
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.16
//////////////////////////////////////////////////////////////////////////
/*! used in RTF documentation as a heading for the Table
* of Contents.
*/
virtual
QCString
trRTFTableOfContents
()
{
return
"Conþinut"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.17
//////////////////////////////////////////////////////////////////////////
/*! Used as the header of the list of item that have been
* flagged deprecated
*/
virtual
QCString
trDeprecatedList
()
{
return
"Lista elementelor învechite (deprecated)"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.18
//////////////////////////////////////////////////////////////////////////
/*! Used as a header for declaration section of the events found in
* a C# program
*/
virtual
QCString
trEvents
()
{
return
"Evenimente"
;
}
/*! Header used for the documentation section of a class' events. */
virtual
QCString
trEventDocumentation
()
{
return
"Documentaþia aferentã evenimentelor"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3
//////////////////////////////////////////////////////////////////////////
/*! Used as a heading for a list of Java class types with package scope.
*/
virtual
QCString
trPackageTypes
()
{
return
"Tipuri în pachet"
;
}
/*! Used as a heading for a list of Java class functions with package
* scope.
*/
virtual
QCString
trPackageMembers
()
{
return
"Funcþii în pachet"
;
}
/*! Used as a heading for a list of static Java class functions with
* package scope.
*/
virtual
QCString
trStaticPackageMembers
()
{
return
"Funcþii statice în pachet"
;
}
/*! Used as a heading for a list of Java class variables with package
* scope.
*/
virtual
QCString
trPackageAttribs
()
{
return
"Atribute în pachet"
;
}
/*! Used as a heading for a list of static Java class variables with
* package scope.
*/
virtual
QCString
trStaticPackageAttribs
()
{
return
"Atribute statice în pachet"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.1
//////////////////////////////////////////////////////////////////////////
/*! Used in the quick index of a class/file/namespace member list page
* to link to the unfiltered list of all members.
*/
virtual
QCString
trAll
()
{
return
"Toate"
;
}
/*! Put in front of the call graph for a function. */
virtual
QCString
trCallGraph
()
{
return
"Graful de apel al acestei funcþii:"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.3
//////////////////////////////////////////////////////////////////////////
/*! When the search engine is enabled this text is put in the header
* of each page before the field where one can enter the text to search
* for.
*/
virtual
QCString
trSearchForIndex
()
{
return
"Cautã"
;
}
/*! This string is used as the title for the page listing the search
* results.
*/
virtual
QCString
trSearchResultsTitle
()
{
return
"Rezultatele cãutarii"
;
}
/*! This string is put just before listing the search results. The
* text can be different depending on the number of documents found.
* Inside the text you can put the special marker $num to insert
* the number representing the actual number of search results.
* The @a numDocuments parameter can be either 0, 1 or 2, where the
* value 2 represents 2 or more matches. HTML markup is allowed inside
* the returned string.
*/
virtual
QCString
trSearchResults
(
int
numDocuments
)
{
if
(
numDocuments
==
0
)
{
return
"Din pacate nu am gãsit nici un document care sã corespundã cererii."
;
}
else
if
(
numDocuments
==
1
)
{
return
"Am gãsit <b>1</b> document corespunzând cererii."
;
}
else
{
return
"Am gãsit <b>$num</b> documente corespunzând cererii. "
"Lista documentelor gãsite, sortate dupã relevanþã."
;
}
}
/*! This string is put before the list of matched words, for each search
* result. What follows is the list of words that matched the query.
*/
virtual
QCString
trSearchMatches
()
{
return
"Gãsite:"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.8
//////////////////////////////////////////////////////////////////////////
/*! This is used in HTML as the title of page with source code for file filename
*/
virtual
QCString
trSourceFile
(
QCString
&
filename
)
{
return
" Fiºierul sursã "
+
filename
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.9
//////////////////////////////////////////////////////////////////////////
/*! This is used as the name of the chapter containing the directory
* hierarchy.
*/
virtual
QCString
trDirIndex
()
{
return
"Ierarhia directoarelor"
;
}
/*! This is used as the name of the chapter containing the documentation
* of the directories.
*/
virtual
QCString
trDirDocumentation
()
{
return
"Documentaþia directoarelor"
;
}
/*! This is used as the title of the directory index and also in the
* Quick links of a HTML page, to link to the directory hierarchy.
*/
virtual
QCString
trDirectories
()
{
return
"Directoare"
;
}
/*! This returns a sentences that introduces the directory hierarchy.
* and the fact that it is sorted alphabetically per level
*/
virtual
QCString
trDirDescription
()
{
return
"Aceastã ierarhie de directoare este sortatã, "
"per nivel, in ordine alfabeticã:"
;
}
/*! This returns the title of a directory page. The name of the
* directory is passed via \a dirName.
*/
virtual
QCString
trDirReference
(
const
char
*
dirName
)
{
QCString
result
=
"Director-referinþã "
;
result
+=
dirName
;
return
result
;
}
/*! This returns the word directory with or without starting capital
* (\a first_capital) and in sigular or plural form (\a singular).
*/
virtual
QCString
trDir
(
bool
first_capital
,
bool
singular
)
{
QCString
result
((
first_capital
?
"Directo"
:
"directo"
));
if
(
singular
)
result
+=
"r"
;
else
result
=
"are"
;
return
result
;
}
};
#endif
src/translator_ru.h
View file @
42eb3f9c
...
...
@@ -49,7 +49,7 @@
#ifndef TRANSLATOR_RU_H
#define TRANSLATOR_RU_H
class
TranslatorRussian
:
public
Translator
class
TranslatorRussian
:
public
Translator
Adapter_1_4_1
{
private
:
/*! The Decode() inline assumes the source written in the
...
...
src/translator_se.h
View file @
42eb3f9c
...
...
@@ -69,7 +69,7 @@ Problem!
#ifndef TRANSLATOR_SE_H
#define TRANSLATOR_SE_H
class
TranslatorSwedish
:
public
Translator
class
TranslatorSwedish
:
public
Translator
Adapter_1_4_1
{
public
:
...
...
src/translator_sr.h
View file @
42eb3f9c
...
...
@@ -21,7 +21,7 @@
// translation by Dejan D. M. Milosavljevic <dmilos@email.com>;<dmilosx@ptt.yu>;<office@ddmrm.com>
// // 10x 2 Ivana Miletic for gramatical consutation.
class
TranslatorSerbian
:
public
Translator
class
TranslatorSerbian
:
public
Translator
Adapter_1_4_1
{
private
:
QCString
decode
(
const
QCString
&
sInput
)
...
...
src/translator_ua.h
View file @
42eb3f9c
...
...
@@ -20,7 +20,7 @@
#ifndef TRANSLATOR_UA_H
#define TRANSLATOR_UA_H
class
TranslatorUkrainian
:
public
Translator
class
TranslatorUkrainian
:
public
TranslatorAdapter_1_4_1
{
private
:
/*! The Decode() inline assumes the source written in the
...
...
src/util.cpp
View file @
42eb3f9c
...
...
@@ -752,6 +752,8 @@ static Definition *followPath(Definition *start,FileDef *fileScope,const QCStrin
if
(
current
==
0
)
break
;
// failed to follow the path
ps
=
is
+
l
;
}
//printf("followPath(start=%s,path=%s) result=%s\n",
// start->name().data(),path.data(),current?current->name().data():"<null>");
return
current
;
// path could be followed
}
...
...
@@ -1101,7 +1103,7 @@ ClassDef *getResolvedClassRec(Definition *scope,
g_visitedNamespaces
.
clear
();
// test accessibility of definition within scope.
int
distance
=
isAccessibleFromWithExpScope
(
scope
,
fileScope
,
d
,
explicitScopePart
);
//printf("distance %s is %d\n",d->name().data(),distance);
//printf("
distance %s is %d\n",d->name().data(),distance);
if
(
distance
!=-
1
)
// definition is accessible
{
// see if we are dealing with a class or a typedef
...
...
@@ -1398,7 +1400,9 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,
int
floatingIndex
=
0
;
if
(
strLen
==
0
)
return
;
// read a word from the text string
while
((
newIndex
=
regExp
.
match
(
txtStr
,
index
,
&
matchLen
))
!=-
1
)
while
((
newIndex
=
regExp
.
match
(
txtStr
,
index
,
&
matchLen
))
!=-
1
&&
(
newIndex
==
0
||
!
(
txtStr
.
at
(
newIndex
-
1
)
>=
'0'
&&
txtStr
.
at
(
newIndex
-
1
)
<=
'9'
))
// avoid matching part of hex numbers
)
{
// add non-word part to the result
floatingIndex
+=
newIndex
-
skipIndex
;
...
...
@@ -2979,7 +2983,6 @@ bool getDefs(const QCString &scName,const QCString &memberName,
//printf("mScope=`%s' mName=`%s'\n",mScope.data(),mName.data());
if
(
mName
.
isEmpty
())
printf
(
"memberName=%s
\n
"
,
memberName
.
data
());
MemberName
*
mn
=
Doxygen
::
memberNameSDict
[
mName
];
if
(
!
forceEmptyScope
&&
mn
&&
!
(
scopeName
.
isEmpty
()
&&
mScope
.
isEmpty
()))
{
...
...
@@ -3016,8 +3019,8 @@ bool getDefs(const QCString &scName,const QCString &memberName,
}
for
(
mmli
.
toFirst
();(
mmd
=
mmli
.
current
());
++
mmli
)
{
if
(
mmd
->
isLinkable
())
{
//
if (mmd->isLinkable())
//
{
bool
match
=
args
==
0
||
matchArguments
(
mmd
->
argumentList
(),
argList
,
className
,
0
,
checkCV
);
//printf("match=%d\n",match);
...
...
@@ -3032,7 +3035,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
md
=
mmd
;
}
}
}
//
}
}
if
(
argList
)
{
...
...
@@ -3044,27 +3047,36 @@ bool getDefs(const QCString &scName,const QCString &memberName,
//printf(" >Searching for arbitrary member\n");
for
(
mmli
.
toFirst
();(
mmd
=
mmli
.
current
());
++
mmli
)
{
if
(
mmd
->
isLinkable
())
{
//
if (mmd->isLinkable())
//
{
ClassDef
*
mcd
=
mmd
->
getClassDef
();
//printf(" >Class %s found\n",mcd->name().data());
int
m
=
minClassDistance
(
fcd
,
mcd
);
if
(
m
<
mdist
&&
mcd
->
isLinkable
()
)
if
(
m
<
mdist
/* && mcd->isLinkable()*/
)
{
//printf("Class distance %d\n",m);
mdist
=
m
;
cd
=
mcd
;
md
=
mmd
;
}
}
//
}
}
}
//printf(" >Succes=%d\n",mdist<maxInheritanceDepth);
if
(
mdist
<
maxInheritanceDepth
)
{
gd
=
md
->
getGroupDef
();
if
(
gd
)
cd
=
0
;
return
TRUE
;
/* found match */
if
(
!
md
->
isLinkable
())
{
md
=
0
;
// avoid returning things we cannot link to
cd
=
0
;
return
FALSE
;
// match found, but was not linkable
}
else
{
gd
=
md
->
getGroupDef
();
if
(
gd
)
cd
=
0
;
return
TRUE
;
/* found match */
}
}
}
/* go to the parent scope */
...
...
@@ -3115,7 +3127,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
{
//printf("mmd->getNamespaceDef()=%p fnd=%p\n",
// mmd->getNamespaceDef(),fnd);
if
(
mmd
->
getNamespaceDef
()
==
fnd
&&
mmd
->
isLinkable
()
)
if
(
mmd
->
getNamespaceDef
()
==
fnd
/* && mmd->isLinkable() */
)
{
// namespace is found
bool
match
=
TRUE
;
ArgumentList
*
argList
=
0
;
...
...
@@ -3144,7 +3156,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
{
for
(
mmli
.
toFirst
();((
mmd
=
mmli
.
current
())
&&
!
found
);
++
mmli
)
{
if
(
mmd
->
getNamespaceDef
()
==
fnd
&&
mmd
->
isLinkable
()
)
if
(
mmd
->
getNamespaceDef
()
==
fnd
/*&& mmd->isLinkable() */
)
{
nd
=
fnd
;
md
=
mmd
;
...
...
@@ -3154,9 +3166,18 @@ bool getDefs(const QCString &scName,const QCString &memberName,
}
if
(
found
)
{
gd
=
md
->
getGroupDef
();
if
(
gd
&&
gd
->
isLinkable
())
nd
=
0
;
else
gd
=
0
;
return
TRUE
;
if
(
!
md
->
isLinkable
())
{
md
=
0
;
// avoid returning things we cannot link to
nd
=
0
;
return
FALSE
;
// match found but not linkable
}
else
{
gd
=
md
->
getGroupDef
();
if
(
gd
&&
gd
->
isLinkable
())
nd
=
0
;
else
gd
=
0
;
return
TRUE
;
}
}
}
if
(
scopeOffset
==
0
)
...
...
@@ -3168,100 +3189,101 @@ bool getDefs(const QCString &scName,const QCString &memberName,
scopeOffset
=
0
;
}
}
while
(
scopeOffset
>=
0
);
//else // no scope => global function
//else // no scope => global function
{
QList
<
MemberDef
>
members
;
//printf(" Function with global scope name `%s' args=`%s'\n",memberName.data(),args);
MemberListIterator
mli
(
*
mn
);
for
(
mli
.
toFirst
();(
md
=
mli
.
current
());
++
mli
)
{
QList
<
MemberDef
>
members
;
//printf(" Function with global scope name `%s' args=`%s'\n",memberName.data(),args);
MemberListIterator
mli
(
*
mn
);
for
(
mli
.
toFirst
();(
md
=
mli
.
current
());
++
mli
)
{
if
(
md
->
isLinkable
())
//if (md->isLinkable())
//{
fd
=
md
->
getFileDef
();
gd
=
md
->
getGroupDef
();
//printf(" md->name()=`%s' md->args=`%s' fd=%p gd=%p\n",
// md->name().data(),args,fd,gd);
if
(
(
gd
&&
gd
->
isLinkable
())
||
(
fd
&&
fd
->
isLinkable
())
)
{
fd
=
md
->
getFileDef
();
gd
=
md
->
getGroupDef
();
//printf(" md->name()=`%s' md->args=`%s' fd=%p gd=%p\n",
// md->name().data(),args,fd,gd);
if
(
(
gd
&&
gd
->
isLinkable
())
||
(
fd
&&
fd
->
isLinkable
())
)
//printf(" fd=%p gd=%p args=`%s'\n",fd,gd,args);
bool
match
=
TRUE
;
ArgumentList
*
argList
=
0
;
if
(
args
&&
!
md
->
isDefine
()
&&
strcmp
(
args
,
"()"
)
!=
0
)
{
//printf(" fd=%p gd=%p args=`%s'\n",fd,gd,args);
bool
match
=
TRUE
;
ArgumentList
*
argList
=
0
;
if
(
args
&&
!
md
->
isDefine
()
&&
strcmp
(
args
,
"()"
)
!=
0
)
{
argList
=
new
ArgumentList
;
stringToArgumentList
(
args
,
argList
);
match
=
matchArguments
(
md
->
argumentList
(),
argList
,
0
,
0
,
checkCV
);
delete
argList
;
argList
=
0
;
}
if
(
match
)
{
//printf("Found match!\n");
members
.
append
(
md
);
}
argList
=
new
ArgumentList
;
stringToArgumentList
(
args
,
argList
);
match
=
matchArguments
(
md
->
argumentList
(),
argList
,
0
,
0
,
checkCV
);
delete
argList
;
argList
=
0
;
}
}
}
if
(
members
.
count
()
!=
1
&&
args
&&
!
strcmp
(
args
,
"()"
))
{
// no exact match found, but if args="()" an arbitrary
// member will do
md
=
mn
->
last
();
while
(
md
&&
md
->
isLinkable
())
{
//printf("Found member `%s'\n",md->name().data());
//printf("member is linkable md->name()=`%s'\n",md->name().data());
fd
=
md
->
getFileDef
();
gd
=
md
->
getGroupDef
();
if
(
(
gd
&&
gd
->
isLinkable
())
||
(
fd
&&
fd
->
isLinkable
())
)
if
(
match
)
{
//printf("Found match!\n");
members
.
append
(
md
);
}
md
=
mn
->
prev
();
}
//}
}
if
(
members
.
count
()
!=
1
&&
args
&&
!
strcmp
(
args
,
"()"
))
{
// no exact match found, but if args="()" an arbitrary
// member will do
md
=
mn
->
last
();
while
(
md
/* && md->isLinkable()*/
)
{
//printf("Found member `%s'\n",md->name().data());
//printf("member is linkable md->name()=`%s'\n",md->name().data());
fd
=
md
->
getFileDef
();
gd
=
md
->
getGroupDef
();
if
(
(
gd
&&
gd
->
isLinkable
())
||
(
fd
&&
fd
->
isLinkable
())
)
{
members
.
append
(
md
);
}
md
=
mn
->
prev
();
}
//printf("found %d candidate members\n",members.count());
if
(
members
.
count
()
==
1
||
currentFile
!=
0
)
}
//printf("found %d candidate members\n",members.count());
if
(
members
.
count
()
==
1
||
currentFile
!=
0
)
{
md
=
members
.
first
();
}
else
if
(
members
.
count
()
>
1
)
{
//printf("Found more than one matching member!\n");
// use some C scoping rules to determine the correct link
// 1. member in current file
// 2. non-static member in different file
if
(
currentFile
==
0
)
{
md
=
members
.
first
();
bool
ambig
;
currentFile
=
findFileDef
(
Doxygen
::
inputNameDict
,
0
/*namespaceName*/
,
ambig
);
}
else
if
(
members
.
count
()
>
1
)
MemberDef
*
bmd
=
0
;
for
(
md
=
members
.
first
();
md
;
md
=
members
.
next
())
{
//printf("Found more than one matching member!\n");
// use some C scoping rules to determine the correct link
// 1. member in current file
// 2. non-static member in different file
if
(
currentFile
==
0
)
{
bool
ambig
;
currentFile
=
findFileDef
(
Doxygen
::
inputNameDict
,
0
/*namespaceName*/
,
ambig
);
}
MemberDef
*
bmd
=
0
;
for
(
md
=
members
.
first
();
md
;
md
=
members
.
next
())
if
(
md
->
getFileDef
()
==
currentFile
)
{
if
(
md
->
getFileDef
()
==
currentFile
)
{
bmd
=
0
;
break
;
}
if
(
!
(
md
->
isStatic
())
||
Config_getBool
(
"EXTRACT_STATIC"
))
bmd
=
md
;
bmd
=
0
;
break
;
}
if
(
bmd
)
md
=
bmd
;
}
if
(
md
&&
!
md
->
isLinkable
())
md
=
0
;
// ignore things we cannot link to
if
(
md
)
// found a matching global member
{
fd
=
md
->
getFileDef
();
gd
=
md
->
getGroupDef
();
//printf("fd=%p gd=%p gd->isLinkable()=%d\n",fd,gd,gd->isLinkable());
if
(
gd
&&
gd
->
isLinkable
())
fd
=
0
;
else
gd
=
0
;
return
TRUE
;
if
(
!
(
md
->
isStatic
())
||
Config_getBool
(
"EXTRACT_STATIC"
))
bmd
=
md
;
}
if
(
bmd
)
md
=
bmd
;
}
if
(
md
&&
!
md
->
isLinkable
())
md
=
0
;
// ignore things we cannot link to
if
(
md
)
// found a matching global member
{
fd
=
md
->
getFileDef
();
gd
=
md
->
getGroupDef
();
//printf("fd=%p gd=%p gd->isLinkable()=%d\n",fd,gd,gd->isLinkable());
if
(
gd
&&
gd
->
isLinkable
())
fd
=
0
;
else
gd
=
0
;
return
TRUE
;
}
}
}
// no nothing found
...
...
@@ -4234,9 +4256,10 @@ QCString convertToHtml(const char *s)
*/
const
char
*
getOverloadDocs
()
{
return
"This is an overloaded member function, "
"provided for convenience. It differs from the above "
"function only in what argument(s) it accepts."
;
return
theTranslator
->
trOverloadText
();
//"This is an overloaded member function, "
// "provided for convenience. It differs from the above "
// "function only in what argument(s) it accepts.";
}
void
addMembersToMemberGroup
(
MemberList
*
ml
,
...
...
@@ -5216,3 +5239,37 @@ QCString stripPath(const char *s)
}
return
result
;
}
/** returns \c TRUE iff string \a s contains word \a w */
bool
containsWord
(
const
QCString
&
s
,
const
QCString
&
word
)
{
static
QRegExp
wordExp
(
"[a-z_A-Z]+"
);
int
p
=
0
,
i
,
l
;
while
((
i
=
wordExp
.
match
(
s
,
p
,
&
l
))
!=-
1
)
{
if
(
s
.
mid
(
i
,
l
)
==
word
)
return
TRUE
;
p
=
i
+
l
;
}
return
FALSE
;
}
bool
findAndRemoveWord
(
QCString
&
s
,
const
QCString
&
word
)
{
static
QRegExp
wordExp
(
"[a-z_A-Z]+"
);
int
p
=
0
,
i
,
l
;
while
((
i
=
wordExp
.
match
(
s
,
p
,
&
l
))
!=-
1
)
{
if
(
s
.
mid
(
i
,
l
)
==
word
)
{
if
(
i
>
0
&&
isspace
(
s
.
at
(
i
-
1
)))
i
--
,
l
++
;
else
if
(
i
+
l
<
(
int
)
s
.
length
()
&&
isspace
(
s
.
at
(
i
+
l
)))
l
++
;
s
=
s
.
left
(
i
)
+
s
.
mid
(
i
+
l
);
// remove word + spacing
return
TRUE
;
}
p
=
i
+
l
;
}
return
FALSE
;
}
src/util.h
View file @
42eb3f9c
...
...
@@ -228,6 +228,8 @@ QCString relativePathToRoot(const char *name);
#define REL_PATH_TO_ROOT "../../"
void
createSubDirs
(
QDir
&
d
);
QCString
stripPath
(
const
char
*
s
);
bool
containsWord
(
const
QCString
&
s
,
const
QCString
&
word
);
bool
findAndRemoveWord
(
QCString
&
s
,
const
QCString
&
word
);
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment