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
01147699
Commit
01147699
authored
Jun 10, 2007
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.5.2-20070610
parent
0b087b99
Changes
33
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
901 additions
and
714 deletions
+901
-714
INSTALL
INSTALL
+2
-2
Makefile.in
Makefile.in
+10
-12
README
README
+2
-2
configure
configure
+2
-5
Doxyfile
doc/Doxyfile
+1
-1
config.doc
doc/config.doc
+18
-4
index.doc
doc/index.doc
+1
-0
install.doc
doc/install.doc
+12
-8
xmlcmds.doc
doc/xmlcmds.doc
+6
-1
classdef.cpp
src/classdef.cpp
+188
-177
classdef.h
src/classdef.h
+1
-0
cmdmapper.cpp
src/cmdmapper.cpp
+5
-3
cmdmapper.h
src/cmdmapper.h
+16
-12
commentcnv.l
src/commentcnv.l
+42
-35
config.l
src/config.l
+27
-15
docparser.cpp
src/docparser.cpp
+191
-7
docparser.h
src/docparser.h
+3
-0
dot.cpp
src/dot.cpp
+112
-364
dot.h
src/dot.h
+9
-3
doxygen.cpp
src/doxygen.cpp
+41
-40
filedef.cpp
src/filedef.cpp
+3
-3
htmldocvisitor.cpp
src/htmldocvisitor.cpp
+9
-1
htmlgen.cpp
src/htmlgen.cpp
+1
-1
index.cpp
src/index.cpp
+2
-1
latexgen.cpp
src/latexgen.cpp
+5
-4
memberdef.cpp
src/memberdef.cpp
+9
-4
msc.cpp
src/msc.cpp
+3
-3
namespacedef.cpp
src/namespacedef.cpp
+1
-1
translator_cn.h
src/translator_cn.h
+2
-1
util.cpp
src/util.cpp
+165
-1
util.h
src/util.h
+10
-1
xmlgen.cpp
src/xmlgen.cpp
+1
-1
tmake.conf
tmake/lib/solaris-g++/tmake.conf
+1
-1
No files found.
INSTALL
View file @
01147699
DOXYGEN Version 1.5.2-20070
506
DOXYGEN Version 1.5.2-20070
610
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (
06 May
2007)
Dimitri van Heesch (
10 June
2007)
Makefile.in
View file @
01147699
...
...
@@ -54,26 +54,24 @@ install: doxywizard_install
$(INSTTOOL)
-m
755 bin/doxygen
$(INSTALL)
/bin
$(INSTTOOL)
-m
755 bin/doxytag
$(INSTALL)
/bin
$(INSTTOOL)
-d
$(INSTALL)
/
$(MAN1DIR)
cat
doc/doxygen.1 |
sed
-e
"s/DATE/
$(DATE)
/g"
-e
"s/VERSION/
$(VERSION)
/g"
>
$(INSTALL)
/
$(MAN1DIR)
/doxygen.1
;
\
cat
doc/doxytag.1 |
sed
-e
"s/DATE/
$(DATE)
/g"
-e
"s/VERSION/
$(VERSION)
/g"
>
$(INSTALL)
/
$(MAN1DIR)
/doxytag.1
;
\
cat
doc/doxywizard.1 |
sed
-e
"s/DATE/
$(DATE)
/g"
-e
"s/VERSION/
$(VERSION)
/g"
>
$(INSTALL)
/
$(MAN1DIR)
/doxywizard.1
;
cat
doc/doxygen.1 |
sed
-e
"s/DATE/
$(DATE)
/g"
-e
"s/VERSION/
$(VERSION)
/g"
doxygen.1
$(INSTTOOL)
-m
644 doxygen.1
$(INSTALL)
/
$(MAN1DIR)
/doxygen.1
rm
doxygen.1
cat
doc/doxytag.1 |
sed
-e
"s/DATE/
$(DATE)
/g"
-e
"s/VERSION/
$(VERSION)
/g"
doxytag.1
$(INSTTOOL)
-m
644 doxytag.1
$(INSTALL)
/
$(MAN1DIR)
/doxytag.1
rm
doxytag.1
cat
doc/doxywizard.1 |
sed
-e
"s/DATE/
$(DATE)
/g"
-e
"s/VERSION/
$(VERSION)
/g"
doxywizard.1
$(INSTTOOL)
-m
644 doxywizard.1
$(INSTALL)
/
$(MAN1DIR)
/doxywizard.1
rm
doxywizard
install_docs
:
$(INSTTOOL)
-d
$(DOCDIR)
$(MAKE)
-C
examples
$(MAKE)
-C
doc
$(MAKE)
-C
latex
cp
latex/doxygen_manual.pdf
$(DOCDIR)
#cp -r doc
$(DOCDIR)
$(INSTTOOL)
-m
644 latex/doxygen_manual.pdf
$(DOCDIR)
cp
-r
examples
$(DOCDIR)
cp
-r
html
$(DOCDIR)
#echo "DOXYGEN =
$(INSTALL)
" >
$(DOCDIR)
/doc/Makefile
#echo "
DOXYDOCS
=
..
" >>
$(DOCDIR)
/doc/Makefile
#echo "
VERSION
=
$(VERSION)
" >>
$(DOCDIR)
/doc/Makefile
#echo "
PERL
=
$(PERL)
" >>
$(DOCDIR)
/doc/Makefile
#cat doc/Makefile.in >>
$(DOCDIR)
/doc/Makefile
#rm -rf
$(DOCDIR)
/doc
#rm -rf
$(DOCDIR)
/latex
docs
:
FORCE
cd
examples
;
$(MAKE)
...
...
README
View file @
01147699
DOXYGEN Version 1.5.2_20070
506
DOXYGEN Version 1.5.2_20070
610
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) (
06 May
2007)
Dimitri van Heesch (dimitri@stack.nl) (
10 June
2007)
configure
View file @
01147699
...
...
@@ -20,7 +20,7 @@ doxygen_version_minor=5
doxygen_version_revision
=
2
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn
=
20070
506
doxygen_version_mmn
=
20070
610
bin_dirs
=
`
echo
$PATH
|
sed
-e
"s/:/ /g"
`
...
...
@@ -214,10 +214,7 @@ if test -z "$f_platform"; then
UNIX_SV:4.2
*
)
f_platform
=
unixware-g++
;;
Cygwin:
*
)
f_platform
=
win32-g++
;;
CYGWIN:
*
)
Cygwin:
*
|
CYGWIN:
*
)
f_platform
=
win32-g++
;;
*
MiNT:
*
)
...
...
doc/Doxyfile
View file @
01147699
...
...
@@ -33,7 +33,7 @@ CASE_SENSE_NAMES = NO
IMAGE_PATH = .
INPUT = index.doc install.doc starting.doc docblocks.doc lists.doc \
grouping.doc formulas.doc diagrams.doc preprocessing.doc \
autolink.doc output.doc external.doc faq.doc trouble.doc history.doc features.doc \
autolink.doc output.doc
custcmd.doc
external.doc faq.doc trouble.doc history.doc features.doc \
doxygen_usage.doc doxytag_usage.doc \
doxywizard_usage.doc installdox_usage.doc \
config.doc commands.doc htmlcmds.doc xmlcmds.doc language.doc \
...
...
doc/config.doc
View file @
01147699
...
...
@@ -163,6 +163,7 @@ followed by the descriptions of the tags grouped by category.
\
refitem
cfg_man_extension
MAN_EXTENSION
\
refitem
cfg_man_links
MAN_LINKS
\
refitem
cfg_man_output
MAN_OUTPUT
\
refitem
cfg_max_dot_graph_depth
MAX_DOT_GRAPH_DEPTH
\
refitem
cfg_max_initializer_lines
MAX_INITIALIZER_LINES
\
refitem
cfg_mscgen_path
MSCGEN_PATH
\
refitem
cfg_multiline_cpp_is_brief
MULTILINE_CPP_IS_BRIEF
...
...
@@ -1771,10 +1772,23 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
<
dt
>\
c
DOT_GRAPH_MAX_NODES
<
dd
>
\
addindex
DOT_GRAPH_MAX_NODES
The
\
c
MAX_DOT_GRAPH_MAX_NODES
tag
can
be
used
to
set
the
maximum
number
of
nodes
that
will
be
shown
in
the
graph
.
If
the
number
of
nodes
in
a
graph
becomes
larger
than
this
value
,
doxygen
will
truncate
the
graph
,
which
is
visualized
by
representing
a
node
as
a
red
box
.
Note
that
doxygen
will
always
show
the
root
nodes
and
its
direct
children
regardless
of
this
setting
.
nodes
that
will
be
shown
in
the
graph
.
If
the
number
of
nodes
in
a
graph
becomes
larger
than
this
value
,
doxygen
will
truncate
the
graph
,
which
is
visualized
by
representing
a
node
as
a
red
box
.
Note
that
doxygen
if
the
number
of
direct
children
of
the
root
node
in
a
graph
is
already
larger
than
\
c
MAX_DOT_GRAPH_NOTES
then
the
graph
will
not
be
shown
at
all
.
Also
note
that
the
size
of
a
graph
can
be
further
restricted
by
\
c
MAX_DOT_GRAPH_DEPTH
.
\
anchor
cfg_max_dot_graph_depth
<
dt
>\
c
MAX_DOT_GRAPH_DEPTH
<
dd
>
\
addindex
MAX_DOT_GRAPH_DEPTH
The
\
c
MAX_DOT_GRAPH_DEPTH
tag
can
be
used
to
set
the
maximum
depth
of
the
graphs
generated
by
dot
.
A
depth
value
of
3
means
that
only
nodes
reachable
from
the
root
by
following
a
path
via
at
most
3
edges
will
be
shown
.
Nodes
that
lay
further
from
the
root
node
will
be
omitted
.
Note
that
setting
this
option
to
1
or
2
may
greatly
reduce
the
computation
time
needed
for
large
code
bases
.
Also
note
that
the
size
of
a
graph
can
be
further
restricted
by
\
c
DOT_GRAPH_MAX_NODES
.
Using
a
depth
of
0
means
no
depth
restriction
(
the
default
).
\
anchor
cfg_dot_image_format
<
dt
>\
c
DOT_IMAGE_FORMAT
<
dd
>
...
...
doc/index.doc
View file @
01147699
...
...
@@ -75,6 +75,7 @@ The first part forms a user manual:
and members in the documentation.
<li>Section \ref output shows how to generate the various output formats
supported by doxygen.
<li>Section \ref custcmd show how to define and use custom commands in your comments.
<li>Section \ref external explains how to let doxygen create links to externally generated documentation.
<li>Section \ref faq gives answers to frequently asked questions.
<li>Section \ref trouble tells you what to do when you have problems.
...
...
doc/install.doc
View file @
01147699
...
...
@@ -38,14 +38,17 @@ If you downloaded the source distribution, you need at least the
following to build the executable:
<ul>
<li>The <a href="ftp://prep.ai.mit.edu/pub/gnu/">GNU</a> tools
flex, bison and
make
flex, bison and
GNU make, and strip
\addindex flex
\addindex bison
\addindex make
\addindex strip
<li>In order to generate a Makefile for your platform, you need
<a href="http://www.perl.com/">perl</a>
\latexonly(see {\tt http://www.perl.com/})\endlatexonly.
\addindex perl
<li>The configure script assume the availibility of standard Unix tools such
as sed, date, find, uname, mv, cp, cat, echo, tr, cd, and rm.
</ul>
To take full advantage of doxygen's features the following additional
...
...
@@ -56,7 +59,7 @@ tools should be installed.
<A HREF="http://www.trolltech.com/products/qt.html">Qt</A>
\latexonly(see {\tt http://www.trolltech.com/products/qt.html})\endlatexonly
\addindex Qt
version 3.
2
or higher.
version 3.
3
or higher.
This is needed to build the GUI front-end doxywizard.
<li>A \f$\mbox{\LaTeX}\f$ distribution: for instance
<a href="http://www.tug.org/interest.html#free">teTeX 1.0</a>
...
...
@@ -70,8 +73,11 @@ tools should be installed.
If you compile graphviz yourself, make sure you do include
freetype support (which requires the freetype library and header files),
otherwise the graphs will not render proper text labels.
<li>The ghostscript interpreter. To be found at
<li>For formulas or if you do not wish to use pdflatex, the ghostscript interpreter
is needed. You can find it at
<a href="http://www.ghostscript.com/">www.ghostscript.com</a>.
<li>In order to generate doxygen's own documentation, Python is needed, you
can find it at <a href="http://www.python.org">www.python.org</a>.
</ul>
Compilation is now done by performing the following steps:
...
...
@@ -104,7 +110,7 @@ Compilation is now done by performing the following steps:
See the <code>PLATFORMS</code> file for a list of possible platform
options.
If you have Qt-3.
2.x or higher
installed and want to build the GUI
If you have Qt-3.
3.x
installed and want to build the GUI
front-end, you should run the configure script with
the <code>--with-doxywizard</code> option:
...
...
@@ -136,13 +142,11 @@ Compilation is now done by performing the following steps:
To let doxygen generate the HTML documentation.
\note You will need the stream editor <code>sed</code> for this,
but this should be available on any Unix platform.
The HTML directory of the distribution will now contain the html
documentation (just point a HTML browser to the file
<code>index.html</code> in the
html directory).
html directory). You will need the <code>python</code> interpreter
for this.
<li>Optional: Generate a PDF version of the manual
(you will need <code>pdflatex</code>, <code>makeindex</code>, and
...
...
doc/xmlcmds.doc
View file @
01147699
...
...
@@ -39,7 +39,11 @@ Here is the list of tags supported by doxygen:
file. Ignored by doxygen at the moment.
<li><tt>\<item\></tt> List item. Can only be used inside a <tt>\<list\></tt> context.
<li><tt>\<list type="type"\></tt> Starts a list, supported types are <tt>bullet</tt>
or <tt>number</tt>. A list consists of a number of <tt>\<item\></tt> tags.
or <tt>number</tt> and <tt>table</tt>.
A list consists of a number of <tt>\<item\></tt> tags.
A list of type table, is a two column table which can have
a header.
<li><tt>\<listheader\></tt> Starts the header of a list of type "table".
<li><tt>\<para\></tt> Identifies a paragraph of text.
<li><tt>\<param name="paramName"\></tt> Marks a piece of text as the documentation
for parameter "paramName". Similar to
...
...
@@ -56,6 +60,7 @@ Here is the list of tags supported by doxygen:
to "member". Similar to using \ref cmdsa "\\sa" member.
<li><tt>\<summary\></tt> Identifies the brief description.
Similar to using \ref cmdbrief "\\brief".
<li><tt>\<term\></tt> Part of a <tt>\<list\></tt> command.
<li><tt>\<value\></tt> Identifies a property. Ignored by doxygen.
</ul>
...
...
src/classdef.cpp
View file @
01147699
This diff is collapsed.
Click to expand it.
src/classdef.h
View file @
01147699
...
...
@@ -310,6 +310,7 @@ class ClassDef : public Definition
void
mergeMembers
();
void
distributeMemberGroupDocumentation
();
void
writeDocumentation
(
OutputList
&
ol
);
void
writeClassDiagrams
(
OutputList
&
ol
);
void
writeDocumentationForInnerClasses
(
OutputList
&
ol
);
void
writeMemberDocumentation
(
OutputList
&
ol
);
void
writeMemberPages
(
OutputList
&
ol
);
...
...
src/cmdmapper.cpp
View file @
01147699
...
...
@@ -162,7 +162,8 @@ CommandMap htmlTagMap[] =
{
"exception"
,
XML_EXCEPTION
},
{
"include"
,
XML_INCLUDE
},
{
"item"
,
XML_ITEM
},
{
"list"
,
XML_LIST
},
{
"list"
,
XML_LIST
},
// type="table|bullet|number"
{
"listheader"
,
XML_LISTHEADER
},
{
"para"
,
XML_PARA
},
{
"param"
,
XML_PARAM
},
{
"paramref"
,
XML_PARAMREF
},
...
...
@@ -172,14 +173,15 @@ CommandMap htmlTagMap[] =
{
"see"
,
XML_SEE
},
{
"seealso"
,
XML_SEEALSO
},
{
"summary"
,
XML_SUMMARY
},
{
"term"
,
XML_TERM
},
{
"value"
,
XML_VALUE
},
{
0
,
0
}
};
//----------------------------------------------------------------------------
Mapper
*
Mappers
::
cmdMapper
=
new
Mapper
(
cmdMap
);
Mapper
*
Mappers
::
htmlTagMapper
=
new
Mapper
(
htmlTagMap
);
Mapper
*
Mappers
::
cmdMapper
=
new
Mapper
(
cmdMap
,
TRUE
);
Mapper
*
Mappers
::
htmlTagMapper
=
new
Mapper
(
htmlTagMap
,
FALSE
);
void
Mappers
::
freeMappers
()
{
...
...
src/cmdmapper.h
View file @
01147699
...
...
@@ -158,16 +158,18 @@ enum HtmlTagType
XML_INCLUDE
=
XML_CmdMask
+
5
,
XML_ITEM
=
XML_CmdMask
+
6
,
XML_LIST
=
XML_CmdMask
+
7
,
XML_PARA
=
XML_CmdMask
+
8
,
XML_PARAM
=
XML_CmdMask
+
9
,
XML_PARAMREF
=
XML_CmdMask
+
10
,
XML_PERMISSION
=
XML_CmdMask
+
11
,
XML_REMARKS
=
XML_CmdMask
+
12
,
XML_RETURNS
=
XML_CmdMask
+
13
,
XML_SEE
=
XML_CmdMask
+
14
,
XML_SEEALSO
=
XML_CmdMask
+
15
,
XML_SUMMARY
=
XML_CmdMask
+
16
,
XML_VALUE
=
XML_CmdMask
+
17
XML_LISTHEADER
=
XML_CmdMask
+
8
,
XML_PARA
=
XML_CmdMask
+
9
,
XML_PARAM
=
XML_CmdMask
+
10
,
XML_PARAMREF
=
XML_CmdMask
+
11
,
XML_PERMISSION
=
XML_CmdMask
+
12
,
XML_REMARKS
=
XML_CmdMask
+
13
,
XML_RETURNS
=
XML_CmdMask
+
14
,
XML_SEE
=
XML_CmdMask
+
15
,
XML_SEEALSO
=
XML_CmdMask
+
16
,
XML_SUMMARY
=
XML_CmdMask
+
17
,
XML_TERM
=
XML_CmdMask
+
18
,
XML_VALUE
=
XML_CmdMask
+
19
};
...
...
@@ -177,11 +179,12 @@ class Mapper
int
map
(
const
char
*
n
)
{
QCString
name
=
n
;
if
(
!
m_cs
)
name
=
name
.
lower
();
int
*
result
;
return
!
name
.
isEmpty
()
&&
(
result
=
m_map
.
find
(
name
.
lower
()
))
?
*
result
:
0
;
return
!
name
.
isEmpty
()
&&
(
result
=
m_map
.
find
(
name
))
?
*
result
:
0
;
}
Mapper
(
const
CommandMap
*
cm
)
:
m_map
(
89
)
Mapper
(
const
CommandMap
*
cm
,
bool
caseSensitive
)
:
m_map
(
89
),
m_cs
(
caseSensitive
)
{
m_map
.
setAutoDelete
(
TRUE
);
const
CommandMap
*
p
=
cm
;
...
...
@@ -193,6 +196,7 @@ class Mapper
}
private
:
QDict
<
int
>
m_map
;
bool
m_cs
;
};
struct
Mappers
...
...
src/commentcnv.l
View file @
01147699
...
...
@@ -61,6 +61,10 @@ static QCString g_blockName;
static int g_lastCommentContext;
static bool g_inSpecialComment;
static QCString g_aliasString;
static int g_blockCount;
static int g_lastBlockContext;
static void replaceCommentMarker(const char *s,int len)
{
const char *p=s;
...
...
@@ -223,27 +227,11 @@ static QCString handleCondCmdInAliases(const QCString &s)
/** 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 void replaceAliases(const char *s)
{
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);
QCString result = resolveAliasCmd(s);
//printf("replaceAliases(%s)->'%s'\n",s,result.data());
copyToOutput(result,result.length());
}
...
...
@@ -274,6 +262,7 @@ void replaceComment(int offset);
%x VerbatimCode
%x ReadLine
%x CondLine
%x ReadAliasArgs
%%
...
...
@@ -300,8 +289,7 @@ void replaceComment(int offset);
}
g_blockHeadCol=g_col;
copyToOutput("/**",3);
//copyToOutput(yytext+i,yyleng-i);
replaceAliases(yytext+i,yyleng-i);
replaceAliases(yytext+i);
g_inSpecialComment=TRUE;
BEGIN(SComment);
}
...
...
@@ -310,8 +298,7 @@ void replaceComment(int offset);
int i=17; //=strlen("//##Documentation");
g_blockHeadCol=g_col;
copyToOutput("/**",3);
//copyToOutput(yytext+i,yyleng-i);
replaceAliases(yytext+i,yyleng-i);
replaceAliases(yytext+i);
BEGIN(SComment);
}
<Scan>"//"/.*\n { /* one line C++ comment */
...
...
@@ -521,17 +508,37 @@ void replaceComment(int offset);
if (*yytext=='\n') g_lineNr++;
BEGIN(g_condCtx);
}
<CComment,ReadLine>[\\@][a-z_A-Z][a-z_A-Z0-9]* { // expand alias
QCString *pValue=Doxygen::aliasDict[yytext+1];
if (pValue)
{
QCString val = handleCondCmdInAliases(*pValue);
copyToOutput(val.data(),val.length());
}
else
{
copyToOutput(yytext,yyleng);
}
<CComment,ReadLine>[\\@][a-z_A-Z][a-z_A-Z0-9]* { // expand alias without arguments
replaceAliases(yytext);
}
<CComment,ReadLine>[\\@][a-z_A-Z][a-z_A-Z0-9]*"{" { // expand alias with arguments
g_lastBlockContext=YY_START;
g_blockCount=1;
g_aliasString=yytext;
BEGIN( ReadAliasArgs );
}
<ReadAliasArgs>[^{}\n\*]+ {
g_aliasString+=yytext;
}
<ReadAliasArgs>\n {
g_aliasString+=yytext;
g_lineNr++;
}
<ReadAliasArgs>"{" {
g_aliasString+=yytext;
g_blockCount++;
}
<ReadAliasArgs>"}" {
g_aliasString+=yytext;
g_blockCount--;
if (g_blockCount==0)
{
replaceAliases(g_aliasString);
BEGIN( g_lastBlockContext );
}
}
<ReadAliasArgs>. {
g_aliasString+=yytext;
}
<ReadLine>. {
copyToOutput(yytext,yyleng);
...
...
src/config.l
View file @
01147699
...
...
@@ -1078,12 +1078,13 @@ void Config::check()
s=aliasList.first();
while (s)
{
QRegExp re("[a-z_A-Z][a-z_A-Z0-9]*[ \t]*=");
QRegExp re1("[a-z_A-Z][a-z_A-Z0-9]*[ \t]*="); // alias without argument
QRegExp re2("[a-z_A-Z][a-z_A-Z0-9]*{[0-9]*}[ \t]*="); // alias with argument
QCString alias=s;
alias=alias.stripWhiteSpace();
if (alias.find(re)!=0)
if (alias.find(re
1)!=0 && alias.find(re2
)!=0)
{
config_err("Illegal alias format `%s'. Use \"name=value\"\n",
config_err("Illegal alias format `%s'. Use \"name=value\"
or \"name(n)=value\", where n is the number of arguments
\n",
alias.data());
}
s=aliasList.next();
...
...
@@ -1250,16 +1251,12 @@ void Config::check()
Config_getBool("INLINE_INFO")=FALSE;
}
#if 0
if (Config_getString("RTF_OUTPUT_ENCODING").isEmpty())
{
Config_getString("RTF_OUTPUT_ENCODING")="ISO-8859-1";
}
if (Config_getString("LATEX_OUTPUT_ENCODING").isEmpty())
int &depth = Config_getInt("MAX_DOT_GRAPH_DEPTH");
if (depth==0)
{
Config_getString("LATEX_OUTPUT_ENCODING")="ISO-8859-1"
;
depth=1000
;
}
#endif
// add default words if needed
QStrList &annotationFromBrief = Config_getList("ABBREVIATE_BRIEF");
...
...
@@ -2072,7 +2069,9 @@ void Config::create()
"If the SOURCE_BROWSER tag is set to YES then a list of source files will \n"
"be generated. Documented entities will be cross-referenced with these sources. \n"
"Note: To get rid of all source code in the generated output, make sure also \n"
"VERBATIM_HEADERS is set to NO. \n",
"VERBATIM_HEADERS is set to NO. If you have enabled CALL_GRAPH or CALLER_GRAPH \n"
"then you must also enable this option. If you don't then doxygen will produce \n"
"a warning and turn it on anyway \n",
FALSE
);
cb = addBool(
...
...
@@ -2895,14 +2894,27 @@ void Config::create()
"The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of \n"
"nodes that will be shown in the graph. If the number of nodes in a graph \n"
"becomes larger than this value, doxygen will truncate the graph, which is \n"
"visualized by representing a node as a red box. Note that doxygen will always \n"
"show the root nodes and its direct children regardless of this setting. \n",
"visualized by representing a node as a red box. Note that doxygen if the number \n"
"of direct children of the root node in a graph is already larger than \n"
"MAX_DOT_GRAPH_NOTES then the graph will not be shown at all. Also note \n"
"that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. \n",
0,10000, 50
);
ci->addDependency("HAVE_DOT");
ci = addInt(
"MAX_DOT_GRAPH_DEPTH",
"The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the \n"
"graphs generated by dot. A depth value of 3 means that only nodes reachable \n"
"from the root by following a path via at most 3 edges will be shown. Nodes \n"
"that lay further from the root node will be omitted. Note that setting this \n"
"option to 1 or 2 may greatly reduce the computation time needed for large \n"
"code bases. Also note that the size of a graph can be further restricted by \n"
"DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.\n",
0,1000,0
);
ci->addDependency("HAVE_DOT");
addObsolete("MAX_DOT_GRAPH_WIDTH");
addObsolete("MAX_DOT_GRAPH_HEIGHT");
addObsolete("MAX_DOT_GRAPH_DEPTH");
cb = addBool(
"DOT_TRANSPARENT",
"Set the DOT_TRANSPARENT tag to YES to generate images with a transparent \n"
...
...
src/docparser.cpp
View file @
01147699
...
...
@@ -536,6 +536,18 @@ static bool insideOL(DocNode *n)
//---------------------------------------------------------------------------
static
bool
insideTable
(
DocNode
*
n
)
{
while
(
n
)
{
if
(
n
->
kind
()
==
DocNode
::
Kind_HtmlTable
)
return
TRUE
;
n
=
n
->
parent
();
}
return
FALSE
;
}
//---------------------------------------------------------------------------
///*! Returns TRUE iff node n is a child of a language node */
//static bool insideLang(DocNode *n)
//{
...
...
@@ -2820,6 +2832,43 @@ int DocHtmlCell::parse()
return
retval
;
}
int
DocHtmlCell
::
parseXml
()
{
int
retval
=
RetVal_OK
;
g_nodeStack
.
push
(
this
);
DBG
((
"DocHtmlCell::parseXml() start
\n
"
));
// parse one or more paragraphs
bool
isFirst
=
TRUE
;
DocPara
*
par
=
0
;
do
{
par
=
new
DocPara
(
this
);
if
(
isFirst
)
{
par
->
markFirst
();
isFirst
=
FALSE
;
}
m_children
.
append
(
par
);
retval
=
par
->
parse
();
if
(
retval
==
TK_HTMLTAG
)
{
int
tagId
=
Mappers
::
htmlTagMapper
->
map
(
g_token
->
name
);
if
(
tagId
==
XML_ITEM
&&
g_token
->
endTag
)
// found </item> tag
{
retval
=
TK_NEWPARA
;
// ignore the tag
}
else
if
(
tagId
==
XML_DESCRIPTION
&&
g_token
->
endTag
)
// found </description> tag
{
retval
=
TK_NEWPARA
;
// ignore the tag
}
}
}
while
(
retval
==
TK_NEWPARA
);
if
(
par
)
par
->
markLast
();
DBG
((
"DocHtmlCell::parseXml() end
\n
"
));
DocNode
*
n
=
g_nodeStack
.
pop
();
ASSERT
(
n
==
this
);
return
retval
;
}
//---------------------------------------------------------------------------
int
DocHtmlRow
::
parse
()
...
...
@@ -2888,6 +2937,68 @@ endrow:
return
retval
;
}
int
DocHtmlRow
::
parseXml
(
bool
isHeading
)
{
int
retval
=
RetVal_OK
;
g_nodeStack
.
push
(
this
);
DBG
((
"DocHtmlRow::parseXml() start
\n
"
));
bool
isFirst
=
TRUE
;
DocHtmlCell
*
cell
=
0
;
// get next token
int
tok
=
doctokenizerYYlex
();
// skip whitespace
while
(
tok
==
TK_WHITESPACE
||
tok
==
TK_NEWPARA
)
tok
=
doctokenizerYYlex
();
// should find a html tag now
if
(
tok
==
TK_HTMLTAG
)
{
int
tagId
=
Mappers
::
htmlTagMapper
->
map
(
g_token
->
name
);
if
(
tagId
==
XML_TERM
&&
!
g_token
->
endTag
)
// found <term> tag
{
}
else
if
(
tagId
==
XML_DESCRIPTION
&&
!
g_token
->
endTag
)
// found <description> tag
{
}
else
// found some other tag
{
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: expected <term> or <description> tag but "
"found <%s> instead!"
,
g_token
->
name
.
data
());
doctokenizerYYpushBackHtmlTag
(
g_token
->
name
);
goto
endrow
;
}
}
else
if
(
tok
==
0
)
// premature end of comment
{
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: unexpected end of comment while looking"
" for a html description title"
);
goto
endrow
;
}
else
// token other than html token
{
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: expected <td> or <th> tag but found %s token instead!"
,
tokToString
(
tok
));
goto
endrow
;
}
do
{
cell
=
new
DocHtmlCell
(
this
,
g_token
->
attribs
,
isHeading
);
cell
->
markFirst
(
isFirst
);
isFirst
=
FALSE
;
m_children
.
append
(
cell
);
retval
=
cell
->
parseXml
();
}
while
(
retval
==
RetVal_TableCell
||
retval
==
RetVal_TableHCell
);
if
(
cell
)
cell
->
markLast
(
TRUE
);
endrow
:
DBG
((
"DocHtmlRow::parseXml() end
\n
"
));
DocNode
*
n
=
g_nodeStack
.
pop
();
ASSERT
(
n
==
this
);
return
retval
;
}
//---------------------------------------------------------------------------
int
DocHtmlTable
::
parse
()
...
...
@@ -2958,6 +3069,48 @@ getrow:
return
retval
==
RetVal_EndTable
?
RetVal_OK
:
retval
;
}
int
DocHtmlTable
::
parseXml
()
{
int
retval
=
RetVal_OK
;
g_nodeStack
.
push
(
this
);
DBG
((
"DocHtmlTable::parseXml() start
\n
"
));
// get next token
int
tok
=
doctokenizerYYlex
();
// skip whitespace
while
(
tok
==
TK_WHITESPACE
||
tok
==
TK_NEWPARA
)
tok
=
doctokenizerYYlex
();
// should find a html tag now
int
tagId
=
0
;
bool
isHeader
=
FALSE
;
if
(
tok
==
TK_HTMLTAG
)
{
tagId
=
Mappers
::
htmlTagMapper
->
map
(
g_token
->
name
);
if
(
tagId
==
XML_ITEM
&&
!
g_token
->
endTag
)
// found <item> tag
{
retval
=
RetVal_TableRow
;
}
if
(
tagId
==
XML_LISTHEADER
&&
!
g_token
->
endTag
)
// found <listheader> tag
{
retval
=
RetVal_TableRow
;
isHeader
=
TRUE
;
}
}
// parse one or more rows
while
(
retval
==
RetVal_TableRow
)
{
DocHtmlRow
*
tr
=
new
DocHtmlRow
(
this
,
g_token
->
attribs
);
m_children
.
append
(
tr
);
retval
=
tr
->
parseXml
(
isHeader
);
isHeader
=
FALSE
;
}
DBG
((
"DocHtmlTable::parseXml() end
\n
"
));
DocNode
*
n
=
g_nodeStack
.
pop
();
ASSERT
(
n
==
this
);
return
retval
==
RetVal_EndTable
?
RetVal_OK
:
retval
;
}
uint
DocHtmlTable
::
numCols
()
const
{
uint
cols
=
0
;
...
...
@@ -4788,6 +4941,10 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag
break
;
case
XML_EXAMPLE
:
case
XML_DESCRIPTION
:
if
(
insideTable
(
this
))
{
retval
=
RetVal_TableCell
;
}
break
;
case
XML_C
:
handleStyleEnter
(
this
,
m_children
,
DocStyleChange
::
Code
,
&
g_token
->
attribs
);
...
...
@@ -4836,19 +4993,31 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag
}
break
;
case
XML_ITEM
:
if
(
!
insideUL
(
this
)
&&
!
insideOL
(
this
))
case
XML_LISTHEADER
:
if
(
insideTable
(
this
))
{
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: lonely <item> tag found"
)
;
retval
=
RetVal_TableRow
;
}
else
else
if
(
insideUL
(
this
)
||
insideOL
(
this
))
{
retval
=
RetVal_ListItem
;
}
else
{
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: lonely <item> tag found"
);
}
break
;
case
XML_RETURNS
:
retval
=
handleSimpleSection
(
DocSimpleSect
::
Return
,
TRUE
);
g_hasReturnCommand
=
TRUE
;
break
;
case
XML_TERM
:
m_children
.
append
(
new
DocStyleChange
(
this
,
g_nodeStack
.
count
(),
DocStyleChange
::
Bold
,
TRUE
));
if
(
insideTable
(
this
))
{
retval
=
RetVal_TableCell
;
}
break
;
case
XML_SEE
:
// I'm not sure if <see> is the same as <seealso> or if it
// should you link a member without producing a section. The
...
...
@@ -4923,14 +5092,25 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag
case
XML_LIST
:
{
QString
type
;
findAttribute
(
tagHtmlAttribs
,
"type"
,
&
type
);
DocHtmlList
::
Type
listType
=
DocHtmlList
::
Unordered
;
if
(
findAttribute
(
tagHtmlAttribs
,
"type"
,
&
type
)
&&
type
==
"number"
)
if
(
type
==
"number"
)
{
listType
=
DocHtmlList
::
Ordered
;
}
DocHtmlList
*
list
=
new
DocHtmlList
(
this
,
tagHtmlAttribs
,
listType
);
m_children
.
append
(
list
);
retval
=
list
->
parseXml
();
if
(
type
==
"table"
)
{
DocHtmlTable
*
table
=
new
DocHtmlTable
(
this
,
tagHtmlAttribs
);
m_children
.
append
(
table
);
retval
=
table
->
parseXml
();
}
else
{
HtmlAttribList
emptyList
;
DocHtmlList
*
list
=
new
DocHtmlList
(
this
,
emptyList
,
listType
);
m_children
.
append
(
list
);
retval
=
list
->
parseXml
();
}
}
break
;
case
XML_INCLUDE
:
...
...
@@ -5078,6 +5258,9 @@ int DocPara::handleHtmlEndTag(const QString &tagName)
// ignore </a> tag (can be part of <a name=...></a>
break
;
case
XML_TERM
:
m_children
.
append
(
new
DocStyleChange
(
this
,
g_nodeStack
.
count
(),
DocStyleChange
::
Bold
,
FALSE
));
break
;
case
XML_SUMMARY
:
case
XML_REMARKS
:
case
XML_PARA
:
...
...
@@ -5094,6 +5277,7 @@ int DocPara::handleHtmlEndTag(const QString &tagName)
handleStyleLeave
(
this
,
m_children
,
DocStyleChange
::
Code
,
"c"
);
break
;
case
XML_ITEM
:
case
XML_LISTHEADER
:
case
XML_INCLUDE
:
case
XML_PERMISSION
:
case
XML_DESCRIPTION
:
...
...
src/docparser.h
View file @
01147699
...
...
@@ -1140,6 +1140,7 @@ class DocHtmlCell : public CompAccept<DocHtmlCell>, public DocNode
void
markLast
(
bool
v
=
TRUE
)
{
m_isLast
=
v
;
}
const
HtmlAttribList
&
attribs
()
const
{
return
m_attribs
;
}
int
parse
();
int
parseXml
();
private
:
DocNode
*
m_parent
;
...
...
@@ -1179,6 +1180,7 @@ class DocHtmlRow : public CompAccept<DocHtmlRow>, public DocNode
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocHtmlRow
>::
accept
(
this
,
v
);
}
const
HtmlAttribList
&
attribs
()
const
{
return
m_attribs
;
}
int
parse
();
int
parseXml
(
bool
header
);
private
:
DocNode
*
m_parent
;
...
...
@@ -1199,6 +1201,7 @@ class DocHtmlTable : public CompAccept<DocHtmlTable>, public DocNode
bool
hasCaption
()
{
return
m_caption
!=
0
;
}
const
HtmlAttribList
&
attribs
()
const
{
return
m_attribs
;
}
int
parse
();
int
parseXml
();
uint
numCols
()
const
;
void
accept
(
DocVisitor
*
v
);
...
...
src/dot.cpp
View file @
01147699
This diff is collapsed.
Click to expand it.
src/dot.h
View file @
01147699
...
...
@@ -82,6 +82,7 @@ class DotNode
int
number
()
const
{
return
m_number
;
}
bool
isVisible
()
const
{
return
m_visible
;
}
TruncState
isTruncated
()
const
{
return
m_truncated
;
}
int
distance
()
const
{
return
m_distance
;
}
private
:
void
colorConnectedNodes
(
int
curColor
);
...
...
@@ -89,6 +90,7 @@ class DotNode
bool
hasNonReachableChildren
,
bool
reNumber
=
FALSE
);
void
writeArrow
(
QTextStream
&
t
,
GraphType
gt
,
GraphOutputFormat
f
,
DotNode
*
cn
,
EdgeInfo
*
ei
,
bool
topDown
,
bool
pointBack
=
TRUE
,
bool
reNumber
=
FALSE
);
void
setDistance
(
int
distance
);
const
DotNode
*
findDocNode
()
const
;
// only works for acyclic graphs!
void
markAsVisible
(
bool
b
=
TRUE
)
{
m_visible
=
b
;
}
void
markAsTruncated
(
bool
b
=
TRUE
)
{
m_truncated
=
b
?
Truncated
:
Untruncated
;
}
...
...
@@ -106,6 +108,7 @@ class DotNode
ClassDef
*
m_classDef
;
//!< class representing this node (can be 0)
bool
m_visible
;
//!< is the node visible in the output
TruncState
m_truncated
;
//!< does the node have non-visible children/parents
int
m_distance
;
//!< shortest path to the root node
friend
class
DotGfxHierarchyTable
;
friend
class
DotClassGraph
;
...
...
@@ -155,6 +158,7 @@ class DotClassGraph
DotClassGraph
(
ClassDef
*
cd
,
DotNode
::
GraphType
t
);
~
DotClassGraph
();
bool
isTrivial
()
const
;
bool
isTooBig
()
const
;
QCString
writeGraph
(
QTextStream
&
t
,
GraphOutputFormat
f
,
const
char
*
path
,
const
char
*
relPath
,
bool
TBRank
=
TRUE
,
bool
imageMap
=
TRUE
);
...
...
@@ -163,12 +167,12 @@ class DotClassGraph
QCString
diskName
()
const
;
private
:
void
buildGraph
(
ClassDef
*
cd
,
DotNode
*
n
,
bool
base
);
void
buildGraph
(
ClassDef
*
cd
,
DotNode
*
n
,
bool
base
,
int
distance
);
void
determineVisibleNodes
(
QList
<
DotNode
>
&
queue
,
int
&
maxNodes
,
bool
includeParents
);
void
determineTruncatedNodes
(
QList
<
DotNode
>
&
queue
,
bool
includeParents
);
void
addClass
(
ClassDef
*
cd
,
DotNode
*
n
,
int
prot
,
const
char
*
label
,
const
char
*
usedName
,
const
char
*
templSpec
,
bool
base
);
bool
base
,
int
distance
);
DotNode
*
m_startNode
;
QDict
<
DotNode
>
*
m_usedNodes
;
...
...
@@ -187,11 +191,12 @@ class DotInclDepGraph
const
char
*
relPath
,
bool
writeImageMap
=
TRUE
);
bool
isTrivial
()
const
;
bool
isTooBig
()
const
;
QCString
diskName
()
const
;
void
writeXML
(
QTextStream
&
t
);
private
:
void
buildGraph
(
DotNode
*
n
,
FileDef
*
fd
);
void
buildGraph
(
DotNode
*
n
,
FileDef
*
fd
,
int
distance
);
void
determineVisibleNodes
(
QList
<
DotNode
>
&
queue
,
int
&
maxNodes
);
void
determineTruncatedNodes
(
QList
<
DotNode
>
&
queue
);
...
...
@@ -213,6 +218,7 @@ class DotCallGraph
const
char
*
path
,
const
char
*
relPath
,
bool
writeImageMap
=
TRUE
);
void
buildGraph
(
DotNode
*
n
,
MemberDef
*
md
);
bool
isTrivial
()
const
;
bool
isTooBig
()
const
;
void
determineVisibleNodes
(
QList
<
DotNode
>
&
queue
,
int
&
maxNodes
);
void
determineTruncatedNodes
(
QList
<
DotNode
>
&
queue
);
...
...
src/doxygen.cpp
View file @
01147699
...
...
@@ -6397,7 +6397,7 @@ static void addEnumValuesToEnums(EntryNav *rootNav)
// must create them here
e
->
loadEntry
(
g_storage
);
MemberDef
*
fmd
=
addVariableToFile
(
e
,
MemberDef
::
EnumValue
,
md
->
getOuterScope
()
?
md
->
getOuterScope
()
->
name
()
:
""
,
md
->
getOuterScope
()
?
md
->
getOuterScope
()
->
name
()
:
QCString
()
,
e
->
name
(),
TRUE
,
0
);
md
->
insertEnumField
(
fmd
);
fmd
->
setEnumScope
(
md
);
...
...
@@ -6659,6 +6659,43 @@ static void findDocumentedEnumValues()
findDEV
(
*
Doxygen
::
functionNameSDict
);
}
//----------------------------------------------------------------------
static
void
addMembersToIndex
()
{
MemberName
*
mn
;
MemberNameSDict
::
Iterator
mnli
(
*
Doxygen
::
memberNameSDict
);
// for each member name
for
(
mnli
.
toFirst
();(
mn
=
mnli
.
current
());
++
mnli
)
{
MemberDef
*
md
;
MemberNameIterator
mni
(
*
mn
);
// for each member definition
for
(
mni
.
toFirst
();(
md
=
mni
.
current
());
++
mni
)
{
addClassMemberNameToIndex
(
md
);
}
}
MemberNameSDict
::
Iterator
fnli
(
*
Doxygen
::
functionNameSDict
);
// for each member name
for
(
fnli
.
toFirst
();(
mn
=
fnli
.
current
());
++
fnli
)
{
MemberDef
*
md
;
MemberNameIterator
mni
(
*
mn
);
// for each member definition
for
(
mni
.
toFirst
();(
md
=
mni
.
current
());
++
mni
)
{
if
(
md
->
getNamespaceDef
())
{
addNamespaceMemberNameToIndex
(
md
);
}
else
{
addFileMemberNameToIndex
(
md
);
}
}
}
}
//----------------------------------------------------------------------
// computes the relation between all members. For each member `m'
...
...
@@ -8560,49 +8597,13 @@ void readFormulaRepository()
//----------------------------------------------------------------------------
static
QDict
<
void
>
aliasesProcessed
;
static
QCString
expandAliasesRec
(
const
QCString
s
)
{
QCString
result
;
static
QRegExp
cmdPat
(
"[
\\\\
@][a-z_A-Z][a-z_A-Z0-9]*"
);
QCString
value
=
s
;
int
i
,
p
=
0
,
l
;
while
((
i
=
cmdPat
.
match
(
value
,
p
,
&
l
))
!=-
1
)
{
result
+=
value
.
mid
(
p
,
i
-
p
);
QCString
cmd
=
value
.
mid
(
i
+
1
,
l
-
1
);
//printf("Found command '%s'\n",cmd.data());
QCString
*
aliasText
=
Doxygen
::
aliasDict
.
find
(
cmd
);
if
(
aliasesProcessed
.
find
(
cmd
)
==
0
&&
aliasText
)
// expand the alias
{
aliasesProcessed
.
insert
(
cmd
,(
void
*
)
0x8
);
result
+=
expandAliasesRec
(
*
aliasText
);
aliasesProcessed
.
remove
(
cmd
);
}
else
// command is not an alias
{
result
+=
value
.
mid
(
i
,
l
);
}
p
=
i
+
l
;
}
result
+=
value
.
right
(
value
.
length
()
-
p
);
//printf("expandAliases '%s'->'%s'\n",s.data(),result.data());
return
result
;
}
static
void
expandAliases
()
{
QDictIterator
<
QCString
>
adi
(
Doxygen
::
aliasDict
);
QCString
*
s
;
for
(
adi
.
toFirst
();(
s
=
adi
.
current
());
++
adi
)
{
aliasesProcessed
.
clear
();
// avoid expanding this command recursively
aliasesProcessed
.
insert
(
adi
.
currentKey
(),(
void
*
)
0x8
);
// expand embedded commands
*
s
=
expandAliasesRec
(
*
s
);
*
s
=
expandAlias
(
adi
.
currentKey
(),
*
s
);
}
}
...
...
@@ -8678,7 +8679,6 @@ void readAliases()
}
expandAliases
();
escapeAliases
();
aliasesProcessed
.
clear
();
}
//----------------------------------------------------------------------------
...
...
@@ -9880,6 +9880,7 @@ void generateOutput()
writeGroupIndex
(
*
outputList
);
msg
(
"Generating class documentation...
\n
"
);
addMembersToIndex
();
generateClassDocs
();
if
(
Config_getBool
(
"HAVE_DOT"
)
&&
Config_getBool
(
"GRAPHICAL_HIERARCHY"
))
...
...
@@ -9979,7 +9980,7 @@ void generateOutput()
QDir
::
setCurrent
(
Config_getString
(
"HTML_OUTPUT"
));
if
(
portable_system
(
Config_getString
(
"HHC_LOCATION"
),
"index.hhp"
,
FALSE
))
{
err
(
"Error: failed to run html help compiler on index.hhp"
);
err
(
"Error: failed to run html help compiler on index.hhp
\n
"
);
}
QDir
::
setCurrent
(
oldDir
);
}
...
...
src/filedef.cpp
View file @
01147699
...
...
@@ -391,7 +391,7 @@ void FileDef::writeDocumentation(OutputList &ol)
{
//printf("Graph for file %s\n",name().data());
DotInclDepGraph
incDepGraph
(
this
,
FALSE
);
if
(
!
incDepGraph
.
isTrivial
())
if
(
!
incDepGraph
.
isTrivial
()
&&
!
incDepGraph
.
isTooBig
()
)
{
ol
.
startTextBlock
();
ol
.
disable
(
OutputGenerator
::
Man
);
...
...
@@ -409,7 +409,7 @@ void FileDef::writeDocumentation(OutputList &ol)
{
//printf("Graph for file %s\n",name().data());
DotInclDepGraph
incDepGraph
(
this
,
TRUE
);
if
(
!
incDepGraph
.
isTrivial
())
if
(
!
incDepGraph
.
isTrivial
()
&&
!
incDepGraph
.
isTooBig
()
)
{
ol
.
startTextBlock
();
ol
.
disable
(
OutputGenerator
::
Man
);
...
...
@@ -723,7 +723,7 @@ void FileDef::insertMember(MemberDef *md)
m_memberLists
.
append
(
allMemberList
);
}
allMemberList
->
append
(
md
);
::
addFileMemberNameToIndex
(
md
);
//
::addFileMemberNameToIndex(md);
switch
(
md
->
memberType
())
{
case
MemberDef
:
:
Variable
:
...
...
src/htmldocvisitor.cpp
View file @
01147699
...
...
@@ -577,18 +577,26 @@ void HtmlDocVisitor::visitPre(DocHtmlList *s)
{
if
(
m_hide
)
return
;
if
(
s
->
type
()
==
DocHtmlList
::
Ordered
)
{
m_t
<<
"<ol"
<<
htmlAttribsToString
(
s
->
attribs
())
<<
">
\n
"
;
}
else
{
m_t
<<
"<ul"
<<
htmlAttribsToString
(
s
->
attribs
())
<<
">
\n
"
;
}
}
void
HtmlDocVisitor
::
visitPost
(
DocHtmlList
*
s
)
{
if
(
m_hide
)
return
;
if
(
s
->
type
()
==
DocHtmlList
::
Ordered
)
{
m_t
<<
"</ol>"
;
else
}
else
{
m_t
<<
"</ul>"
;
}
if
(
!
s
->
isPreformatted
())
m_t
<<
"
\n
"
;
}
...
...
src/htmlgen.cpp
View file @
01147699
...
...
@@ -873,7 +873,7 @@ void HtmlGenerator::writeCodeLink(const char *ref,const char *f,
if
(
f
)
t
<<
f
<<
Doxygen
::
htmlFileExtension
;
if
(
anchor
)
t
<<
"#"
<<
anchor
;
t
<<
"
\"
"
;
if
(
tooltip
)
t
<<
" title=
\"
"
<<
tooltip
<<
"
\"
"
;
if
(
tooltip
)
t
<<
" title=
\"
"
<<
convertToXML
(
tooltip
)
<<
"
\"
"
;
t
<<
">"
;
docify
(
name
);
t
<<
"</a>"
;
...
...
src/index.cpp
View file @
01147699
...
...
@@ -1667,7 +1667,8 @@ void initClassMemberIndices()
void
addClassMemberNameToIndex
(
MemberDef
*
md
)
{
static
bool
hideFriendCompounds
=
Config_getBool
(
"HIDE_FRIEND_COMPOUNDS"
);
ClassDef
*
cd
;
ClassDef
*
cd
=
0
;
if
(
md
->
isLinkableInProject
()
&&
(
cd
=
md
->
getClassDef
())
&&
cd
->
isLinkableInProject
()
&&
...
...
src/latexgen.cpp
View file @
01147699
...
...
@@ -237,21 +237,22 @@ static void writeDefaultHeaderPart1(QTextStream &t)
}
if
(
Config_getBool
(
"PDF_HYPERLINKS"
))
{
t
<<
"
\\
ifx
\\
pdfoutput
\\
undefined"
<<
endl
<<
"
\\
usepackage[ps2pdf,"
<<
endl
t
<<
"
\\
usepackage{ifpdf}"
<<
endl
<<
"
\\
ifpdf"
<<
endl
<<
"
\\
usepackage[pdftex,"
<<
endl
<<
" pagebackref=true,"
<<
endl
<<
" colorlinks=true,"
<<
endl
<<
" linkcolor=blue,"
<<
endl
<<
" unicode"
<<
endl
<<
" ]{hyperref}"
<<
endl
<<
"
\\
usepackage{pspicture}"
<<
endl
<<
"
\\
else"
<<
endl
<<
"
\\
usepackage[p
dftex
,"
<<
endl
<<
"
\\
usepackage[p
s2pdf
,"
<<
endl
<<
" pagebackref=true,"
<<
endl
<<
" colorlinks=true,"
<<
endl
<<
" linkcolor=blue,"
<<
endl
<<
" unicode"
<<
endl
<<
" ]{hyperref}"
<<
endl
<<
"
\\
usepackage{pspicture}"
<<
endl
<<
"
\\
fi"
<<
endl
;
}
// Try to get the command for switching on the language
...
...
src/memberdef.cpp
View file @
01147699
...
...
@@ -772,10 +772,15 @@ bool MemberDef::isLinkableInProject() const
static
bool
extractStatic
=
Config_getBool
(
"EXTRACT_STATIC"
);
makeResident
();
if
(
isHidden
())
return
FALSE
;
//printf("MemberDef::isLinkableInProject(name=%s)\n",name().data());
if
(
isHidden
())
{
//printf("is hidden\n");
return
FALSE
;
}
if
(
m_impl
->
templateMaster
)
{
//printf("has template master\n");
return
m_impl
->
templateMaster
->
isLinkableInProject
();
}
if
(
name
().
isEmpty
()
||
name
().
at
(
0
)
==
'@'
)
...
...
@@ -2157,7 +2162,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
)
{
DotCallGraph
callGraph
(
this
,
FALSE
);
if
(
!
callGraph
.
isTrivial
())
if
(
!
callGraph
.
isTrivial
()
&&
!
callGraph
.
isTooBig
()
)
{
msg
(
"Generating call graph for function %s
\n
"
,
qualifiedName
().
data
());
ol
.
disable
(
OutputGenerator
::
Man
);
...
...
@@ -2172,8 +2177,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
&&
isFunction
()
&&
Config_getBool
(
"HAVE_DOT"
)
)
{
DotCallGraph
callerGraph
(
this
,
true
);
if
(
!
callerGraph
.
isTrivial
())
DotCallGraph
callerGraph
(
this
,
TRUE
);
if
(
!
callerGraph
.
isTrivial
()
&&
!
callerGraph
.
isTooBig
()
)
{
msg
(
"Generating caller graph for function %s
\n
"
,
qualifiedName
().
data
());
ol
.
disable
(
OutputGenerator
::
Man
);
...
...
src/msc.cpp
View file @
01147699
...
...
@@ -98,7 +98,7 @@ void writeMscGraphFromFile(const char *inFile,const char *outDir,
// go to the html output directory (i.e. path)
QDir
::
setCurrent
(
outDir
);
//printf("Going to dir %s\n",QDir::currentDirPath().data());
QCString
mscExe
=
Config_getString
(
"MSC_PATH"
)
+
"mscgen"
+
portable_commandExtension
();
QCString
mscExe
=
Config_getString
(
"MSC
GEN
_PATH"
)
+
"mscgen"
+
portable_commandExtension
();
QCString
mscArgs
;
QCString
extension
;
if
(
format
==
MSC_BITMAP
)
...
...
@@ -151,7 +151,7 @@ QString getMscImageMapFromFile(const QString& inFile, const QString& outDir,
QCString
mscExe
=
"mscgen"
;
QCString
mscArgs
=
"-T ismap -i
\"
"
;
mscArgs
+=
inFile
+
".msc
\"
-o
\"
"
;
mscArgs
+=
outFile
+
"
.map
\"
"
;
mscArgs
+=
outFile
+
"
\"
"
;
int
exitCode
;
if
((
exitCode
=
portable_system
(
mscExe
,
mscArgs
,
FALSE
))
!=
0
)
...
...
@@ -162,7 +162,7 @@ QString getMscImageMapFromFile(const QString& inFile, const QString& outDir,
QString
result
;
QTextOStream
tmpout
(
&
result
);
convertMapFile
(
tmpout
,
outFile
+
".map"
,
relPath
);
convertMapFile
(
tmpout
,
outFile
,
relPath
);
QDir
().
remove
(
outFile
);
QDir
::
setCurrent
(
oldDir
);
...
...
src/namespacedef.cpp
View file @
01147699
...
...
@@ -179,7 +179,7 @@ void NamespaceDef::insertMember(MemberDef *md)
m_memberLists
.
append
(
allMemberList
);
}
allMemberList
->
append
(
md
);
::
addNamespaceMemberNameToIndex
(
md
);
//
::addNamespaceMemberNameToIndex(md);
//static bool sortBriefDocs=Config_getBool("SORT_BRIEF_DOCS");
switch
(
md
->
memberType
())
{
...
...
src/translator_cn.h
View file @
01147699
...
...
@@ -620,7 +620,8 @@ class TranslatorChinese : public Translator
*/
virtual
QCString
trNamespaces
()
{
return
"Namespaces"
;
// return "Namespaces";
return
"名字空间"
;
}
//////////////////////////////////////////////////////////////////////////
...
...
src/util.cpp
View file @
01147699
...
...
@@ -116,8 +116,9 @@ void TextGeneratorOLImpl::writeLink(const char *extRef,const char *file,
// an inheritance tree of depth of 100000 should be enough for everyone :-)
const
int
maxInheritanceDepth
=
100000
;
bool
isId
(
char
c
)
bool
isId
(
int
c
)
{
if
(
c
<
0
||
c
>
255
)
return
FALSE
;
return
c
==
'_'
||
isalnum
(
c
);
}
...
...
@@ -6080,3 +6081,166 @@ QCString parseCommentAsText(const QString &doc,const QCString &fileName,int line
return
result
.
data
();
}
//--------------------------------------------------------------------------------------
static
QDict
<
void
>
aliasesProcessed
;
QCString
expandAliasRec
(
const
QCString
s
)
{
QCString
result
;
static
QRegExp
cmdPat
(
"[
\\\\
@][a-z_A-Z][a-z_A-Z0-9]*"
);
QCString
value
=
s
;
int
i
,
p
=
0
,
l
;
while
((
i
=
cmdPat
.
match
(
value
,
p
,
&
l
))
!=-
1
)
{
result
+=
value
.
mid
(
p
,
i
-
p
);
QCString
args
=
extractAliasArgs
(
value
,
i
+
l
);
bool
hasArgs
=
!
args
.
isEmpty
();
// found directly after command
QCString
cmd
;
if
(
hasArgs
)
{
int
numArgs
=
countAliasArguments
(
args
);
cmd
=
value
.
mid
(
i
+
1
,
l
-
1
)
+
QCString
().
sprintf
(
"{%d}"
,
numArgs
);
// alias name + {n}
}
else
{
cmd
=
value
.
mid
(
i
+
1
,
l
-
1
);
}
//printf("Found command '%s' args='%s'\n",cmd.data(),args.data());
QCString
*
aliasText
=
Doxygen
::
aliasDict
.
find
(
cmd
);
if
(
aliasesProcessed
.
find
(
cmd
)
==
0
&&
aliasText
)
// expand the alias
{
//printf("is an alias!\n");
aliasesProcessed
.
insert
(
cmd
,(
void
*
)
0x8
);
QCString
val
=
*
aliasText
;
if
(
hasArgs
)
{
val
=
replaceAliasArguments
(
val
,
args
);
//printf("replace '%s'->'%s' args='%s'\n",
// aliasText->data(),val.data(),args.data());
}
result
+=
expandAliasRec
(
val
);
aliasesProcessed
.
remove
(
cmd
);
p
=
i
+
l
;
if
(
hasArgs
)
p
+=
args
.
length
()
+
2
;
}
else
// command is not an alias
{
//printf("not an alias!\n");
result
+=
value
.
mid
(
i
,
l
);
p
=
i
+
l
;
}
}
result
+=
value
.
right
(
value
.
length
()
-
p
);
//printf("expandAliases '%s'->'%s'\n",s.data(),result.data());
return
result
;
}
static
QCString
replaceAliasArgument
(
const
QCString
&
aliasValue
,
int
paramNum
,
const
QCString
&
paramValue
)
{
QCString
result
=
aliasValue
;
QCString
paramMarker
;
paramMarker
.
sprintf
(
"
\\
%d"
,
paramNum
);
int
markerLen
=
paramMarker
.
length
();
int
p
=
0
,
i
;
while
((
i
=
aliasValue
.
find
(
paramMarker
,
p
))
!=-
1
)
// search for marker
{
//printf("Found marker '%s' at %d len=%d for param '%s' in '%s'\n",
// paramMarker.data(),i,markerLen,paramValue.data(),aliasValue.data());
if
(
i
==
0
||
aliasValue
.
at
(
i
-
1
)
!=
'\\'
)
// found unescaped marker
{
QCString
before
=
result
.
left
(
i
);
QCString
after
=
result
.
mid
(
i
+
markerLen
);
result
=
before
+
paramValue
+
after
;
p
=
i
+
paramValue
.
length
();
}
else
// ignore escaped markers
{
p
=
i
+
1
;
}
}
result
=
expandAliasRec
(
substitute
(
result
,
"
\\
,"
,
","
));
//printf("replaceAliasArgument('%s',%d,'%s')->%s\n",
// aliasValue.data(),paramNum,paramValue.data(),result.data());
return
result
;
}
QCString
replaceAliasArguments
(
const
QCString
&
aliasValue
,
const
QCString
&
argList
)
{
QCString
result
=
aliasValue
;
QList
<
QCString
>
args
;
int
p
=
0
,
i
,
c
=
1
;
for
(
i
=
0
;
i
<
(
int
)
argList
.
length
();
i
++
)
{
if
(
argList
.
at
(
i
)
==
','
&&
(
i
==
0
||
argList
.
at
(
i
-
1
)
!=
'\\'
))
{
result
=
replaceAliasArgument
(
result
,
c
,
argList
.
mid
(
p
,
i
-
p
));
p
=
i
+
1
;
c
++
;
}
}
if
(
p
<
(
int
)
argList
.
length
())
{
result
=
replaceAliasArgument
(
result
,
c
,
argList
.
right
(
argList
.
length
()
-
p
));
}
return
result
;
}
int
countAliasArguments
(
const
QCString
argList
)
{
int
count
=
1
;
int
l
=
argList
.
length
();
int
i
;
for
(
i
=
0
;
i
<
l
;
i
++
)
{
if
(
argList
.
at
(
i
)
==
','
&&
(
i
==
0
||
argList
.
at
(
i
-
1
)
!=
'\\'
))
count
++
;
}
return
count
;
}
QCString
extractAliasArgs
(
const
QCString
&
args
,
int
pos
)
{
int
i
;
int
bc
=
0
;
if
(
args
.
at
(
pos
)
==
'{'
)
// alias has argument
{
for
(
i
=
pos
;
i
<
(
int
)
args
.
length
();
i
++
)
{
if
(
args
.
at
(
i
)
==
'{'
)
bc
++
;
if
(
args
.
at
(
i
)
==
'}'
)
bc
--
;
if
(
bc
==
0
)
{
//printf("extractAliasArgs('%s')->'%s'\n",args.data(),args.mid(pos+1,i-pos-1).data());
return
args
.
mid
(
pos
+
1
,
i
-
pos
-
1
);
}
}
}
return
""
;
}
QCString
resolveAliasCmd
(
const
QCString
aliasCmd
)
{
QCString
result
;
aliasesProcessed
.
clear
();
//printf("Expanding: '%s'\n",aliasCmd.data());
result
=
expandAliasRec
(
aliasCmd
);
//printf("Expanding result: '%s'->'%s'\n",aliasCmd.data(),result.data());
return
result
;
}
QCString
expandAlias
(
const
QCString
&
aliasName
,
const
QCString
&
aliasValue
)
{
QCString
result
;
aliasesProcessed
.
clear
();
// avoid expanding this command recursively
aliasesProcessed
.
insert
(
aliasName
,(
void
*
)
0x8
);
// expand embedded commands
//printf("Expanding: '%s'->'%s'\n",aliasName.data(),aliasValue.data());
result
=
expandAliasRec
(
aliasValue
);
//printf("Expanding result: '%s'->'%s'\n",aliasName.data(),result.data());
return
result
;
}
src/util.h
View file @
01147699
...
...
@@ -187,7 +187,7 @@ QCString showFileDefMatches(const FileNameDict *fnDict,const char *n);
int
guessSection
(
const
char
*
name
);
bool
isId
(
char
c
);
bool
isId
(
int
c
);
QCString
removeRedundantWhiteSpace
(
const
QCString
&
s
);
...
...
@@ -334,5 +334,14 @@ QCString transcodeCharacterStringToUTF8(const QCString &input);
QCString
recodeString
(
const
QCString
&
str
,
const
char
*
fromEncoding
,
const
char
*
toEncoding
);
QCString
extractAliasArgs
(
const
QCString
&
args
,
int
pos
);
int
countAliasArguments
(
const
QCString
argList
);
QCString
replaceAliasArguments
(
const
QCString
&
aliasValue
,
const
QCString
&
argList
);
QCString
resolveAliasCmd
(
const
QCString
aliasCmd
);
QCString
expandAlias
(
const
QCString
&
aliasName
,
const
QCString
&
aliasValue
);
#endif
src/xmlgen.cpp
View file @
01147699
...
...
@@ -189,7 +189,7 @@ void writeXMLLink(QTextStream &t,const char *extRef,const char *compoundId,
if
(
anchorId
)
t
<<
"member"
;
else
t
<<
"compound"
;
t
<<
"
\"
"
;
if
(
extRef
)
t
<<
" external=
\"
"
<<
extRef
<<
"
\"
"
;
if
(
tooltip
)
t
<<
" tooltip=
\"
"
<<
tooltip
<<
"
\"
"
;
if
(
tooltip
)
t
<<
" tooltip=
\"
"
<<
convertToXML
(
tooltip
)
<<
"
\"
"
;
t
<<
">"
;
writeXMLString
(
t
,
text
);
t
<<
"</ref>"
;
...
...
tmake/lib/solaris-g++/tmake.conf
View file @
01147699
...
...
@@ -43,7 +43,7 @@ TMAKE_LFLAGS_SHAPP = -shared
TMAKE_LFLAGS_SHLIB
= -
shared
-
h
$(
TARGET1
)
TMAKE_LFLAGS_SONAME
=
TMAKE_LIBS
=
TMAKE_LIBS
=
-
liconv
TMAKE_LIBS_X11
= -
lXext
-
lX11
-
lm
TMAKE_LIBS_QT
= -
lqt
TMAKE_LIBS_QT_MT
= -
lqt
-
mt
...
...
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