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
1042ef3a
Commit
1042ef3a
authored
Oct 04, 2009
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.6.1-20091004
parent
ab254316
Changes
38
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
38 changed files
with
1118 additions
and
981 deletions
+1118
-981
INSTALL
INSTALL
+2
-2
README
README
+2
-2
doxywizard.cpp
addon/doxywizard/doxywizard.cpp
+9
-2
configure
configure
+1
-1
config.doc
doc/config.doc
+17
-21
language.doc
doc/language.doc
+5
-5
translator.py
doc/translator.py
+37
-10
translator_report.txt
doc/translator_report.txt
+108
-145
bufstr.h
src/bufstr.h
+4
-0
classdef.cpp
src/classdef.cpp
+3
-1
config.l
src/config.l
+0
-20
config.xml
src/config.xml
+5
-2
configoptions.cpp
src/configoptions.cpp
+6
-3
definition.cpp
src/definition.cpp
+3
-2
dirdef.cpp
src/dirdef.cpp
+4
-1
dot.cpp
src/dot.cpp
+255
-264
dot.h
src/dot.h
+4
-0
doxygen.cpp
src/doxygen.cpp
+53
-133
filedef.cpp
src/filedef.cpp
+3
-1
formula.cpp
src/formula.cpp
+3
-3
groupdef.cpp
src/groupdef.cpp
+3
-1
htmlgen.cpp
src/htmlgen.cpp
+1
-1
latexgen.cpp
src/latexgen.cpp
+27
-26
libdoxycfg.t
src/libdoxycfg.t
+3
-0
memberdef.cpp
src/memberdef.cpp
+15
-5
membergroup.cpp
src/membergroup.cpp
+6
-2
namespacedef.cpp
src/namespacedef.cpp
+3
-1
pagedef.cpp
src/pagedef.cpp
+1
-4
pre.h
src/pre.h
+1
-2
pre.l
src/pre.l
+68
-22
scanner.l
src/scanner.l
+7
-2
translator_cz.h
src/translator_cz.h
+2
-3
translator_fr.h
src/translator_fr.h
+41
-6
translator_pl.h
src/translator_pl.h
+233
-216
util.cpp
src/util.cpp
+155
-29
util.h
src/util.h
+6
-1
vhdldocgen.cpp
src/vhdldocgen.cpp
+21
-41
vhdldocgen.h
src/vhdldocgen.h
+1
-1
No files found.
INSTALL
View file @
1042ef3a
DOXYGEN Version 1.6.1
DOXYGEN Version 1.6.1
-20091004
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (
25 August
2009)
Dimitri van Heesch (
04 October
2009)
README
View file @
1042ef3a
DOXYGEN Version 1.6.1
DOXYGEN Version 1.6.1
_20091004
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) (
25 August
2009)
Dimitri van Heesch (dimitri@stack.nl) (
04 October
2009)
addon/doxywizard/doxywizard.cpp
View file @
1042ef3a
...
...
@@ -185,7 +185,7 @@ void MainWindow::about()
t
<<
QString
::
fromAscii
(
"<qt><center>A tool to configure and run doxygen version "
)
+
QString
::
fromAscii
(
versionString
)
+
QString
::
fromAscii
(
" on your source files.</center><p><br>"
"<center>Written by<br> Dimitri van Heesch<br>© 2000-200
8
</center><p>"
"<center>Written by<br> Dimitri van Heesch<br>© 2000-200
9
</center><p>"
"</qt>"
);
QMessageBox
::
about
(
this
,
tr
(
"Doxygen GUI"
),
msg
);
}
...
...
@@ -230,7 +230,14 @@ void MainWindow::saveConfig(const QString &fileName)
{
if
(
fileName
.
isEmpty
())
return
;
QFile
f
(
fileName
);
if
(
!
f
.
open
(
QIODevice
::
WriteOnly
))
return
;
if
(
!
f
.
open
(
QIODevice
::
WriteOnly
))
{
QMessageBox
::
warning
(
this
,
tr
(
"Error saving"
),
tr
(
"Error: cannot open the file "
)
+
fileName
+
tr
(
" for writing!
\n
"
)
+
tr
(
"Reason given: "
)
+
f
.
error
());
return
;
}
QTextStream
t
(
&
f
);
m_expert
->
writeConfig
(
t
,
false
);
updateConfigFileName
(
fileName
);
...
...
configure
View file @
1042ef3a
...
...
@@ -20,7 +20,7 @@ doxygen_version_minor=6
doxygen_version_revision
=
1
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn
=
NO
doxygen_version_mmn
=
20091004
bin_dirs
=
`
echo
$PATH
|
sed
-e
"s/:/ /g"
`
...
...
doc/config.doc
View file @
1042ef3a
...
...
@@ -61,8 +61,8 @@ followed by the descriptions of the tags grouped by category.
\
refitem
cfg_alphabetical_index
ALPHABETICAL_INDEX
\
refitem
cfg_always_detailed_sec
ALWAYS_DETAILED_SEC
\
refitem
cfg_binary_toc
BINARY_TOC
\
refitem
cfg_builtin_stl_support
BUILTIN_STL_SUPPORT
\
refitem
cfg_brief_member_desc
BRIEF_MEMBER_DESC
\
refitem
cfg_builtin_stl_support
BUILTIN_STL_SUPPORT
\
refitem
cfg_call_graph
CALL_GRAPH
\
refitem
cfg_caller_graph
CALLER_GRAPH
\
refitem
cfg_case_sense_names
CASE_SENSE_NAMES
...
...
@@ -80,6 +80,7 @@ followed by the descriptions of the tags grouped by category.
\
refitem
cfg_distribute_group_doc
DISTRIBUTE_GROUP_DOC
\
refitem
cfg_docset_bundle_id
DOCSET_BUNDLE_ID
\
refitem
cfg_docset_feedname
DOCSET_FEEDNAME
\
refitem
cfg_dot_cleanup
DOT_CLEANUP
\
refitem
cfg_dot_fontname
DOT_FONTNAME
\
refitem
cfg_dot_fontpath
DOT_FONTPATH
\
refitem
cfg_dot_fontsize
DOT_FONTSIZE
...
...
@@ -91,8 +92,8 @@ followed by the descriptions of the tags grouped by category.
\
refitem
cfg_dotfile_dirs
DOTFILE_DIRS
\
refitem
cfg_doxyfile_encoding
DOXYFILE_ENCODING
\
refitem
cfg_enable_preprocessing
ENABLE_PREPROCESSING
\
refitem
cfg_enum_values_per_line
ENUM_VALUES_PER_LINE
\
refitem
cfg_enabled_sections
ENABLED_SECTIONS
\
refitem
cfg_enum_values_per_line
ENUM_VALUES_PER_LINE
\
refitem
cfg_example_path
EXAMPLE_PATH
\
refitem
cfg_example_patterns
EXAMPLE_PATTERNS
\
refitem
cfg_example_recursive
EXAMPLE_RECURSIVE
...
...
@@ -146,6 +147,7 @@ followed by the descriptions of the tags grouped by category.
\
refitem
cfg_hide_undoc_relations
HIDE_UNDOC_RELATIONS
\
refitem
cfg_html_align_members
HTML_ALIGN_MEMBERS
\
refitem
cfg_html_dynamic_sections
HTML_DYNAMIC_SECTIONS
\
refitem
cfg_html_file_extension
HTML_FILE_EXTENSION
\
refitem
cfg_html_footer
HTML_FOOTER
\
refitem
cfg_html_header
HTML_HEADER
\
refitem
cfg_html_output
HTML_OUTPUT
...
...
@@ -155,6 +157,7 @@ followed by the descriptions of the tags grouped by category.
\
refitem
cfg_image_path
IMAGE_PATH
\
refitem
cfg_include_graph
INCLUDE_GRAPH
\
refitem
cfg_include_path
INCLUDE_PATH
\
refitem
cfg_included_by_graph
INCLUDED_BY_GRAPH
\
refitem
cfg_inherit_docs
INHERIT_DOCS
\
refitem
cfg_inline_info
INLINE_INFO
\
refitem
cfg_inline_inherited_memb
INLINE_INHERITED_MEMB
...
...
@@ -189,23 +192,23 @@ followed by the descriptions of the tags grouped by category.
\
refitem
cfg_pdf_hyperlinks
PDF_HYPERLINKS
\
refitem
cfg_perl_path
PERL_PATH
\
refitem
cfg_perlmod_latex
PERLMOD_LATEX
\
refitem
cfg_perlmod_pretty
PERLMOD_PRETTY
\
refitem
cfg_perlmod_makevar_prefix
PERLMOD_MAKEVAR_PREFIX
\
refitem
cfg_perlmod_pretty
PERLMOD_PRETTY
\
refitem
cfg_predefined
PREDEFINED
\
refitem
cfg_project_name
PROJECT_NAME
\
refitem
cfg_project_number
PROJECT_NUMBER
\
refitem
cfg_qhp_namespace
QHP_NAMESPACE
\
refitem
cfg_qhp_virtual_folder
QHP_VIRTUAL_FOLDER
\
refitem
cfg_qhp_cust_filter_name
QHP_CUST_FILTER_NAME
\
refitem
cfg_qhg_location
QHG_LOCATION
\
refitem
cfg_qhp_cust_filter_attrs
QHP_CUST_FILTER_ATTRS
\
refitem
cfg_qhp_cust_filter_name
QHP_CUST_FILTER_NAME
\
refitem
cfg_qhp_namespace
QHP_NAMESPACE
\
refitem
cfg_qhp_sect_filter_attrs
QHP_SECT_FILTER_ATTRS
\
refitem
cfg_qh
g_location
QHG_LOCATION
\
refitem
cfg_qh
p_virtual_folder
QHP_VIRTUAL_FOLDER
\
refitem
cfg_qt_autobrief
QT_AUTOBRIEF
\
refitem
cfg_quiet
QUIET
\
refitem
cfg_recursive
RECURSIVE
\
refitem
cfg_referenced_by_relation
REFERENCED_BY_RELATION
\
refitem
cfg_references_relation
REFERENCES_RELATION
\
refitem
cfg_references_link_source
REFERENCES_LINK_SOURCE
\
refitem
cfg_references_relation
REFERENCES_RELATION
\
refitem
cfg_repeat_brief
REPEAT_BRIEF
\
refitem
cfg_rtf_extensions_file
RTF_EXTENSIONS_FILE
\
refitem
cfg_rtf_hyperlinks
RTF_HYPERLINKS
...
...
@@ -219,13 +222,14 @@ followed by the descriptions of the tags grouped by category.
\
refitem
cfg_show_files
SHOW_FILES
\
refitem
cfg_show_include_files
SHOW_INCLUDE_FILES
\
refitem
cfg_show_namespaces
SHOW_NAMESPACES
\
refitem
cfg_show_used_files
SHOW_USED_FILES
\
refitem
cfg_sip_support
SIP_SUPPORT
\
refitem
cfg_skip_function_macros
SKIP_FUNCTION_MACROS
\
refitem
cfg_sort_brief_docs
SORT_BRIEF_DOCS
\
refitem
cfg_sort_by_scope_name
SORT_BY_SCOPE_NAME
\
refitem
cfg_sort_members_constructors_first
SORT_MEMBERS_CTORS_1ST
\
refitem
cfg_sort_group_names
SORT_GROUP_NAMES
\
refitem
cfg_sort_member_docs
SORT_MEMBER_DOCS
\
refitem
cfg_sort_members_constructors_first
SORT_MEMBERS_CTORS_1ST
\
refitem
cfg_source_browser
SOURCE_BROWSER
\
refitem
cfg_strip_code_comments
STRIP_CODE_COMMENTS
\
refitem
cfg_strip_from_inc_path
STRIP_FROM_INC_PATH
...
...
@@ -240,8 +244,8 @@ followed by the descriptions of the tags grouped by category.
\
refitem
cfg_typedef_hides_struct
TYPEDEF_HIDES_STRUCT
\
refitem
cfg_uml_look
UML_LOOK
\
refitem
cfg_use_htags
USE_HTAGS
\
refitem
cfg_use_inline_trees
USE_INLINE_TREES
\
refitem
cfg_use_pdflatex
USE_PDFLATEX
\
refitem
cfg_use_windows_encoding
USE_WINDOWS_ENCODING
\
refitem
cfg_verbatim_headers
VERBATIM_HEADERS
\
refitem
cfg_warn_format
WARN_FORMAT
\
refitem
cfg_warn_if_doc_error
WARN_IF_DOC_ERROR
...
...
@@ -312,17 +316,6 @@ followed by the descriptions of the tags grouped by category.
Lithuanian
,
Norwegian
,
Persian
,
Polish
,
Portuguese
,
Romanian
,
Russian
,
Serbian
,
Slovak
,
Slovene
,
Spanish
,
Swedish
,
and
Ukrainian
.
\
anchor
cfg_use_windows_encoding
<
dt
>\
c
USE_WINDOWS_ENCODING
<
dd
>
\
addindex
USE_WINDOWS_ENCODING
This
tag
can
be
used
to
specify
the
encoding
used
in
the
generated
output
.
The
encoding
is
not
always
determined
by
the
language
that
is
chosen
,
but
also
whether
or
not
the
output
is
meant
for
Windows
or
non
-
Windows
users
.
In
case
there
is
a
difference
,
setting
the
\
c
USE_WINDOWS_ENCODING
tag
to
\
c
YES
forces
the
Windows
encoding
,
(
this
is
the
default
for
the
Windows
binary
),
whereas
setting
the
tag
to
\
c
NO
uses
a
Unix
-
style
encoding
(
the
default
for
all
platforms
other
than
Windows
).
\
anchor
cfg_brief_member_desc
<
dt
>\
c
BRIEF_MEMBER_DESC
<
dd
>
\
addindex
BRIEF_MEMBER_DESC
...
...
@@ -1565,6 +1558,9 @@ and Class Hierarchy pages using a tree view instead of an ordered list.
\addindex LATEX_CMD_NAME
The \c LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be invoked.
If left blank `latex'
will
be
used
as
the
default
command
name
.
Note
that
when
enabling
USE_PDFLATEX
this
option
is
only
used
for
generating
bitmaps
for
formulas
in
the
HTML
output
,
but
not
in
the
Makefile
that
is
written
to
the
output
directory
.
\
anchor
cfg_makeindex_cmd_name
<
dt
>\
c
MAKEINDEX_CMD_NAME
<
dd
>
...
...
doc/language.doc
View file @
1042ef3a
...
...
@@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other
than English (the default). The output language is chosen through the
configuration file (with default name and known as Doxyfile).
Currently (version 1.6.
0
), 38 languages
Currently (version 1.6.
1
), 38 languages
are supported (sorted alphabetically):
Afrikaans, Arabic, Brazilian Portuguese, Catalan, Chinese, Chinese
Traditional, Croatian, Czech, Danish, Dutch, English, Esperanto,
...
...
@@ -56,7 +56,7 @@ when the translator was updated.
<td>Afrikaans</td>
<td>Johan Prinsloo</td>
<td>johan at zippysnoek dot com</td>
<td>1.
4.6
</td>
<td>1.
6.0
</td>
</tr>
<tr bgcolor="#ffffff">
<td>Arabic</td>
...
...
@@ -218,7 +218,7 @@ when the translator was updated.
<td>Polish</td>
<td>Piotr Kaminski<br/>Grzegorz Kowal<br/>Krzysztof Kral</td>
<td>Piotr.Kaminski at ctm dot gdynia dot pl<br/>g_kowal at poczta dot onet dot pl<br/>krzysztof.kral at gmail dot com</td>
<td>
1.6.0
</td>
<td>
up-to-date
</td>
</tr>
<tr bgcolor="#ffffff">
<td>Portuguese</td>
...
...
@@ -307,7 +307,7 @@ when the translator was updated.
\hline
\hline
Afrikaans & Johan Prinsloo & {\tt\tiny johan@zippysnoek.com} & 1.
4.6
\\
Afrikaans & Johan Prinsloo & {\tt\tiny johan@zippysnoek.com} & 1.
6.0
\\
\hline
Arabic & Moaz Reyad & {\tt\tiny moazreyad@yahoo.com} & 1.4.6 \\
\hline
...
...
@@ -373,7 +373,7 @@ when the translator was updated.
\hline
Persian & Ali Nadalizadeh & {\tt\tiny nadalizadeh@gmail.com} & 1.6.0 \\
\hline
Polish & Piotr Kaminski & {\tt\tiny Piotr.Kaminski@ctm.gdynia.pl} &
1.6.0
\\
Polish & Piotr Kaminski & {\tt\tiny Piotr.Kaminski@ctm.gdynia.pl} &
up-to-date
\\
~ & Grzegorz Kowal & {\tt\tiny g\_kowal@poczta.onet.pl} & ~ \\
~ & Krzysztof Kral & {\tt\tiny krzysztof.kral@gmail.com} & ~ \\
\hline
...
...
doc/translator.py
View file @
1042ef3a
...
...
@@ -48,8 +48,10 @@
2005/02/28 - Slight modification to generate "mailto.txt" auxiliary file.
2005/08/15 - Doxygen's root directory determined primarily from DOXYGEN
environment variable. When not found, then relatively to the script.
2007/03/20 - The "translate me!" searched in comments and reported if found.
2009/05/09 - Changed HTML output to make it confirm to XHTML DTD
2007/03/20 - The "translate me!" searched in comments and reported if found.
2008/06/09 - Warning when the MAX_DOT_GRAPH_HEIGHT is still part of trLegendDocs().
2009/05/09 - Changed HTML output to fit it with XHTML DTD
2009/09/02 - Added percentage info to the report (implemented / to be implemented).
"""
from
__future__
import
generators
...
...
@@ -166,6 +168,7 @@ class Transl:
self
.
prototypeDic
=
{}
# uniPrototype -> prototype
self
.
translateMeText
=
'translate me!'
self
.
translateMeFlag
=
False
# comments with "translate me!" found
self
.
txtMAX_DOT_GRAPH_HEIGHT_flag
=
False
# found in string in trLegendDocs()
self
.
obsoleteMethods
=
None
# list of prototypes to be removed
self
.
missingMethods
=
None
# list of prototypes to be implemented
self
.
implementedMethods
=
None
# list of implemented required methods
...
...
@@ -769,6 +772,8 @@ class Transl:
# identifiers.
prototype
=
''
# readable prototype (with everything)
uniPrototype
=
''
# unified prototype (without arg. identifiers)
warning
=
''
# warning message -- if something special detected
methodId
=
None
# processed method id
# Collect the method prototypes. Stop on the closing
# curly brace followed by the semicolon (end of class).
...
...
@@ -823,6 +828,7 @@ class Transl:
if
tokenId
==
'id'
:
prototype
+=
' '
+
tokenStr
uniPrototype
+=
' '
+
tokenStr
methodId
=
tokenStr
# for reporting
status
=
5
else
:
self
.
__unexpectedToken
(
status
,
tokenId
,
tokenLineNo
)
...
...
@@ -884,9 +890,17 @@ class Transl:
# Insert new dictionary item.
assert
(
not
self
.
prototypeDic
.
has_key
(
uniPrototype
))
self
.
prototypeDic
[
uniPrototype
]
=
prototype
status
=
2
# body consumed
status
=
2
# body consumed
methodId
=
None
# outside of any method
elif
tokenId
==
'lcurly'
:
curlyCnt
+=
1
# Warn in special case.
elif
methodId
==
'trLegendDocs'
and
tokenId
==
'string'
\
and
tokenStr
.
find
(
'MAX_DOT_GRAPH_HEIGHT'
)
>=
0
:
self
.
txtMAX_DOT_GRAPH_HEIGHT_flag
=
True
elif
status
==
11
:
# probably the end of class
if
tokenId
==
'semic'
:
status
=
777
...
...
@@ -1114,10 +1128,17 @@ class Transl:
self
.
adaptMinClass
=
adaptMinClass
self
.
readableStatus
=
adaptMinVersion
# simplified
# If everything seems OK, but the explicit mark self.translateMeText
# in comments was found, something must be translated.
if
not
self
.
note
and
self
.
status
==
''
and
self
.
translateMeFlag
:
self
.
note
=
'The "
%
s" found in a comment.'
%
self
.
translateMeText
# If everything seems OK, some explicit warning flags still could
# be set.
if
not
self
.
note
and
self
.
status
==
''
and
\
(
self
.
translateMeFlag
or
self
.
txtMAX_DOT_GRAPH_HEIGHT_flag
):
self
.
note
=
''
if
self
.
translateMeFlag
:
self
.
note
+=
'The "
%
s" found in a comment.'
%
self
.
translateMeText
if
self
.
note
!=
''
:
self
.
note
+=
'
\n\t\t
'
if
self
.
txtMAX_DOT_GRAPH_HEIGHT_flag
:
self
.
note
+=
'The MAX_DOT_GRAPH_HEIGHT found in trLegendDocs()'
# If everything seems OK, but there are obsolete methods, set
# the note to clean-up source. This note will be used only when
...
...
@@ -1138,18 +1159,21 @@ class Transl:
# Report the number of not implemented methods.
fout
.
write
(
'
\n\n\n
'
)
fout
.
write
(
self
.
classId
+
' ('
+
self
.
baseClassId
+
')'
)
percentImplemented
=
100
# init
allNum
=
len
(
self
.
manager
.
requiredMethodsDic
)
if
self
.
missingMethods
:
num
=
len
(
self
.
missingMethods
)
percentImplemented
=
100
*
(
allNum
-
num
)
/
allNum
fout
.
write
(
'
%
d'
%
num
)
fout
.
write
(
' method'
)
if
num
>
1
:
fout
.
write
(
's'
)
fout
.
write
(
' to implement
'
)
fout
.
write
(
' to implement
(
%
d
%%
)'
%
(
100
*
num
/
allNum
)
)
fout
.
write
(
'
\n
'
+
'-'
*
len
(
self
.
classId
))
# Write the info about the implemented required methods.
fout
.
write
(
'
\n\n
Implements
%
d'
%
len
(
self
.
implementedMethods
))
fout
.
write
(
' of the required methods
.'
)
fout
.
write
(
' of the required methods
(
%
d
%%
).'
%
percentImplemented
)
# Report the missing method, but only when it is not English-based
# translator.
...
...
@@ -1541,6 +1565,7 @@ class TrManager:
adaptMinVersion
=
'9.9.99'
mailtoLst
=
[]
numRequired
=
len
(
self
.
requiredMethodsDic
)
for
x
in
self
.
adaptIdLst
:
obj
=
self
.
__translDic
[
x
]
f
.
write
(
'
%-30
s'
%
obj
.
classId
)
...
...
@@ -1548,7 +1573,9 @@ class TrManager:
numimpl
=
len
(
obj
.
missingMethods
)
pluralS
=
''
if
numimpl
>
1
:
pluralS
=
's'
f
.
write
(
'
\t
%2
d method
%
s to implement'
%
(
numimpl
,
pluralS
))
percent
=
100
*
numimpl
/
numRequired
f
.
write
(
'
\t
%2
d method
%
s to implement (
%
d
%%
)'
%
(
numimpl
,
pluralS
,
percent
))
if
obj
.
note
:
f
.
write
(
'
\n\t
Note: '
+
obj
.
note
+
'
\n
'
)
f
.
write
(
'
\n
'
)
...
...
doc/translator_report.txt
View file @
1042ef3a
This diff is collapsed.
Click to expand it.
src/bufstr.h
View file @
1042ef3a
...
...
@@ -69,6 +69,10 @@ class BufStr
}
m_buf
=
(
char
*
)
realloc
(
m_buf
,
m_size
);
}
int
size
()
const
{
return
m_size
;
}
char
*
data
()
const
{
return
m_buf
;
...
...
src/classdef.cpp
View file @
1042ef3a
...
...
@@ -3089,10 +3089,12 @@ void ClassDef::addListReferences()
{
LockingPtr
<
QList
<
ListItemInfo
>
>
xrefItems
=
xrefListItems
();
addRefItem
(
xrefItems
.
pointer
(),
qualifiedName
(),
fortranOpt
?
theTranslator
->
trType
(
TRUE
,
TRUE
)
:
theTranslator
->
trClass
(
TRUE
,
TRUE
),
getOutputFileBase
(),
displayName
()
displayName
(),
0
);
}
if
(
m_impl
->
memberGroupSDict
)
...
...
src/config.l
View file @
1042ef3a
...
...
@@ -1395,26 +1395,6 @@ void Config::check()
config_err("Warning: Specifying QCH_FILE requires QHG_LOCATION to be set.\n");
}
if (Config_getBool("HAVE_DOT"))
{
QCString curFontPath = Config_getString("DOT_FONTPATH");
if (curFontPath.isEmpty())
{
portable_getenv("DOTFONTPATH");
QCString newFontPath = ".";
if (!curFontPath.isEmpty())
{
newFontPath+=portable_pathListSeparator();
newFontPath+=curFontPath;
}
portable_setenv("DOTFONTPATH",newFontPath);
}
else
{
portable_setenv("DOTFONTPATH",curFontPath);
}
}
if (Config_getBool("OPTIMIZE_OUTPUT_JAVA") && Config_getBool("INLINE_INFO"))
{
// don't show inline info for Java output, since Java has no inline
...
...
src/config.xml
View file @
1042ef3a
...
...
@@ -139,7 +139,7 @@ the path. The tag can be used to show relative paths in the file list.
If left blank the directory from which doxygen is run is used as the
path to strip.
'
depends=
'FULL_PATH_NAMES'
>
<value
name=
'
/Users/dimitri/doxygen/mail/1.5.7/doxywizard/
'
/>
<value
name=
''
/>
</option>
<option
type=
'list'
id=
'STRIP_FROM_INC_PATH'
format=
'string'
docs=
'
The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
...
...
@@ -536,7 +536,7 @@ documented source files. You may enter file names like "myfile.cpp" or
directories like "/usr/src/myproject". Separate the files or directories
with spaces.
'
>
<value
name=
'
/Users/dimitri/doxygen/mail/1.5.7/doxywizard
'
/>
<value
name=
''
/>
</option>
<option
type=
'string'
id=
'INPUT_ENCODING'
format=
'string'
docs=
'
This tag can be used to specify the character encoding of the source files
...
...
@@ -933,6 +933,9 @@ put in front of it. If left blank `latex' will be used as the default path.
<option
type=
'string'
id=
'LATEX_CMD_NAME'
format=
'file'
docs=
'
The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
invoked. If left blank `latex' will be used as the default command name.
Note that when enabling USE_PDFLATEX this option is only used for
generating bitmaps for formulas in the HTML output, but not in the
Makefile that is written to the output directory.
'
defval=
'latex'
depends=
'GENERATE_LATEX'
/>
<option
type=
'string'
id=
'MAKEINDEX_CMD_NAME'
format=
'file'
docs=
'
The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
...
...
src/configoptions.cpp
View file @
1042ef3a
...
...
@@ -192,7 +192,7 @@ void addConfigOptions(Config *cfg)
"If left blank the directory from which doxygen is run is used as the
\n
"
"path to strip."
);
cl
->
addValue
(
"
/Users/dimitri/doxygen/mail/1.5.7/doxywizard/
"
);
cl
->
addValue
(
""
);
cl
->
addDependency
(
"FULL_PATH_NAMES"
);
//----
cl
=
cfg
->
addList
(
...
...
@@ -767,7 +767,7 @@ void addConfigOptions(Config *cfg)
"directories like
\"
/usr/src/myproject
\"
. Separate the files or directories
\n
"
"with spaces."
);
cl
->
addValue
(
"
/Users/dimitri/doxygen/mail/1.5.7/doxywizard
"
);
cl
->
addValue
(
""
);
cl
->
setWidgetType
(
ConfigList
::
FileAndDir
);
//----
cs
=
cfg
->
addString
(
...
...
@@ -1372,7 +1372,10 @@ void addConfigOptions(Config *cfg)
cs
=
cfg
->
addString
(
"LATEX_CMD_NAME"
,
"The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
\n
"
"invoked. If left blank `latex' will be used as the default command name."
"invoked. If left blank `latex' will be used as the default command name.
\n
"
"Note that when enabling USE_PDFLATEX this option is only used for
\n
"
"generating bitmaps for formulas in the HTML output, but not in the
\n
"
"Makefile that is written to the output directory."
);
cs
->
setDefaultValue
(
"latex"
);
cs
->
setWidgetType
(
ConfigString
::
File
);
...
...
src/definition.cpp
View file @
1042ef3a
...
...
@@ -198,9 +198,10 @@ static bool matchExcludedSymbols(const char *name)
void
Definition
::
addToMap
(
const
char
*
name
,
Definition
*
d
)
{
static
bool
vhdlOpt
=
Config_getBool
(
"OPTIMIZE_OUTPUT_VHDL"
);
QCString
symbolName
=
name
;
int
index
=
computeQualifiedIndex
(
symbolName
);
if
(
index
!=-
1
)
symbolName
=
symbolName
.
mid
(
index
+
2
);
if
(
!
vhdlOpt
&&
index
!=-
1
)
symbolName
=
symbolName
.
mid
(
index
+
2
);
if
(
!
symbolName
.
isEmpty
())
{
//printf("******* adding symbol `%s' (%p)\n",symbolName.data(),d);
...
...
@@ -1240,7 +1241,7 @@ void Definition::writePathFragment(OutputList &ol) const
else
{
ol
.
writeString
(
" "
);
ol
.
writeString
(
"»"
);
ol
.
writeString
(
"»
;
"
);
ol
.
writeString
(
" "
);
}
}
...
...
src/dirdef.cpp
View file @
1042ef3a
...
...
@@ -720,9 +720,11 @@ void DirRelation::writeDocumentation(OutputList &ol)
ol
.
writeString
(
"<table class=
\"
dirtab
\"
>"
);
ol
.
writeString
(
"<tr class=
\"
dirtab
\"
>"
);
// TODO: translate me! "File in %s"
ol
.
writeString
(
"<th class=
\"
dirtab
\"
>File in "
);
m_src
->
writePathFragment
(
ol
);
ol
.
writeString
(
"</th>"
);
// TODO: translate me! "Includes file in %s"
ol
.
writeString
(
"<th class=
\"
dirtab
\"
>Includes file in "
);
m_dst
->
dir
()
->
writePathFragment
(
ol
);
ol
.
writeString
(
"</th>"
);
...
...
@@ -844,7 +846,7 @@ void computeDirDependencies()
#endif
}
#if 0
void writeDirDependencyGraph(const char *dirName)
{
QString path;
...
...
@@ -889,6 +891,7 @@ void writeDirDependencyGraph(const char *dirName)
}
htmlPage.close();
}
#endif
void
generateDirDocs
(
OutputList
&
ol
)
{
...
...
src/dot.cpp
View file @
1042ef3a
This diff is collapsed.
Click to expand it.
src/dot.h
View file @
1042ef3a
...
...
@@ -321,10 +321,14 @@ class DotRunner
*/
void
addJob
(
const
char
*
format
,
const
char
*
output
);
void
addPostProcessing
(
const
char
*
cmd
,
const
char
*
args
);
/** Runs dot for all jobs added. */
bool
run
();
private
:
QList
<
QCString
>
m_jobs
;
QCString
m_postArgs
;
QCString
m_postCmd
;
QCString
m_file
;
};
...
...
src/doxygen.cpp
View file @
1042ef3a
...
...
@@ -78,6 +78,7 @@
#include "marshal.h"
#include "portable.h"
#include "vhdlscanner.h"
#include "vhdldocgen.h"
#include "layout.h"
...
...
@@ -4078,12 +4079,12 @@ static bool findClassRelation(
QCString
biName
=
bi
->
name
;
bool
explicitGlobalScope
=
FALSE
;
//printf("findClassRelation: biName=`%s'\n",biName.data());
if
(
biName
.
left
(
2
)
==
"::"
)
// explicit global scope
{
biName
=
biName
.
right
(
biName
.
length
()
-
2
);
explicitGlobalScope
=
TRUE
;
}
//printf("biName=`%s'\n",biName.data());
EntryNav
*
parentNode
=
rootNav
->
parent
();
bool
lastParent
=
FALSE
;
...
...
@@ -4108,7 +4109,7 @@ static bool findClassRelation(
// &stripped);
MemberDef
*
baseClassTypeDef
=
0
;
QCString
templSpec
;
ClassDef
*
baseClass
=
getResolvedClass
(
explicitGlobalScope
?
0
:
cd
,
ClassDef
*
baseClass
=
getResolvedClass
(
explicitGlobalScope
?
Doxygen
::
globalScope
:
context
,
cd
->
getFileDef
(),
baseClassName
,
&
baseClassTypeDef
,
...
...
@@ -4154,7 +4155,7 @@ static bool findClassRelation(
{
templSpec
=
removeRedundantWhiteSpace
(
baseClassName
.
mid
(
i
,
e
-
i
));
baseClassName
=
baseClassName
.
left
(
i
)
+
baseClassName
.
right
(
baseClassName
.
length
()
-
e
);
baseClass
=
getResolvedClass
(
cd
,
baseClass
=
getResolvedClass
(
explicitGlobalScope
?
Doxygen
::
globalScope
:
context
,
cd
->
getFileDef
(),
baseClassName
,
&
baseClassTypeDef
,
...
...
@@ -4190,7 +4191,7 @@ static bool findClassRelation(
QCString
tmpTemplSpec
;
// replace any namespace aliases
replaceNamespaceAliases
(
baseClassName
,
si
);
baseClass
=
getResolvedClass
(
cd
,
baseClass
=
getResolvedClass
(
explicitGlobalScope
?
Doxygen
::
globalScope
:
context
,
cd
->
getFileDef
(),
baseClassName
,
&
baseClassTypeDef
,
...
...
@@ -4648,8 +4649,9 @@ static void addListReferences()
{
LockingPtr
<
QList
<
ListItemInfo
>
>
xrefItems
=
pd
->
xrefListItems
();
addRefItem
(
xrefItems
.
pointer
(),
name
,
theTranslator
->
trPage
(
TRUE
,
TRUE
),
name
,
pd
->
title
());
name
,
pd
->
title
()
,
0
);
}
}
DirSDict
::
Iterator
ddi
(
*
Doxygen
::
directories
);
...
...
@@ -4663,8 +4665,9 @@ static void addListReferences()
//}
LockingPtr
<
QList
<
ListItemInfo
>
>
xrefItems
=
dd
->
xrefListItems
();
addRefItem
(
xrefItems
.
pointer
(),
name
,
theTranslator
->
trDir
(
TRUE
,
TRUE
),
name
,
dd
->
displayName
());
name
,
dd
->
displayName
()
,
0
);
}
}
...
...
@@ -7782,9 +7785,13 @@ static void buildPageList(EntryNav *rootNav)
QCString
title
=
root
->
args
.
stripWhiteSpace
();
if
(
title
.
isEmpty
())
title
=
theTranslator
->
trMainPage
();
addRefItem
(
root
->
sli
,
"page"
,
Config_getBool
(
"GENERATE_TREEVIEW"
)
?
"main"
:
"index"
,
title
QCString
name
=
Config_getBool
(
"GENERATE_TREEVIEW"
)
?
"main"
:
"index"
;
addRefItem
(
root
->
sli
,
name
,
"page"
,
name
,
title
,
0
);
rootNav
->
releaseEntry
();
...
...
@@ -8422,113 +8429,6 @@ static bool patternMatch(QFileInfo *fi,QStrList *patList)
return
found
;
}
static
int
transcodeCharacterBuffer
(
BufStr
&
srcBuf
,
int
size
,
const
char
*
inputEncoding
,
const
char
*
outputEncoding
)
{
if
(
inputEncoding
==
0
||
outputEncoding
==
0
)
return
size
;
if
(
qstricmp
(
inputEncoding
,
outputEncoding
)
==
0
)
return
size
;
void
*
cd
=
portable_iconv_open
(
outputEncoding
,
inputEncoding
);
if
(
cd
==
(
void
*
)(
-
1
))
{
err
(
"Error: unsupported character conversion: '%s'->'%s': %s
\n
"
"Check the INPUT_ENCODING setting in the config file!
\n
"
,
inputEncoding
,
outputEncoding
,
strerror
(
errno
));
exit
(
1
);
}
int
tmpBufSize
=
size
*
4
+
1
;
BufStr
tmpBuf
(
tmpBufSize
);
size_t
iLeft
=
size
;
size_t
oLeft
=
tmpBufSize
;
const
char
*
srcPtr
=
srcBuf
.
data
();
char
*
dstPtr
=
tmpBuf
.
data
();
uint
newSize
=
0
;
if
(
!
portable_iconv
(
cd
,
&
srcPtr
,
&
iLeft
,
&
dstPtr
,
&
oLeft
))
{
newSize
=
tmpBufSize
-
oLeft
;
srcBuf
.
shrink
(
newSize
);
strncpy
(
srcBuf
.
data
(),
tmpBuf
.
data
(),
newSize
);
//printf("iconv: input size=%d output size=%d\n[%s]\n",size,newSize,srcBuf.data());
}
else
{
err
(
"Error: failed to translate characters from %s to %s: check INPUT_ENCODING
\n
"
,
inputEncoding
,
outputEncoding
);
exit
(
1
);
}
portable_iconv_close
(
cd
);
return
newSize
;
}
//----------------------------------------------------------------------------
// reads a file into an array and filters out any 0x00 and 0x06 bytes,
// because these are special for the parser.
void
copyAndFilterFile
(
const
char
*
fileName
,
BufStr
&
dest
)
{
// try to open file
int
size
=
0
;
//uint oldPos = dest.curPos();
//printf(".......oldPos=%d\n",oldPos);
QFileInfo
fi
(
fileName
);
if
(
!
fi
.
exists
())
return
;
QCString
filterName
=
getFileFilter
(
fileName
);
if
(
filterName
.
isEmpty
())
{
QFile
f
(
fileName
);
if
(
!
f
.
open
(
IO_ReadOnly
))
{
err
(
"Error: could not open file %s
\n
"
,
fileName
);
return
;
}
size
=
fi
.
size
();
// read the file
dest
.
skip
(
size
);
if
(
f
.
readBlock
(
dest
.
data
()
/*+oldPos*/
,
size
)
!=
size
)
{
err
(
"Error while reading file %s
\n
"
,
fileName
);
return
;
}
}
else
{
QCString
cmd
=
filterName
+
"
\"
"
+
fileName
+
"
\"
"
;
Debug
::
print
(
Debug
::
ExtCmd
,
0
,
"Executing popen(`%s`)
\n
"
,
cmd
.
data
());
FILE
*
f
=
portable_popen
(
cmd
,
"r"
);
if
(
!
f
)
{
err
(
"Error: could not execute filter %s
\n
"
,
filterName
.
data
());
return
;
}
const
int
bufSize
=
1024
;
char
buf
[
bufSize
];
int
numRead
;
while
((
numRead
=
fread
(
buf
,
1
,
bufSize
,
f
))
>
0
)
{
//printf(">>>>>>>>Reading %d bytes\n",numRead);
dest
.
addArray
(
buf
,
numRead
),
size
+=
numRead
;
}
portable_pclose
(
f
);
}
// filter unwanted bytes from the resulting data
uchar
conv
[
256
];
int
i
;
for
(
i
=
0
;
i
<
256
;
i
++
)
conv
[
i
]
=
i
;
conv
[
0x06
]
=
0x20
;
// replace the offending characters with spaces
conv
[
0x00
]
=
0x20
;
// remove any special markers from the input
uchar
*
p
=
(
uchar
*
)
dest
.
data
()
/*+oldPos*/
;
for
(
i
=
0
;
i
<
size
;
i
++
,
p
++
)
*
p
=
conv
[
*
p
];
// and translate CR's
int
newSize
=
filterCRLF
(
dest
.
data
()
/*+oldPos*/
,
size
);
//printf("filter char at %p size=%d newSize=%d\n",dest.data()+oldPos,size,newSize);
if
(
newSize
!=
size
)
// we removed chars
{
dest
.
shrink
(
/*oldPos+*/
newSize
);
// resize the array
//printf(".......resizing from %d to %d result=[%s]\n",oldPos+size,oldPos+newSize,dest.data());
}
}
//----------------------------------------------------------------------------
static
void
copyStyleSheet
()
{
...
...
@@ -8562,6 +8462,8 @@ static void copyStyleSheet()
}
}
//! parse the list of input files
static
void
parseFiles
(
Entry
*
root
,
EntryNav
*
rootNav
)
{
void
*
cd
=
0
;
...
...
@@ -8587,26 +8489,21 @@ static void parseFiles(Entry *root,EntryNav *rootNav)
QFileInfo
fi
(
fileName
);
BufStr
preBuf
(
fi
.
size
()
+
4096
);
//BufStr *bufPtr = &preBuf;
if
(
Config_getBool
(
"ENABLE_PREPROCESSING"
)
&&
parser
->
needsPreprocessing
(
extension
))
{
BufStr
inBuf
(
fi
.
size
()
+
4096
);
msg
(
"Preprocessing %s...
\n
"
,
s
->
data
());
preprocessFile
(
fileName
,
preBuf
);
readInputFile
(
fileName
,
inBuf
);
preprocessFile
(
fileName
,
inBuf
,
preBuf
);
}
else
else
// no preprocessing
{
msg
(
"Reading %s...
\n
"
,
s
->
data
());
copyAndFilter
File
(
fileName
,
preBuf
);
readInput
File
(
fileName
,
preBuf
);
}
preBuf
.
addChar
(
'\n'
);
/* to prevent problems under Windows ? */
// do character transcoding if needed.
transcodeCharacterBuffer
(
preBuf
,
preBuf
.
curPos
(),
Config_getString
(
"INPUT_ENCODING"
),
"UTF-8"
);
BufStr
convBuf
(
preBuf
.
curPos
()
+
1024
);
// convert multi-line C++ comments to C style comments
...
...
@@ -9911,6 +9808,29 @@ void parseInput()
if
(
generateMan
)
manOutput
=
createOutputDirectory
(
outputDirectory
,
"MAN_OUTPUT"
,
"/man"
);
if
(
Config_getBool
(
"HAVE_DOT"
))
{
QCString
curFontPath
=
Config_getString
(
"DOT_FONTPATH"
);
if
(
curFontPath
.
isEmpty
())
{
portable_getenv
(
"DOTFONTPATH"
);
QCString
newFontPath
=
"."
;
if
(
!
curFontPath
.
isEmpty
())
{
newFontPath
+=
portable_pathListSeparator
();
newFontPath
+=
curFontPath
;
}
portable_setenv
(
"DOTFONTPATH"
,
newFontPath
);
}
else
{
portable_setenv
(
"DOTFONTPATH"
,
curFontPath
);
}
}
/**************************************************************************
* Handle layout file *
**************************************************************************/
...
...
@@ -10102,14 +10022,14 @@ void parseInput()
msg
(
"Computing class relations...
\n
"
);
computeTemplateClassRelations
();
flushUnresolvedRelations
();
//
if (Config_getBool("OPTIMIZE_OUTPUT_VHDL"))
//
{
// VhdlDocGen::computeVhdlComponentRelations(g_classEntries,g_storage
);
//
}
//
else
//
{
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_VHDL"
))
{
VhdlDocGen
::
computeVhdlComponentRelations
(
);
}
else
{
computeClassRelations
();
//
}
}
g_classEntries
.
clear
();
msg
(
"Add enum values to enums...
\n
"
);
...
...
src/filedef.cpp
View file @
1042ef3a
...
...
@@ -1094,8 +1094,10 @@ void FileDef::addListReferences()
{
LockingPtr
<
QList
<
ListItemInfo
>
>
xrefItems
=
xrefListItems
();
addRefItem
(
xrefItems
.
pointer
(),
getOutputFileBase
(),
theTranslator
->
trFile
(
TRUE
,
TRUE
),
getOutputFileBase
(),
name
()
getOutputFileBase
(),
name
(),
0
);
}
if
(
memberGroupSDict
)
...
...
src/formula.cpp
View file @
1042ef3a
...
...
@@ -84,7 +84,7 @@ void FormulaList::generateBitmaps(const char *path)
for
(
fli
.
toFirst
();(
formula
=
fli
.
current
());
++
fli
)
{
QCString
resultName
;
resultName
.
sprintf
(
"form_%d.
png
"
,
formula
->
getId
());
resultName
.
sprintf
(
"form_%d.
gif
"
,
formula
->
getId
());
// only formulas for which no image exists are generated
QFileInfo
fi
(
resultName
);
if
(
!
fi
.
exists
())
...
...
@@ -119,7 +119,7 @@ void FormulaList::generateBitmaps(const char *path)
for
(;(
pagePtr
=
pli
.
current
());
++
pli
,
++
pageIndex
)
{
int
pageNum
=*
pagePtr
;
msg
(
"Generating image form_%d.
png
for formula
\n
"
,
pageNum
);
msg
(
"Generating image form_%d.
gif
for formula
\n
"
,
pageNum
);
char
dviArgs
[
4096
];
QCString
formBase
;
formBase
.
sprintf
(
"_form%d"
,
pageNum
);
...
...
@@ -268,7 +268,7 @@ void FormulaList::generateBitmaps(const char *path)
}
// save the result as a png
QCString
resultName
;
resultName
.
sprintf
(
"form_%d.
png
"
,
pageNum
);
resultName
.
sprintf
(
"form_%d.
gif
"
,
pageNum
);
// the option parameter 1 is used here as a temporary hack
// to select the right color palette!
dstImage
.
save
(
resultName
,
1
);
...
...
src/groupdef.cpp
View file @
1042ef3a
...
...
@@ -1230,8 +1230,10 @@ void GroupDef::addListReferences()
{
LockingPtr
<
QList
<
ListItemInfo
>
>
xrefItems
=
xrefListItems
();
addRefItem
(
xrefItems
.
pointer
(),
getOutputFileBase
(),
theTranslator
->
trGroup
(
TRUE
,
TRUE
),
getOutputFileBase
(),
name
()
getOutputFileBase
(),
name
(),
0
);
}
MemberGroupSDict
::
Iterator
mgli
(
*
memberGroupSDict
);
...
...
src/htmlgen.cpp
View file @
1042ef3a
...
...
@@ -1758,7 +1758,7 @@ void HtmlGenerator::startMemberGroupDocs()
void
HtmlGenerator
::
endMemberGroupDocs
()
{
t
<<
"<
br/><br/><
/div></td></tr>"
<<
endl
;
t
<<
"</div></td></tr>"
<<
endl
;
}
void
HtmlGenerator
::
startMemberGroup
()
...
...
src/latexgen.cpp
View file @
1042ef3a
...
...
@@ -1580,38 +1580,18 @@ void LatexGenerator::docify(const char *str)
void
LatexGenerator
::
codify
(
const
char
*
str
)
{
static
bool
isJapanese
=
theTranslator
->
idLanguage
()
==
"japanese"
||
theTranslator
->
idLanguage
()
==
"japanese-en"
;
if
(
str
)
{
const
char
*
p
=
str
;
char
c
;
char
cs
[
2
];
cs
[
1
]
=
'\0'
;
char
cs
[
5
];
int
spacesToNextTabStop
;
static
int
tabSize
=
Config_getInt
(
"TAB_SIZE"
);
while
(
*
p
)
{
static
bool
MultiByte
=
FALSE
;
//
static bool MultiByte = FALSE;
c
=*
p
++
;
if
(
isJapanese
)
{
if
(
MultiByte
)
{
t
<<
(
char
)
c
;
MultiByte
=
FALSE
;
continue
;
}
if
((
uchar
)
c
>=
0x80
)
// char in range [0x80..0xff]
{
t
<<
(
char
)
c
;
MultiByte
=
TRUE
;
continue
;
}
}
switch
(
c
)
{
case
0x0c
:
break
;
// remove ^L
...
...
@@ -1621,14 +1601,34 @@ void LatexGenerator::codify(const char *str)
col
+=
spacesToNextTabStop
;
break
;
case
'\n'
:
t
<<
'\n'
;
col
=
0
;
break
;
default
:
if
(
m_prettyCode
)
default
:
cs
[
0
]
=
c
;
cs
[
1
]
=
0
;
int
bytes
=
1
;
if
(
c
<
0
)
// multibyte utf-8 character
{
bytes
++
;
// 1xxx.xxxx: >=2 byte character
cs
[
1
]
=*
p
;
cs
[
2
]
=
0
;
if
(((
uchar
)
c
&
0xE0
)
==
0xE0
)
{
bytes
++
;
// 111x.xxxx: >=3 byte character
cs
[
2
]
=*
(
p
+
1
);
cs
[
3
]
=
0
;
}
if
(((
uchar
)
c
&
0xF0
)
==
0xF0
)
{
bytes
++
;
// 1111.xxxx: 4 byte character
cs
[
2
]
=*
(
p
+
2
);
cs
[
4
]
=
0
;
}
}
if
(
m_prettyCode
)
{
cs
[
0
]
=
c
;
filterLatexString
(
t
,
cs
,
insideTabbing
,
TRUE
);
}
else
{
t
<<
c
;
t
<<
c
s
;
}
if
(
col
>=
80
)
{
...
...
@@ -1637,8 +1637,9 @@ void LatexGenerator::codify(const char *str)
}
else
{
col
++
;
col
++
;
}
p
+=
(
bytes
-
1
);
// skip to next character
break
;
}
}
...
...
src/libdoxycfg.t
View file @
1042ef3a
...
...
@@ -47,3 +47,6 @@ sub GenerateDep {
#$ GenerateDep("config.cpp","config.l");
$
(
LEX
)
-
PconfigYY
-
t
config
.
l
>
config
.
cpp
configoptions
.
cpp:
config
.
xml
python
configgen
.
py
config
.
xml
>
configoptions
.
cpp
src/memberdef.cpp
View file @
1042ef3a
...
...
@@ -1538,6 +1538,12 @@ void MemberDef::writeDeclaration(OutputList &ol,
//ol.startEmphasis();
ol
.
popGeneratorState
();
}
// for RTF we need to add an extra empty paragraph
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
RTF
);
ol
.
startParagraph
();
ol
.
endParagraph
();
ol
.
popGeneratorState
();
ol
.
endMemberDescription
();
}
warnIfUndocumented
();
...
...
@@ -2714,14 +2720,16 @@ void MemberDef::addListReference(Definition *)
QCString
memName
=
name
();
Definition
*
pd
=
getOuterScope
();
QCString
memArgs
;
if
(
!
isRelated
()
&&
if
(
!
isRelated
()
/* && commented out as a result of bug 597016
(
(
!
hideScopeNames
&&
// there is a scope
(!hideScopeNames &&
// there is a scope
pd && pd!=Doxygen::globalScope) // and we can show it
||
(pd=getClassDef()) // it's a class so we
// show the scope anyway
)
*/
)
{
if
(
isObjCMethod
())
...
...
@@ -2730,19 +2738,21 @@ void MemberDef::addListReference(Definition *)
}
else
if
(
optimizeOutputJava
)
{
memName
.
prepend
(
pd
->
name
()
+
"."
);
if
(
!
hideScopeNames
)
memName
.
prepend
(
pd
->
name
()
+
"."
);
memArgs
=
argsString
();
}
else
{
memName
.
prepend
(
pd
->
name
()
+
"::"
);
if
(
!
hideScopeNames
)
memName
.
prepend
(
pd
->
name
()
+
"::"
);
memArgs
=
argsString
();
}
}
LockingPtr
<
QList
<
ListItemInfo
>
>
xrefItems
=
xrefListItems
();
if
(
xrefItems
!=
0
)
{
addRefItem
(
xrefItems
.
pointer
(),
memLabel
,
addRefItem
(
xrefItems
.
pointer
(),
qualifiedName
(),
memLabel
,
getOutputFileBase
()
+
"#"
+
anchor
(),
memName
,
memArgs
);
}
}
...
...
src/membergroup.cpp
View file @
1042ef3a
...
...
@@ -273,8 +273,12 @@ void MemberGroup::addListReferences(Definition *def)
memberList
->
addListReferences
(
def
);
if
(
m_xrefListItems
&&
def
)
{
addRefItem
(
m_xrefListItems
,
theTranslator
->
trGroup
(
TRUE
,
TRUE
),
def
->
getOutputFileBase
()
+
"#"
+
anchor
(),
grpHeader
,
0
);
QCString
name
=
def
->
getOutputFileBase
()
+
"#"
+
anchor
();
addRefItem
(
m_xrefListItems
,
name
,
theTranslator
->
trGroup
(
TRUE
,
TRUE
),
name
,
grpHeader
,
0
);
}
}
...
...
src/namespacedef.cpp
View file @
1042ef3a
...
...
@@ -655,8 +655,10 @@ void NamespaceDef::addListReferences()
{
LockingPtr
<
QList
<
ListItemInfo
>
>
xrefItems
=
xrefListItems
();
addRefItem
(
xrefItems
.
pointer
(),
qualifiedName
(),
fortranOpt
?
theTranslator
->
trModule
(
TRUE
,
TRUE
)
:
theTranslator
->
trNamespace
(
TRUE
,
TRUE
),
getOutputFileBase
(),
displayName
()
getOutputFileBase
(),
displayName
(),
0
);
}
MemberGroupSDict
::
Iterator
mgli
(
*
memberGroupSDict
);
...
...
src/pagedef.cpp
View file @
1042ef3a
...
...
@@ -70,10 +70,7 @@ void PageDef::writeDocumentation(OutputList &ol)
{
//outputList->disable(OutputGenerator::Man);
QCString
pageName
;
if
(
Config_getBool
(
"CASE_SENSE_NAMES"
))
pageName
=
name
();
else
pageName
=
name
().
lower
();
pageName
=
escapeCharsInString
(
name
(),
FALSE
);
startFile
(
ol
,
pageName
,
pageName
,
title
(),
HLI_Pages
,
TRUE
);
...
...
src/pre.h
View file @
1042ef3a
...
...
@@ -20,7 +20,6 @@
#include "qtbc.h"
#include <stdio.h>
//#include <qfile.h>
#include "define.h"
class
BufStr
;
...
...
@@ -29,7 +28,7 @@ DefineDict* getFileDefineDict();
void
initPreprocessor
();
void
cleanUpPreprocessor
();
void
addSearchDir
(
const
char
*
dir
);
void
preprocessFile
(
const
char
*
fileName
,
BufStr
&
output
);
void
preprocessFile
(
const
char
*
fileName
,
BufStr
&
input
,
BufStr
&
output
);
void
preFreeScanner
();
#endif
src/pre.l
View file @
1042ef3a
...
...
@@ -46,16 +46,21 @@
#include "debug.h"
#include "bufstr.h"
#include "portable.h"
#include "bufstr.h"
#define YY_NEVER_INTERACTIVE 1
struct FileState
{
FileState(int size) : fileBuf(size), oldFileBuf(0), oldFileBufPos(0) {}
int lineNr;
FILE *filePtr;
FILE *oldYYin;
bool isPlainFile;
//FILE *filePtr;
BufStr fileBuf;
//FILE *oldYYin;
BufStr *oldFileBuf;
int oldFileBufPos;
//bool isPlainFile;
YY_BUFFER_STATE bufState;
QCString fileName;
};
...
...
@@ -83,6 +88,8 @@ static int g_level;
static int g_lastCContext;
static int g_lastCPPContext;
static QArray<int> g_levelGuard;
static BufStr *g_inputBuf;
static int g_inputBufPos;
static BufStr *g_outputBuf;
static int g_roundCount;
static bool g_quoteArg;
...
...
@@ -192,11 +199,11 @@ static FileState *checkAndOpenFile(const QCString &fileName,bool &alreadyInclude
// global guard
if (g_curlyCount==0) // not #include inside { ... }
{
if (g_allIncludes.find(absName)
==0)
if (g_allIncludes.find(absName)
!=0)
{
alreadyIncluded = TRUE;
//printf(" already included 1\n");
return 0; // already done
alreadyIncluded = TRUE;
//printf(" already included 1\n");
return 0; // already done
}
g_allIncludes.insert(absName,(void *)0x8);
}
...
...
@@ -215,16 +222,28 @@ static FileState *checkAndOpenFile(const QCString &fileName,bool &alreadyInclude
}
g_includeStack.setAutoDelete(TRUE);
if (alreadyIncluded)
if (alreadyIncluded)
{
//printf(" already included 2\n");
return 0;
return 0;
}
//printf("#include %s\n",absName.data());
fs = new FileState;
fs = new FileState
(fi.size()+4096)
;
alreadyIncluded = FALSE;
if (!readInputFile(absName,fs->fileBuf))
{ // error
//printf(" error reading\n");
delete fs;
fs=0;
}
else
{
fs->oldFileBuf = g_inputBuf;
fs->oldFileBufPos = g_inputBufPos;
}
#if 0
QCString filterName = getFileFilter(absName);
if (!filterName.isEmpty())
{
...
...
@@ -256,6 +275,8 @@ static FileState *checkAndOpenFile(const QCString &fileName,bool &alreadyInclude
{
fs->oldYYin = preYYin;
}
#endif
}
return fs;
}
...
...
@@ -1155,9 +1176,9 @@ static void readIncludeFile(const QCString &inc)
uint i=0;
// find the start of the include file name
while (i<inc.length() &&
while (i<inc.length() &&
(inc.at(i)==' ' || inc.at(i)=='"' || inc.at(i)=='<')
) i++;
) i++;
uint s=i;
// was it a local include?
...
...
@@ -1190,13 +1211,13 @@ static void readIncludeFile(const QCString &inc)
}
if (oldFileDef)
{
// add include dependency to the file in which the #include was found
oldFileDef->addIncludeDependency(g_yyFileDef,incFileName,localInclude,g_isImported);
// add included by dependency
// add include dependency to the file in which the #include was found
oldFileDef->addIncludeDependency(g_yyFileDef,incFileName,localInclude,g_isImported);
// add included by dependency
if (g_yyFileDef)
{
//printf("Adding include dependency %s->%s\n",oldFileDef->name().data(),incFileName.data());
g_yyFileDef->addIncludedByDependency(oldFileDef,oldFileDef->docName(),localInclude,g_isImported);
//printf("Adding include dependency %s->%s\n",oldFileDef->name().data(),incFileName.data());
g_yyFileDef->addIncludedByDependency(oldFileDef,oldFileDef->docName(),localInclude,g_isImported);
}
}
fs->bufState=YY_CURRENT_BUFFER;
...
...
@@ -1213,8 +1234,11 @@ static void readIncludeFile(const QCString &inc)
outputArray(lineStr.data(),lineStr.length());
//fprintf(stderr,"Switching to include file %s\n",incFileName.data());
preYYin=fs->filePtr;
yy_switch_to_buffer(yy_create_buffer(preYYin, YY_BUF_SIZE));
//preYYin=fs->filePtr;
//yy_switch_to_buffer(yy_create_buffer(preYYin, YY_BUF_SIZE));
g_inputBuf=&fs->fileBuf;
g_inputBufPos=0;
yy_switch_to_buffer(yy_create_buffer(0, YY_BUF_SIZE));
}
else
{
...
...
@@ -1309,6 +1333,7 @@ static char resolveTrigraph(char c)
static int yyread(char *buf,int max_size)
{
#if 0
int len = fread( buf, 1, max_size, preYYin );
if (len==0 && ferror( yyin ))
{
...
...
@@ -1316,6 +1341,13 @@ static int yyread(char *buf,int max_size)
return len;
}
return filterCRLF(buf,len);
#endif
int bytesInBuf = g_inputBuf->curPos()-g_inputBufPos;
int bytesToCopy = QMIN(max_size,bytesInBuf);
memcpy(buf,g_inputBuf->data()+g_inputBufPos,bytesToCopy);
g_inputBufPos+=bytesToCopy;
return bytesToCopy;
}
/* ----------------------------------------------------------------- */
...
...
@@ -1590,7 +1622,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
g_incName=c;
BEGIN(Include);
}
<Command>
"define"{B}+
{
<Command>
("cmake")?"define"{B}+
{
//printf("!!!DefName\n");
BEGIN(DefName);
}
...
...
@@ -2231,6 +2263,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
{
FileState *fs=g_includeStack.pop();
//fileDefineCache->merge(g_yyFileName,fs->fileName);
#if 0
if (fs->isPlainFile)
{
if (fs->filePtr && fclose(fs->filePtr)!=0)
...
...
@@ -2247,11 +2280,14 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
}
fs->filePtr=0;
}
#endif
YY_BUFFER_STATE oldBuf = YY_CURRENT_BUFFER;
yy_switch_to_buffer( fs->bufState );
yy_delete_buffer( oldBuf );
g_yyLineNr=fs->lineNr;
preYYin = fs->oldYYin;
//preYYin = fs->oldYYin;
g_inputBuf = fs->oldFileBuf;
g_inputBufPos = fs->oldFileBufPos;
setFileName(fs->fileName.copy());
//fprintf(stderr,"######## FileName %s\n",g_yyFileName.data());
...
...
@@ -2264,6 +2300,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
delete fs; fs=0;
}
}
<*>"/*"/"*/" |
<*>"/*"[*]? {
outputArray(yytext,yyleng);
g_lastCContext=YY_START;
...
...
@@ -2385,14 +2422,18 @@ void cleanUpPreprocessor()
}
void preprocessFile(const char *fileName,BufStr &output)
void preprocessFile(const char *fileName,BufStr &
input,BufStr &
output)
{
uint orgOffset=output.curPos();
//printf("##########################\n%s\n####################\n",
// input.data());
g_macroExpansion = Config_getBool("MACRO_EXPANSION");
g_expandOnlyPredef = Config_getBool("EXPAND_ONLY_PREDEF");
g_curlyCount=0;
g_nospaces=FALSE;
g_inputBuf=&input;
g_inputBufPos=0;
g_outputBuf=&output;
g_includeStack.setAutoDelete(TRUE);
g_includeStack.clear();
...
...
@@ -2511,6 +2552,7 @@ void preprocessFile(const char *fileName,BufStr &output)
firstTime=FALSE;
}
#if 0
QCString inputFilter = getFileFilter(fileName);
if (inputFilter.isEmpty())
{
...
...
@@ -2532,6 +2574,7 @@ void preprocessFile(const char *fileName,BufStr &output)
return;
}
}
#endif
g_yyLineNr = 1;
g_level = 0;
g_ifcount = 0;
...
...
@@ -2544,10 +2587,13 @@ void preprocessFile(const char *fileName,BufStr &output)
preYYlex();
g_lexInit=TRUE;
#if 0
if (inputFilter.isEmpty())
fclose(preYYin);
else
portable_pclose(preYYin);
#endif
if (Debug::isFlagSet(Debug::Preprocessor))
{
...
...
src/scanner.l
View file @
1042ef3a
...
...
@@ -1124,7 +1124,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
<FindMembers>{BN}{1,80} {
lineCount();
}
<FindMembers>"@"
{ID}{BN}*"("
{
<FindMembers>"@"
({ID}".")*{ID}{BN}*"("
{
if (insideJava) // Java annotation
{
lineCount();
...
...
@@ -2010,7 +2010,8 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
lastCPPContext = YY_START;
BEGIN( SkipCPP ) ;
}
<FindMembers,FindFields>{B}*"#"{B}*"define" { if (insidePHP)
<FindMembers,FindFields>{B}*"#"{B}*("cmake")?"define" {
if (insidePHP)
REJECT;
current->bodyLine = yyLineNr;
BEGIN( Define );
...
...
@@ -2674,6 +2675,10 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
current->type=current->type.simplifyWhiteSpace();
current->args=removeRedundantWhiteSpace(current->args);
current->name=current->name.stripWhiteSpace();
if (current->section==Entry::CLASS_SEC) // remove spec for "struct Bla bla;"
{
current->spec = 0;
}
current->section = Entry::VARIABLE_SEC ;
current->fileName = yyFileName;
current->startLine = yyLineNr;
...
...
src/translator_cz.h
View file @
1042ef3a
...
...
@@ -20,7 +20,7 @@
// Updates:
// --------
// 2009/0
8/24 -
// 2009/0
9/02 - Updates for "new since 1.6.0 (mainly for the new search engine)".
// 2008/06/09 - Corrections in trLegendDocs().
// 2007/11/13 - Update for "new since 1.5.4 (mainly for Fortran)".
// 2007/03/20 - removing decode(), conversion of literals to UTF-8.
...
...
@@ -1821,7 +1821,7 @@ class TranslatorCzech : public Translator
/*! directory relation for \a name */
virtual
QCString
trDirRelation
(
const
char
*
name
)
{
return
"Relace "
+
QCString
(
name
);
return
"Relace "
+
QCString
(
name
);
}
/*! Loading message shown when loading search results */
...
...
@@ -1847,7 +1847,6 @@ class TranslatorCzech : public Translator
{
return
"Nic se nenašlo"
;
}
};
#endif // TRANSLATOR_CZ_H
src/translator_fr.h
View file @
1042ef3a
...
...
@@ -158,7 +158,7 @@ class TranslatorFrench : public TranslatorAdapter_1_5_4
/*! header that is put before the list of typedefs. */
virtual
QCString
trMemberTypedefDocumentation
()
{
return
"Documentation des définitions de type membre
s
"
;
}
return
"Documentation des définitions de type membre"
;
}
/*! header that is put before the list of enumerations. */
virtual
QCString
trMemberEnumerationDocumentation
()
...
...
@@ -386,7 +386,7 @@ class TranslatorFrench : public TranslatorAdapter_1_5_4
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_FOR_C"
))
{
result
+=
"des fonctions, variables, macros,
e
numérations, et définitions de type "
;
result
+=
"des fonctions, variables, macros,
é
numérations, et définitions de type "
;
}
else
{
...
...
@@ -573,7 +573,7 @@ class TranslatorFrench : public TranslatorAdapter_1_5_4
*/
virtual
QCString
trTypedefDocumentation
()
{
return
"Documentation des définition de type"
;
}
return
"Documentation des définition
s
de type"
;
}
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration types
...
...
@@ -812,7 +812,7 @@ class TranslatorFrench : public TranslatorAdapter_1_5_4
if
(
i
<
numEntries
-
2
)
// not the fore last entry
result
+=
", "
;
else
// the fore last entry
result
+=
"
,
et "
;
result
+=
" et "
;
}
}
return
result
;
...
...
@@ -998,7 +998,7 @@ class TranslatorFrench : public TranslatorAdapter_1_5_4
/*! header that is put before the list of constructor/destructors. */
virtual
QCString
trConstructorDocumentation
()
{
return
"Documentation des constructeurs et destructeur"
;
return
"Documentation des constructeurs et destructeur
s
"
;
}
/*! Used in the file documentation to point to the corresponding sources. */
virtual
QCString
trGotoSourceCode
()
...
...
@@ -1192,7 +1192,7 @@ class TranslatorFrench : public TranslatorAdapter_1_5_4
"};
\n
"
"
\\
endcode
\n
"
"Si la valeur 240 est attribuée au tag
\\
c MAX_DOT_GRAPH_HEIGHT "
"du fichier de configuration, cela gén
è
rera le graphe suivant :"
"du fichier de configuration, cela gén
é
rera le graphe suivant :"
"<p><center><img alt=
\"\"
src=
\"
graph_legend."
+
Config_getEnum
(
"DOT_IMAGE_FORMAT"
)
+
"
\"
></center>
\n
"
"<p>
\n
"
"Les rectangles du graphe ci-dessus ont la signification suivante :
\n
"
...
...
@@ -1736,6 +1736,41 @@ class TranslatorFrench : public TranslatorAdapter_1_5_4
*/
virtual
QCString
trEnumerationValueDocumentation
()
{
return
"Documentation des énumérations"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.6.0 (mainly for the new search engine)
//////////////////////////////////////////////////////////////////////////
/*! directory relation for \a name */
virtual
QCString
trDirRelation
(
const
char
*
name
)
{
return
QCString
(
name
)
+
" Relation"
;
}
/*! Loading message shown when loading search results */
virtual
QCString
trLoading
()
{
return
"Chargement..."
;
}
/*! Label used for search results in the global namespace */
virtual
QCString
trGlobalNamespace
()
{
return
"Espace de nommage global"
;
}
/*! Message shown while searching */
virtual
QCString
trSearching
()
{
return
"Recherche..."
;
}
/*! Text shown when no search results are found */
virtual
QCString
trNoMatches
()
{
return
"Aucune correspondance"
;
}
};
#endif
...
...
src/translator_pl.h
View file @
1042ef3a
This diff is collapsed.
Click to expand it.
src/util.cpp
View file @
1042ef3a
...
...
@@ -49,6 +49,7 @@
#include "textdocvisitor.h"
#include "portable.h"
#include "parserintf.h"
#include "bufstr.h"
#define ENABLE_TRACINGSUPPORT 0
...
...
@@ -5515,31 +5516,48 @@ QCString substituteTemplateArgumentsInString(
{
//printf("n=%s formArg->type='%s' formArg->name='%s' formArg->defval='%s'\n",
// n.data(),formArg->type.data(),formArg->name.data(),formArg->defval.data());
//printf(">> formArg->name='%s' actArg->type='%s' actArg->name='%s'\n",
// formArg->name.data(),actArg->type.data(),actArg->name.data()
// );
if
(
formArg
->
name
==
n
&&
actArg
&&
!
actArg
->
type
.
isEmpty
())
// base class is a template argument
{
// replace formal argument with the actual argument of the instance
if
(
actArg
->
name
.
isEmpty
())
if
(
!
leftScopeMatch
(
actArg
->
type
,
n
))
// the scope guard is to prevent recursive lockup for
// template<class A> class C : public<A::T>,
// where A::T would become A::T::T here,
// since n==A and actArg->type==A::T
// see bug595833 for an example
{
result
+=
actArg
->
type
+
" "
;
}
else
// for case where the actual arg is something like "unsigned int"
// the "int" part is in actArg->name.
{
result
+=
actArg
->
type
+
" "
+
actArg
->
name
+
" "
;
if
(
actArg
->
name
.
isEmpty
())
{
result
+=
actArg
->
type
+
" "
;
found
=
TRUE
;
}
else
// for case where the actual arg is something like "unsigned int"
// the "int" part is in actArg->name.
{
result
+=
actArg
->
type
+
" "
+
actArg
->
name
+
" "
;
found
=
TRUE
;
}
}
found
=
TRUE
;
}
else
if
(
formArg
->
name
==
n
&&
actArg
==
0
&&
!
formArg
->
defval
.
isEmpty
()
&&
formArg
->
defval
!=
name
/* to prevent recursion */
else
if
(
formArg
->
name
==
n
&&
actArg
==
0
&&
!
formArg
->
defval
.
isEmpty
()
&&
formArg
->
defval
!=
name
/* to prevent recursion */
)
{
result
+=
substituteTemplateArgumentsInString
(
formArg
->
defval
,
formalArgs
,
actualArgs
)
+
" "
;
found
=
TRUE
;
}
}
else
if
(
formArg
->
name
==
n
&&
actArg
==
0
&&
!
formArg
->
defval
.
isEmpty
()
&&
formArg
->
defval
!=
name
/* to prevent recursion */
)
else
if
(
formArg
->
name
==
n
&&
actArg
==
0
&&
!
formArg
->
defval
.
isEmpty
()
&&
formArg
->
defval
!=
name
/* to prevent recursion */
)
{
result
+=
substituteTemplateArgumentsInString
(
formArg
->
defval
,
formalArgs
,
actualArgs
)
+
" "
;
found
=
TRUE
;
...
...
@@ -5777,12 +5795,7 @@ PageDef *addRelatedPage(const char *name,const QCString &ptitle,
pd
->
setReference
(
tagInfo
->
tagName
);
}
QCString
pageName
;
if
(
Config_getBool
(
"CASE_SENSE_NAMES"
))
pageName
=
pd
->
name
();
else
pageName
=
pd
->
name
().
lower
();
pd
->
setFileName
(
pageName
);
pd
->
setFileName
(
convertNameToFile
(
pd
->
name
(),
FALSE
));
//printf("Appending page `%s'\n",baseName.data());
Doxygen
::
pageSDict
->
append
(
baseName
,
pd
);
...
...
@@ -5799,13 +5812,9 @@ PageDef *addRelatedPage(const char *name,const QCString &ptitle,
{
file
=
gd
->
getOutputFileBase
();
}
else
if
(
pd
->
getGroupDef
())
else
{
file
=
pd
->
getGroupDef
()
->
getOutputFileBase
().
copy
();
}
else
{
file
=
pageName
;
file
=
pd
->
getOutputFileBase
();
}
SectionInfo
*
si
=
new
SectionInfo
(
file
,
pd
->
name
(),
pd
->
title
(),
SectionInfo
::
Page
,
pd
->
getReference
());
...
...
@@ -5814,7 +5823,7 @@ PageDef *addRelatedPage(const char *name,const QCString &ptitle,
// si->fileName.data());
//printf(" SectionInfo: sec=%p sec->fileName=%s\n",si,si->fileName.data());
//printf("Adding section key=%s si->fileName=%s\n",pageName.data(),si->fileName.data());
Doxygen
::
sectionDict
.
insert
(
p
ageName
,
si
);
Doxygen
::
sectionDict
.
insert
(
p
d
->
name
()
,
si
);
}
}
return
pd
;
...
...
@@ -5823,6 +5832,7 @@ PageDef *addRelatedPage(const char *name,const QCString &ptitle,
//----------------------------------------------------------------------------
void
addRefItem
(
const
QList
<
ListItemInfo
>
*
sli
,
const
char
*
key
,
const
char
*
prefix
,
const
char
*
name
,
const
char
*
title
,
const
char
*
args
)
{
//printf("addRefItem(sli=%p,prefix=%s,name=%s,title=%s,args=%s)\n",sli,prefix,name,title,args);
...
...
@@ -5834,7 +5844,6 @@ void addRefItem(const QList<ListItemInfo> *sli,
{
RefList
*
refList
=
Doxygen
::
xrefLists
->
find
(
lii
->
type
);
if
(
refList
#if 0
&&
(
// either not a built-in list or the list is enabled
...
...
@@ -5843,7 +5852,6 @@ void addRefItem(const QList<ListItemInfo> *sli,
(
lii
->
type
!=
"bug"
||
Config_getBool
(
"GENERATE_BUGLIST"
))
&&
(
lii
->
type
!=
"deprecated"
||
Config_getBool
(
"GENERATE_DEPRECATEDLIST"
))
)
#endif
)
{
RefItem
*
item
=
refList
->
getRefItem
(
lii
->
itemId
);
...
...
@@ -5854,7 +5862,7 @@ void addRefItem(const QList<ListItemInfo> *sli,
item
->
title
=
title
;
item
->
args
=
args
;
refList
->
insertIntoList
(
title
,
item
);
refList
->
insertIntoList
(
key
,
item
);
#if 0
...
...
@@ -6843,3 +6851,121 @@ void stackTrace()
#endif
}
static
int
transcodeCharacterBuffer
(
BufStr
&
srcBuf
,
int
size
,
const
char
*
inputEncoding
,
const
char
*
outputEncoding
)
{
if
(
inputEncoding
==
0
||
outputEncoding
==
0
)
return
size
;
if
(
qstricmp
(
inputEncoding
,
outputEncoding
)
==
0
)
return
size
;
void
*
cd
=
portable_iconv_open
(
outputEncoding
,
inputEncoding
);
if
(
cd
==
(
void
*
)(
-
1
))
{
err
(
"Error: unsupported character conversion: '%s'->'%s': %s
\n
"
"Check the INPUT_ENCODING setting in the config file!
\n
"
,
inputEncoding
,
outputEncoding
,
strerror
(
errno
));
exit
(
1
);
}
int
tmpBufSize
=
size
*
4
+
1
;
BufStr
tmpBuf
(
tmpBufSize
);
size_t
iLeft
=
size
;
size_t
oLeft
=
tmpBufSize
;
const
char
*
srcPtr
=
srcBuf
.
data
();
char
*
dstPtr
=
tmpBuf
.
data
();
uint
newSize
=
0
;
if
(
!
portable_iconv
(
cd
,
&
srcPtr
,
&
iLeft
,
&
dstPtr
,
&
oLeft
))
{
newSize
=
tmpBufSize
-
oLeft
;
srcBuf
.
shrink
(
newSize
);
strncpy
(
srcBuf
.
data
(),
tmpBuf
.
data
(),
newSize
);
//printf("iconv: input size=%d output size=%d\n[%s]\n",size,newSize,srcBuf.data());
}
else
{
err
(
"Error: failed to translate characters from %s to %s: check INPUT_ENCODING
\n
"
,
inputEncoding
,
outputEncoding
);
exit
(
1
);
}
portable_iconv_close
(
cd
);
return
newSize
;
}
//! read a file name \a fileName and optionally filter and transcode it
bool
readInputFile
(
const
char
*
fileName
,
BufStr
&
inBuf
)
{
// try to open file
int
size
=
0
;
//uint oldPos = dest.curPos();
//printf(".......oldPos=%d\n",oldPos);
QFileInfo
fi
(
fileName
);
if
(
!
fi
.
exists
())
return
FALSE
;
QCString
filterName
=
getFileFilter
(
fileName
);
if
(
filterName
.
isEmpty
())
{
QFile
f
(
fileName
);
if
(
!
f
.
open
(
IO_ReadOnly
))
{
err
(
"Error: could not open file %s
\n
"
,
fileName
);
return
FALSE
;
}
size
=
fi
.
size
();
// read the file
inBuf
.
skip
(
size
);
if
(
f
.
readBlock
(
inBuf
.
data
()
/*+oldPos*/
,
size
)
!=
size
)
{
err
(
"Error while reading file %s
\n
"
,
fileName
);
return
FALSE
;
}
}
else
{
QCString
cmd
=
filterName
+
"
\"
"
+
fileName
+
"
\"
"
;
Debug
::
print
(
Debug
::
ExtCmd
,
0
,
"Executing popen(`%s`)
\n
"
,
cmd
.
data
());
FILE
*
f
=
portable_popen
(
cmd
,
"r"
);
if
(
!
f
)
{
err
(
"Error: could not execute filter %s
\n
"
,
filterName
.
data
());
return
FALSE
;
}
const
int
bufSize
=
1024
;
char
buf
[
bufSize
];
int
numRead
;
while
((
numRead
=
fread
(
buf
,
1
,
bufSize
,
f
))
>
0
)
{
//printf(">>>>>>>>Reading %d bytes\n",numRead);
inBuf
.
addArray
(
buf
,
numRead
),
size
+=
numRead
;
}
portable_pclose
(
f
);
}
if
(
inBuf
.
size
()
>=
2
&&
((
inBuf
.
at
(
0
)
==-
1
&&
inBuf
.
at
(
1
)
==-
2
)
||
// Litte endian BOM
(
inBuf
.
at
(
0
)
==-
2
&&
inBuf
.
at
(
1
)
==-
1
)
// big endian BOM
)
)
// UCS-2 encoded file
{
transcodeCharacterBuffer
(
inBuf
,
inBuf
.
curPos
(),
"UCS-2"
,
"UTF-8"
);
}
else
// transcode according to the INPUT_ENCODING setting
{
// do character transcoding if needed.
transcodeCharacterBuffer
(
inBuf
,
inBuf
.
curPos
(),
Config_getString
(
"INPUT_ENCODING"
),
"UTF-8"
);
}
inBuf
.
addChar
(
'\n'
);
/* to prevent problems under Windows ? */
// and translate CR's
size
=
inBuf
.
curPos
();
int
newSize
=
filterCRLF
(
inBuf
.
data
(),
size
);
//printf("filter char at %p size=%d newSize=%d\n",dest.data()+oldPos,size,newSize);
if
(
newSize
!=
size
)
// we removed chars
{
inBuf
.
shrink
(
newSize
);
// resize the array
//printf(".......resizing from %d to %d result=[%s]\n",oldPos+size,oldPos+newSize,dest.data());
}
inBuf
.
at
(
inBuf
.
curPos
())
=
'\0'
;
return
TRUE
;
}
src/util.h
View file @
1042ef3a
...
...
@@ -53,6 +53,7 @@ class PageDef;
struct
SectionInfo
;
class
QDir
;
class
Definition
;
class
BufStr
;
//--------------------------------------------------------------------
...
...
@@ -279,7 +280,8 @@ int getScopeFragment(const QCString &s,int p,int *l);
int
filterCRLF
(
char
*
buf
,
int
len
);
void
addRefItem
(
const
QList
<
ListItemInfo
>
*
sli
,
const
char
*
prefix
,
const
char
*
name
,
const
char
*
title
,
const
char
*
args
=
0
);
const
char
*
key
,
const
char
*
name
,
const
char
*
title
,
const
char
*
args
);
PageDef
*
addRelatedPage
(
const
char
*
name
,
const
QCString
&
ptitle
,
const
QCString
&
doc
,
QList
<
SectionInfo
>
*
anchors
,
...
...
@@ -363,5 +365,8 @@ QCString convertCharEntitiesToUTF8(const QCString &s);
bool
usingTreeIndex
();
void
stackTrace
();
bool
readInputFile
(
const
char
*
fileName
,
BufStr
&
inBuf
);
#endif
src/vhdldocgen.cpp
View file @
1042ef3a
...
...
@@ -204,52 +204,32 @@ ClassDef *VhdlDocGen::getClass(const char *name)
}
/*!
* adds
components to their entities
* adds
architectures to their entity
*/
void
VhdlDocGen
::
computeVhdlComponentRelations
(
const
QDict
<
EntryNav
>&
classEntries
,
FileStorage
*
g_storage
)
void
VhdlDocGen
::
computeVhdlComponentRelations
()
{
ClassSDict
::
Iterator
cli
(
*
Doxygen
::
classSDict
);
for
(
cli
.
toFirst
();
cli
.
current
();
++
cli
)
cli
.
current
()
->
visited
=
FALSE
;
QDictIterator
<
EntryNav
>
edi
(
classEntries
);
EntryNav
*
rootNav
;
for
(;(
rootNav
=
edi
.
current
());
++
edi
)
{
ClassDef
*
cd
;
rootNav
->
loadEntry
(
g_storage
);
Entry
*
root
=
rootNav
->
entry
();
QCString
bName
=
stripAnonymousNamespaceScope
(
rootNav
->
name
());
if
((
cd
=
getClass
(
bName
)))
for
(
cli
.
toFirst
();
cli
.
current
();
++
cli
)
{
cli
.
current
()
->
visited
=
FALSE
;
ClassDef
*
cd
=
cli
.
current
();
if
((
VhdlDocGen
::
VhdlClasses
)
cd
->
protection
()
==
VhdlDocGen
::
ARCHITECTURECLASS
)
{
Q
ListIterator
<
BaseInfo
>
bii
(
*
root
->
extends
);
BaseInfo
*
bi
=
0
;
for
(
bii
.
toFirst
();(
bi
=
bii
.
current
());
++
bii
)
Q
CString
bName
=
cd
->
name
(
);
int
i
=
bName
.
find
(
"::"
)
;
if
(
i
>
0
)
{
ClassDef
*
baseDef
=
getClass
(
bi
->
name
);
if
(
baseDef
&&
baseDef
!=
cd
)
{
QCString
cc
=
VhdlDocGen
::
getClassName
(
cd
);
ClassDef
*
ccdef
=
getClass
(
cc
);
if
(
ccdef
==
0
)
break
;
int
ii
=
ccdef
->
protection
();
int
jj
=
baseDef
->
protection
();
if
(
ii
==
VhdlDocGen
::
ENTITYCLASS
&&
jj
==
VhdlDocGen
::
ENTITYCLASS
&&
(
ccdef
!=
baseDef
))
{
ccdef
->
insertBaseClass
(
baseDef
,
bi
->
name
,
Public
,
Normal
,
0
);
baseDef
->
insertSubClass
(
ccdef
,
Public
,
bi
->
virt
,
0
);
}
}
else
{
if
(
Config_getBool
(
"WARNINGS"
))
warn
(
rootNav
->
fileDef
()
->
fileName
().
data
(),
root
->
startLine
,
"found component without entity: [%s]"
,
bi
->
name
.
data
());
}
}
//for
}
//if
rootNav
->
releaseEntry
();
}
// for
QCString
entityName
=
bName
.
left
(
i
);
ClassDef
*
classEntity
=
Doxygen
::
classSDict
->
find
(
entityName
);
// entity for architecutre ?
if
(
classEntity
)
{
classEntity
->
insertBaseClass
(
cd
,
bName
,
Public
,
Normal
,
0
);
cd
->
insertSubClass
(
classEntity
,
Public
,
Normal
,
0
);
}
}
}
}
}
// computeVhdlComponentRelations
...
...
src/vhdldocgen.h
View file @
1042ef3a
...
...
@@ -105,7 +105,7 @@ class VhdlDocGen
static
void
debugClassName
(
ClassSDict
*
);
//static void MergeFuncDoc(Entry* p,Entry* root);
static
void
computeVhdlComponentRelations
(
const
QDict
<
EntryNav
>&
,
FileStorage
*
);
static
void
computeVhdlComponentRelations
();
//static void addVariableToComponents(EntryNav *rootNav,ClassDef *cd, MemberDef::MemberType mtype, const QCString &name, bool fromAnnScope,MemberDef *fromAnnMemb,Protection prot,bool related);
...
...
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