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
02b5f51e
Commit
02b5f51e
authored
Mar 24, 2004
by
dimitri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.3.6-20040324
parent
f12fe31a
Changes
36
Show whitespace changes
Inline
Side-by-side
Showing
36 changed files
with
902 additions
and
698 deletions
+902
-698
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
commands.doc
doc/commands.doc
+10
-0
config.doc
doc/config.doc
+11
-0
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
classdef.cpp
src/classdef.cpp
+2
-2
config.l
src/config.l
+22
-11
declinfo.l
src/declinfo.l
+5
-1
defargs.l
src/defargs.l
+1
-1
definition.h
src/definition.h
+1
-1
docparser.cpp
src/docparser.cpp
+14
-6
docparser.h
src/docparser.h
+8
-0
doctokenizer.l
src/doctokenizer.l
+2
-1
dot.cpp
src/dot.cpp
+10
-9
dot.h
src/dot.h
+3
-2
doxygen.cpp
src/doxygen.cpp
+2
-0
doxygen.h
src/doxygen.h
+1
-0
htmldocvisitor.cpp
src/htmldocvisitor.cpp
+14
-6
htmldocvisitor.h
src/htmldocvisitor.h
+1
-1
htmlgen.cpp
src/htmlgen.cpp
+58
-47
htmlgen.h
src/htmlgen.h
+2
-1
latexdocvisitor.cpp
src/latexdocvisitor.cpp
+2
-2
latexgen.cpp
src/latexgen.cpp
+14
-10
latexgen.h
src/latexgen.h
+2
-1
mangen.cpp
src/mangen.cpp
+4
-4
mangen.h
src/mangen.h
+1
-1
memberdef.cpp
src/memberdef.cpp
+541
-507
memberdef.h
src/memberdef.h
+1
-0
outputgen.h
src/outputgen.h
+1
-1
outputlist.h
src/outputlist.h
+2
-2
rtfgen.cpp
src/rtfgen.cpp
+9
-4
rtfgen.h
src/rtfgen.h
+2
-1
scanner.l
src/scanner.l
+57
-56
util.cpp
src/util.cpp
+87
-14
util.h
src/util.h
+6
-0
No files found.
INSTALL
View file @
02b5f51e
DOXYGEN Version 1.3.6-200403
07
DOXYGEN Version 1.3.6-200403
24
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (
07
March 2004)
Dimitri van Heesch (
24
March 2004)
README
View file @
02b5f51e
DOXYGEN Version 1.3.6_200403
07
DOXYGEN Version 1.3.6_200403
24
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) (
07
March 2004)
Dimitri van Heesch (dimitri@stack.nl) (
24
March 2004)
VERSION
View file @
02b5f51e
1.3.6-200403
07
1.3.6-200403
24
doc/commands.doc
View file @
02b5f51e
...
...
@@ -147,6 +147,7 @@ documentation:
\refitem cmdlt \\\<
\refitem cmdgt \\\>
\refitem cmdhash \\\#
\refitem cmdperc \\\%
\endsecreflist
The following subsections provide a list of all commands that are recognized by
...
...
@@ -1956,6 +1957,15 @@ class C {};
\f$\mbox{\LaTeX}\f$ output. This
character has to be escaped because it has a special meaning in HTML.
\section cmdperc \%
\addindex \\\%
This command writes the \% character to the HTML and
\f$\mbox{\LaTeX}\f$ output. This
character has to be escaped in some cases, because it is used to
prevent auto-linking to word that is also a documented class or struct.
<hr>
<hr>
<h2>\htmlonly <center> --- \endhtmlonly
Commands included for Qt compatibility
...
...
doc/config.doc
View file @
02b5f51e
...
...
@@ -71,6 +71,7 @@ followed by the descriptions of the tags grouped by category.
\
refitem
cfg_cols_in_alpha_index
COLS_IN_ALPHA_INDEX
\
refitem
cfg_compact_latex
COMPACT_LATEX
\
refitem
cfg_compact_rtf
COMPACT_RTF
\
refitem
cfg_create_subdirs
CREATE_SUBDIRS
\
refitem
cfg_details_at_top
DETAILS_AT_TOP
\
refitem
cfg_disable_index
DISABLE_INDEX
\
refitem
cfg_distribute_group_doc
DISTRIBUTE_GROUP_DOC
...
...
@@ -233,6 +234,16 @@ followed by the descriptions of the tags grouped by category.
If
a
relative
path
is
entered
,
it
will
be
relative
to
the
location
where
doxygen
was
started
.
If
left
blank
the
current
directory
will
be
used
.
\
anchor
cfg_create_subdirs
<
dt
>\
c
CREATE_SUBDIRS
<
dd
>
\
addindex
CREATE_SUBDIRS
If
the
\
c
CREATE_SUBDIRS
tag
is
set
to
\
c
YES
,
then
doxygen
will
create
2
levels
of
10
sub
-
directories
under
the
output
directory
of
each
output
format
and
will
distribute
the
generated
files
over
these
directories
.
Enabling
this
option
can
be
useful
when
feeding
doxygen
a
huge
amount
of
source
files
,
where
putting
all
generated
files
in
the
same
directory
would
otherwise
causes
performance
problems
for
the
file
system
.
\
anchor
cfg_output_language
<
dt
>\
c
OUTPUT_LANGUAGE
<
dd
>
\
addindex
OUTPUT_LANGUAGE
...
...
packages/rpm/doxygen.spec
View file @
02b5f51e
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.3.6_200403
07
Version: 1.3.6_200403
24
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
...
...
src/classdef.cpp
View file @
02b5f51e
...
...
@@ -1186,7 +1186,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
writeString
(
"<center><font size=
\"
2
\"
>["
);
ol
.
startHtmlLink
(
"graph_legend"
+
Doxygen
::
htmlFileExtension
);
ol
.
startHtmlLink
(
relativePathToRoot
(
0
)
+
"graph_legend"
+
Doxygen
::
htmlFileExtension
);
ol
.
docify
(
theTranslator
->
trLegend
());
ol
.
endHtmlLink
();
ol
.
writeString
(
"]</font></center>"
);
...
...
@@ -1220,7 +1220,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
{
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
writeString
(
"<center><font size=
\"
2
\"
>["
);
ol
.
startHtmlLink
(
"graph_legend"
+
Doxygen
::
htmlFileExtension
);
ol
.
startHtmlLink
(
relativePathToRoot
(
0
)
+
"graph_legend"
+
Doxygen
::
htmlFileExtension
);
ol
.
docify
(
theTranslator
->
trLegend
());
ol
.
endHtmlLink
();
ol
.
writeString
(
"]</font></center>"
);
...
...
src/config.l
View file @
02b5f51e
...
...
@@ -1319,6 +1319,17 @@ void Config::create()
"where doxygen was started. If left blank the current directory will be used.\n"
);
cs->setWidgetType(ConfigString::Dir);
cb = addBool(
"CREATE_SUBDIRS",
"If the CREATE_SUBDIRS tag is set to YES, then doxygen will create \n"
"2 levels of 10 sub-directories under the output directory of each output \n"
"format and will distribute the generated files over these directories. \n"
"Enabling this option can be useful when feeding doxygen a huge amount of source \n"
"files, where putting all generated files in the same directory would otherwise \n"
"cause performance problems for the file system. \n",
FALSE
);
cb->addDependency("GENERATE_HTML");
ce = addEnum(
"OUTPUT_LANGUAGE",
"The OUTPUT_LANGUAGE tag is used to specify the language in which all \n"
...
...
src/declinfo.l
View file @
02b5f51e
...
...
@@ -65,7 +65,11 @@ static void addTypeName()
{
//printf("addTypeName() type=`%s' scope=`%s' name=`%s'\n",
// type.data(),scope.data(),name.data());
if (name.isEmpty()) return;
if (name.isEmpty() ||
name.at(name.length()-1)==':') // end of Objective-C keyword => append to name not type
{
return;
}
if (!type.isEmpty()) type+=' ';
type+=name;
name.resize(0);
...
...
src/defargs.l
View file @
02b5f51e
...
...
@@ -266,7 +266,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
if (l>0)
{
int i=l-1;
while (i>=0 && (isspace(g_curArgTypeName.at(i)) || g_curArgTypeName.at(i)=='.')) i--;
while (i>=0 && (isspace(
(uchar)
g_curArgTypeName.at(i)) || g_curArgTypeName.at(i)=='.')) i--;
while (i>=0 && isId(g_curArgTypeName.at(i))) i--;
//printf("g_curArgTypeName=`%s' i=%d\n",g_curArgTypeName.data(),i);
Argument *a = new Argument;
...
...
src/definition.h
View file @
02b5f51e
...
...
@@ -58,7 +58,7 @@ class Definition
/*! Returns the base name of the output file that contains this
* definition.
*/
QCString
qualifiedName
()
const
;
virtual
QCString
qualifiedName
()
const
;
QCString
localName
()
const
;
virtual
QCString
getOutputFileBase
()
const
=
0
;
/*! Returns the name of the source listing of this file. */
...
...
src/docparser.cpp
View file @
02b5f51e
...
...
@@ -84,6 +84,7 @@ static QStack<DocStyleChange> g_styleStack;
static
QStack
<
DocStyleChange
>
g_initialStyleStack
;
static
QList
<
Definition
>
g_copyStack
;
static
QString
g_fileName
;
static
QString
g_relPath
;
struct
DocParserContext
{
...
...
@@ -96,6 +97,7 @@ struct DocParserContext
QList
<
Definition
>
copyStack
;
MemberDef
*
memberDef
;
QString
fileName
;
QString
relPath
;
};
static
QStack
<
DocParserContext
>
g_parserStack
;
...
...
@@ -114,6 +116,7 @@ static void docParserPushContext()
ctx
->
initialStyleStack
=
g_initialStyleStack
;
ctx
->
copyStack
=
g_copyStack
;
ctx
->
fileName
=
g_fileName
;
ctx
->
relPath
=
g_relPath
;
g_parserStack
.
push
(
ctx
);
}
...
...
@@ -128,6 +131,7 @@ static void docParserPopContext()
g_initialStyleStack
=
ctx
->
initialStyleStack
;
g_copyStack
=
ctx
->
copyStack
;
g_fileName
=
ctx
->
fileName
;
g_relPath
=
ctx
->
relPath
;
delete
ctx
;
doctokenizerYYpopContext
();
}
...
...
@@ -1191,7 +1195,7 @@ DocLinkedWord::DocLinkedWord(DocNode *parent,const QString &word,
const
QString
&
ref
,
const
QString
&
file
,
const
QString
&
anchor
)
:
m_parent
(
parent
),
m_word
(
word
),
m_ref
(
ref
),
m_file
(
file
),
m_anchor
(
anchor
)
m_file
(
file
),
m_
relPath
(
g_relPath
),
m_
anchor
(
anchor
)
{
//printf("new word %s url=%s\n",word.data(),g_searchUrl.data());
if
(
!
g_searchUrl
.
isEmpty
())
...
...
@@ -1281,7 +1285,7 @@ void DocIncOperator::parse()
if
(
nonEmpty
)
break
;
// we have a pattern to match
so
=
o
+
1
;
// no pattern, skip empty line
}
else
if
(
!
isspace
(
c
))
// no white space char
else
if
(
!
isspace
(
(
uchar
)
c
))
// no white space char
{
nonEmpty
=
TRUE
;
}
...
...
@@ -1306,7 +1310,7 @@ void DocIncOperator::parse()
if
(
nonEmpty
)
break
;
// we have a pattern to match
so
=
o
+
1
;
// no pattern, skip empty line
}
else
if
(
!
isspace
(
c
))
// no white space char
else
if
(
!
isspace
(
(
uchar
)
c
))
// no white space char
{
nonEmpty
=
TRUE
;
}
...
...
@@ -1334,7 +1338,7 @@ void DocIncOperator::parse()
if
(
nonEmpty
)
break
;
// we have a pattern to match
so
=
o
+
1
;
// no pattern, skip empty line
}
else
if
(
!
isspace
(
c
))
// no white space char
else
if
(
!
isspace
(
(
uchar
)
c
))
// no white space char
{
nonEmpty
=
TRUE
;
}
...
...
@@ -1361,7 +1365,7 @@ void DocIncOperator::parse()
if
(
nonEmpty
)
break
;
// we have a pattern to match
so
=
o
+
1
;
// no pattern, skip empty line
}
else
if
(
!
isspace
(
c
))
// no white space char
else
if
(
!
isspace
(
(
uchar
)
c
))
// no white space char
{
nonEmpty
=
TRUE
;
}
...
...
@@ -1635,7 +1639,7 @@ endsecreflist:
//---------------------------------------------------------------------------
DocInternalRef
::
DocInternalRef
(
DocNode
*
parent
,
const
QString
&
ref
)
:
m_parent
(
parent
)
:
m_parent
(
parent
)
,
m_relPath
(
g_relPath
)
{
int
i
=
ref
.
find
(
'#'
);
if
(
i
!=-
1
)
...
...
@@ -1691,6 +1695,7 @@ DocRef::DocRef(DocNode *parent,const QString &target) :
Definition
*
compound
=
0
;
QCString
anchor
;
ASSERT
(
!
target
.
isEmpty
());
m_relPath
=
g_relPath
;
SectionInfo
*
sec
=
Doxygen
::
sectionDict
[
target
];
if
(
sec
)
// ref to section or anchor
{
...
...
@@ -1779,6 +1784,7 @@ DocLink::DocLink(DocNode *parent,const QString &target) :
//PageInfo *page;
QCString
anchor
;
m_refText
=
target
;
m_relPath
=
g_relPath
;
if
(
!
m_refText
.
isEmpty
()
&&
m_refText
.
at
(
0
)
==
'#'
)
{
m_refText
=
m_refText
.
right
(
m_refText
.
length
()
-
1
);
...
...
@@ -4889,6 +4895,7 @@ DocNode *validatingParseDoc(const char *fileName,int startLine,
}
g_fileName
=
fileName
;
g_relPath
=
ctx
?
relativePathToRoot
(
ctx
->
getOutputFileBase
())
:
QString
(
""
);
g_memberDef
=
md
;
g_nodeStack
.
clear
();
g_styleStack
.
clear
();
...
...
@@ -4940,6 +4947,7 @@ DocNode *validatingParseText(const char *input)
g_token
=
new
TokenInfo
;
g_context
=
""
;
g_fileName
=
"<parseText>"
;
g_relPath
=
""
;
g_memberDef
=
0
;
g_nodeStack
.
clear
();
g_styleStack
.
clear
();
...
...
src/docparser.h
View file @
02b5f51e
...
...
@@ -203,6 +203,7 @@ class DocLinkedWord : public DocNode
Kind
kind
()
const
{
return
Kind_Word
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
QString
file
()
const
{
return
m_file
;
}
QString
relPath
()
const
{
return
m_relPath
;
}
QString
ref
()
const
{
return
m_ref
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
void
accept
(
DocVisitor
*
v
)
{
v
->
visit
(
this
);
}
...
...
@@ -212,6 +213,7 @@ class DocLinkedWord : public DocNode
QString
m_word
;
QString
m_ref
;
QString
m_file
;
QString
m_relPath
;
QString
m_anchor
;
};
...
...
@@ -614,6 +616,7 @@ class DocLink : public CompAccept<DocLink>, public DocNode
QString
parse
(
bool
);
Kind
kind
()
const
{
return
Kind_Link
;
}
QString
file
()
const
{
return
m_file
;
}
QString
relPath
()
const
{
return
m_relPath
;
}
QString
ref
()
const
{
return
m_ref
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
...
...
@@ -622,6 +625,7 @@ class DocLink : public CompAccept<DocLink>, public DocNode
private
:
DocNode
*
m_parent
;
QString
m_file
;
QString
m_relPath
;
QString
m_ref
;
QString
m_anchor
;
QString
m_refText
;
...
...
@@ -635,6 +639,7 @@ class DocRef : public CompAccept<DocRef>, public DocNode
void
parse
();
Kind
kind
()
const
{
return
Kind_Ref
;
}
QString
file
()
const
{
return
m_file
;
}
QString
relPath
()
const
{
return
m_relPath
;
}
QString
ref
()
const
{
return
m_ref
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
QString
targetTitle
()
const
{
return
m_text
;
}
...
...
@@ -649,6 +654,7 @@ class DocRef : public CompAccept<DocRef>, public DocNode
bool
m_refToSection
;
bool
m_refToAnchor
;
QString
m_file
;
QString
m_relPath
;
QString
m_ref
;
QString
m_anchor
;
QString
m_text
;
...
...
@@ -662,6 +668,7 @@ class DocInternalRef : public CompAccept<DocInternalRef>, public DocNode
void
parse
();
Kind
kind
()
const
{
return
Kind_Ref
;
}
QString
file
()
const
{
return
m_file
;
}
QString
relPath
()
const
{
return
m_relPath
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocInternalRef
>::
accept
(
this
,
v
);
}
...
...
@@ -669,6 +676,7 @@ class DocInternalRef : public CompAccept<DocInternalRef>, public DocNode
private
:
DocNode
*
m_parent
;
QString
m_file
;
QString
m_relPath
;
QString
m_anchor
;
};
...
...
src/doctokenizer.l
View file @
02b5f51e
...
...
@@ -292,7 +292,8 @@ TEMPCHAR [a-z_A-Z0-9,: \t\*\&]
FUNCCHAR [a-z_A-Z0-9,:\<\> \t\*\&]
SCOPESEP "::"|"#"|"."
SCOPEPRE {ID}("<"{TEMPCHAR}*">")?{SCOPESEP}
SCOPEMASK {SCOPEPRE}*(~)?{ID}("<"{TEMPCHAR}*">")?
SCOPEKEYS ":"({ID}":")*
SCOPEMASK {SCOPEPRE}*(~)?{ID}{SCOPEKEYS}?("<"{TEMPCHAR}*">")?
FUNCARG "("{FUNCCHAR}*")"
OPNEW {BLANK}+"new"({BLANK}*"[]")?
OPDEL {BLANK}+"delete"({BLANK}*"[]")?
...
...
src/dot.cpp
View file @
02b5f51e
...
...
@@ -1610,6 +1610,7 @@ QCString DotClassGraph::diskName() const
QCString
DotClassGraph
::
writeGraph
(
QTextStream
&
out
,
GraphOutputFormat
format
,
const
char
*
path
,
const
char
*
relPath
,
bool
isTBRank
,
bool
generateImageMap
)
{
...
...
@@ -1643,7 +1644,6 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
}
baseName
=
convertNameToFile
(
diskName
());
QCString
imgExt
=
Config_getEnum
(
"DOT_IMAGE_FORMAT"
);
QCString
md5
=
computeMd5Signature
(
m_startNode
,
// root
m_graphType
,
// gt
...
...
@@ -1722,7 +1722,7 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
if
(
format
==
BITMAP
&&
generateImageMap
)
// run dot to create a image map
{
QCString
mapLabel
=
convertNameToFile
(
m_startNode
->
m_label
+
"_"
+
mapName
);
out
<<
"<p><center><img src=
\"
"
<<
baseName
<<
"."
out
<<
"<p><center><img src=
\"
"
<<
relPath
<<
baseName
<<
"."
<<
imgExt
<<
"
\"
border=
\"
0
\"
usemap=
\"
#"
<<
mapLabel
<<
"
\"
alt=
\"
"
;
switch
(
m_graphType
)
...
...
@@ -1816,7 +1816,7 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance)
doc
=
bfd
->
isLinkable
();
src
=
bfd
->
generateSourceFile
();
}
if
(
doc
||
src
)
if
(
doc
||
src
||
!
Config_getBool
(
"HIDE_UNDOC_RELATIONS"
)
)
{
QCString
url
=
""
;
if
(
bfd
)
url
=
bfd
->
getOutputFileBase
().
copy
();
...
...
@@ -1833,8 +1833,8 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance)
}
else
{
QCString
tmp_url
=
""
;
if
(
bfd
)
tmp_url
=
bfd
->
getReference
()
+
"$"
+
url
;
QCString
tmp_url
;
if
(
bfd
)
tmp_url
=
doc
||
src
?
bfd
->
getReference
()
+
"$"
+
url
:
QCString
()
;
bn
=
new
DotNode
(
m_curNodeNumber
++
,
ii
->
includeName
,
...
...
@@ -1890,6 +1890,7 @@ QCString DotInclDepGraph::diskName() const
QCString
DotInclDepGraph
::
writeGraph
(
QTextStream
&
out
,
GraphOutputFormat
format
,
const
char
*
path
,
const
char
*
relPath
,
bool
generateImageMap
)
{
...
...
@@ -1900,7 +1901,7 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
err
(
"Error: Output dir %s does not exist!
\n
"
,
path
);
exit
(
1
);
}
QCString
oldDir
=
convertToQCString
(
QDir
::
currentDirPath
());
// go to the
html
output directory (i.e. path)
// go to the output directory (i.e. path)
QDir
::
setCurrent
(
d
.
absPath
());
QDir
thisDir
;
...
...
@@ -1995,7 +1996,7 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
if
(
format
==
BITMAP
&&
generateImageMap
)
{
out
<<
"<p><center><img src=
\"
"
<<
baseName
<<
"."
out
<<
"<p><center><img src=
\"
"
<<
relPath
<<
baseName
<<
"."
<<
imgExt
<<
"
\"
border=
\"
0
\"
usemap=
\"
#"
<<
mapName
<<
"_map
\"
alt=
\"
"
;
if
(
m_inverse
)
out
<<
"Included by dependency graph"
;
else
out
<<
"Include dependency graph"
;
...
...
@@ -2081,7 +2082,7 @@ DotCallGraph::~DotCallGraph()
}
QCString
DotCallGraph
::
writeGraph
(
QTextStream
&
out
,
GraphOutputFormat
format
,
const
char
*
path
,
bool
generateImageMap
)
const
char
*
path
,
const
char
*
relPath
,
bool
generateImageMap
)
{
QDir
d
(
path
);
// store the original directory
...
...
@@ -2177,7 +2178,7 @@ QCString DotCallGraph::writeGraph(QTextStream &out, GraphOutputFormat format,
if
(
format
==
BITMAP
&&
generateImageMap
)
{
out
<<
"<p><center><img src=
\"
"
<<
baseName
<<
"."
out
<<
"<p><center><img src=
\"
"
<<
relPath
<<
baseName
<<
"."
<<
imgExt
<<
"
\"
border=
\"
0
\"
usemap=
\"
#"
<<
mapName
<<
"_map
\"
alt=
\"
"
;
out
<<
"
\"
>"
;
...
...
src/dot.h
View file @
02b5f51e
...
...
@@ -137,7 +137,7 @@ class DotClassGraph
~
DotClassGraph
();
bool
isTrivial
()
const
;
QCString
writeGraph
(
QTextStream
&
t
,
GraphOutputFormat
f
,
const
char
*
path
,
bool
TBRank
=
TRUE
,
bool
imageMap
=
TRUE
);
const
char
*
relPath
,
bool
TBRank
=
TRUE
,
bool
imageMap
=
TRUE
);
void
writeXML
(
QTextStream
&
t
);
void
writeDEF
(
QTextStream
&
t
);
...
...
@@ -163,6 +163,7 @@ class DotInclDepGraph
DotInclDepGraph
(
FileDef
*
fd
,
int
maxRecusionDepth
,
bool
inverse
);
~
DotInclDepGraph
();
QCString
writeGraph
(
QTextStream
&
t
,
GraphOutputFormat
f
,
const
char
*
path
,
const
char
*
relPath
,
bool
writeImageMap
=
TRUE
);
bool
isTrivial
()
const
;
QCString
diskName
()
const
;
...
...
@@ -185,7 +186,7 @@ class DotCallGraph
DotCallGraph
(
MemberDef
*
md
,
int
maxRecursionDepth
);
~
DotCallGraph
();
QCString
writeGraph
(
QTextStream
&
t
,
GraphOutputFormat
f
,
const
char
*
path
,
bool
writeImageMap
=
TRUE
);
const
char
*
path
,
const
char
*
relPath
,
bool
writeImageMap
=
TRUE
);
void
buildGraph
(
DotNode
*
n
,
MemberDef
*
md
,
int
distance
);
bool
isTrivial
()
const
;
...
...
src/doxygen.cpp
View file @
02b5f51e
...
...
@@ -118,12 +118,14 @@ QTime Doxygen::runningTime;
SearchIndex
*
Doxygen
::
searchIndex
=
0
;
SDict
<
DefinitionList
>
*
Doxygen
::
symbolMap
;
bool
Doxygen
::
outputToWizard
=
FALSE
;
QDict
<
int
>
*
Doxygen
::
htmlDirMap
=
0
;
static
StringList
inputFiles
;
static
StringDict
excludeNameDict
(
1009
);
// sections
static
QDict
<
void
>
compoundKeywordDict
(
7
);
// keywords recognised as compounds
static
OutputList
*
outputList
=
0
;
// list of output generating objects
void
clearAll
()
{
inputFiles
.
clear
();
...
...
src/doxygen.h
View file @
02b5f51e
...
...
@@ -101,6 +101,7 @@ class Doxygen
static
SearchIndex
*
searchIndex
;
static
SDict
<
DefinitionList
>
*
symbolMap
;
static
bool
outputToWizard
;
static
QDict
<
int
>
*
htmlDirMap
;
};
void
initDoxygen
();
...
...
src/htmldocvisitor.cpp
View file @
02b5f51e
...
...
@@ -61,7 +61,7 @@ void HtmlDocVisitor::visit(DocWord *w)
void
HtmlDocVisitor
::
visit
(
DocLinkedWord
*
w
)
{
if
(
m_hide
)
return
;
startLink
(
w
->
ref
(),
w
->
file
(),
w
->
anchor
());
startLink
(
w
->
ref
(),
w
->
file
(),
w
->
relPath
(),
w
->
anchor
());
filter
(
w
->
word
());
endLink
();
}
...
...
@@ -750,7 +750,7 @@ void HtmlDocVisitor::visitPost(DocDotFile *df)
void
HtmlDocVisitor
::
visitPre
(
DocLink
*
lnk
)
{
if
(
m_hide
)
return
;
startLink
(
lnk
->
ref
(),
lnk
->
file
(),
lnk
->
anchor
());
startLink
(
lnk
->
ref
(),
lnk
->
file
(),
lnk
->
relPath
(),
lnk
->
anchor
());
}
void
HtmlDocVisitor
::
visitPost
(
DocLink
*
)
...
...
@@ -762,7 +762,10 @@ void HtmlDocVisitor::visitPost(DocLink *)
void
HtmlDocVisitor
::
visitPre
(
DocRef
*
ref
)
{
if
(
m_hide
)
return
;
if
(
!
ref
->
file
().
isEmpty
())
startLink
(
ref
->
ref
(),
ref
->
file
(),
ref
->
anchor
());
if
(
!
ref
->
file
().
isEmpty
())
{
startLink
(
ref
->
ref
(),
ref
->
file
(),
ref
->
relPath
(),
ref
->
anchor
());
}
if
(
!
ref
->
hasLinkText
())
filter
(
ref
->
targetTitle
());
}
...
...
@@ -891,7 +894,7 @@ void HtmlDocVisitor::visitPost(DocXRefItem *)
void
HtmlDocVisitor
::
visitPre
(
DocInternalRef
*
ref
)
{
if
(
m_hide
)
return
;
startLink
(
0
,
ref
->
file
(),
ref
->
anchor
());
startLink
(
0
,
ref
->
file
(),
ref
->
relPath
(),
ref
->
anchor
());
}
void
HtmlDocVisitor
::
visitPost
(
DocInternalRef
*
)
...
...
@@ -972,7 +975,8 @@ void HtmlDocVisitor::filterQuotedCdataAttr(const char* str)
}
}
void
HtmlDocVisitor
::
startLink
(
const
QString
&
ref
,
const
QString
&
file
,
const
QString
&
anchor
)
void
HtmlDocVisitor
::
startLink
(
const
QString
&
ref
,
const
QString
&
file
,
const
QString
&
relPath
,
const
QString
&
anchor
)
{
QCString
*
dest
;
if
(
!
ref
.
isEmpty
())
// link to entity imported via tag file
...
...
@@ -989,7 +993,11 @@ void HtmlDocVisitor::startLink(const QString &ref,const QString &file,const QStr
m_t
<<
"href=
\"
"
;
if
(
!
ref
.
isEmpty
())
{
if
((
dest
=
Doxygen
::
tagDestinationDict
[
ref
]))
m_t
<<
*
dest
<<
"/"
;
if
((
dest
=
Doxygen
::
tagDestinationDict
[
ref
]))
m_t
<<
relPath
<<
*
dest
<<
"/"
;
}
else
{
m_t
<<
relPath
;
}
if
(
!
file
.
isEmpty
())
m_t
<<
file
<<
Doxygen
::
htmlFileExtension
;
if
(
!
anchor
.
isEmpty
())
m_t
<<
"#"
<<
anchor
;
...
...
src/htmldocvisitor.h
View file @
02b5f51e
...
...
@@ -135,7 +135,7 @@ class HtmlDocVisitor : public DocVisitor
void
filter
(
const
char
*
str
);
void
filterQuotedCdataAttr
(
const
char
*
str
);
void
startLink
(
const
QString
&
ref
,
const
QString
&
file
,
const
QString
&
anchor
);
const
QString
&
relPath
,
const
QString
&
anchor
);
void
endLink
();
void
writeDotFile
(
const
QString
&
fileName
);
...
...
src/htmlgen.cpp
View file @
02b5f51e
...
...
@@ -298,6 +298,7 @@ void HtmlGenerator::init()
g_footer
=
fileToString
(
Config_getString
(
"HTML_FOOTER"
));
//printf("g_footer='%s'\n",g_footer.data());
}
createSubDirs
(
d
);
}
void
HtmlGenerator
::
writeStyleSheetFile
(
QFile
&
file
)
...
...
@@ -306,7 +307,8 @@ void HtmlGenerator::writeStyleSheetFile(QFile &file)
t
<<
defaultStyleSheet
;
}
static
void
writeDefaultHeaderFile
(
QTextStream
&
t
,
const
char
*
title
)
static
void
writeDefaultHeaderFile
(
QTextStream
&
t
,
const
char
*
title
,
const
char
*
relPath
)
{
t
<<
"<!DOCTYPE HTML PUBLIC
\"
-//W3C//DTD HTML 4.01 Transitional//EN
\"
>
\n
"
"<html><head>"
...
...
@@ -319,7 +321,7 @@ static void writeDefaultHeaderFile(QTextStream &t, const char *title)
t
<<
"href=
\"
"
;
if
(
Config_getString
(
"HTML_STYLESHEET"
).
isEmpty
())
{
t
<<
"doxygen.css"
;
t
<<
relPath
<<
"doxygen.css"
;
}
else
{
...
...
@@ -342,7 +344,7 @@ void HtmlGenerator::writeHeaderFile(QFile &file)
#if QT_VERSION >= 200
t
.
setEncoding
(
QTextStream
::
Latin1
);
#endif
writeDefaultHeaderFile
(
t
,
"$title"
);
writeDefaultHeaderFile
(
t
,
"$title"
,
relativePathToRoot
(
0
)
);
}
void
HtmlGenerator
::
writeFooterFile
(
QFile
&
file
)
...
...
@@ -366,6 +368,8 @@ void HtmlGenerator::startFile(const char *name,const char *,
//printf("HtmlGenerator::startFile(%s)\n",name);
QCString
fileName
=
name
;
lastTitle
=
title
;
relPath
=
relativePathToRoot
(
fileName
);
if
(
fileName
.
right
(
Doxygen
::
htmlFileExtension
.
length
())
!=
Doxygen
::
htmlFileExtension
)
{
fileName
+=
Doxygen
::
htmlFileExtension
;
...
...
@@ -386,7 +390,7 @@ void HtmlGenerator::startFile(const char *name,const char *,
lastFile
=
fileName
;
if
(
g_header
.
isEmpty
())
{
writeDefaultHeaderFile
(
t
,
dispTitle
);
writeDefaultHeaderFile
(
t
,
dispTitle
,
relPath
);
}
else
{
...
...
@@ -425,7 +429,8 @@ void HtmlGenerator::startFile(const char *name,const char *,
// t << "</a> ";
//}
static
void
writePageFooter
(
QTextStream
&
t
,
const
QCString
lastTitle
)
static
void
writePageFooter
(
QTextStream
&
t
,
const
QCString
&
lastTitle
,
const
QCString
relPath
)
{
if
(
g_footer
.
isEmpty
())
{
...
...
@@ -435,8 +440,8 @@ static void writePageFooter(QTextStream &t,const QCString lastTitle)
Config_getString
(
"PROJECT_NAME"
)
);
t
<<
endl
<<
"<a href=
\"
http://www.doxygen.org/index.html
\"
>"
;
t
<<
endl
<<
"<img src=
\"
doxygen.png
\"
alt=
\"
doxygen
\"
"
<<
"align=
\"
middle
\"
border=0 >
"
<<
"</a>
"
<<
versionString
<<
" "
;
t
<<
endl
<<
"<img src=
\"
"
<<
relPath
<<
"
doxygen.png
\"
alt=
\"
doxygen
\"
"
<<
"align=
\"
middle
\"
border=0 >
"
<<
"</a>
"
<<
versionString
<<
" "
;
t
<<
"</small></address>
\n
</body>
\n
</html>
\n
"
;
}
else
...
...
@@ -447,7 +452,7 @@ static void writePageFooter(QTextStream &t,const QCString lastTitle)
void
HtmlGenerator
::
writeFooter
()
{
writePageFooter
(
t
,
lastTitle
);
writePageFooter
(
t
,
lastTitle
,
relPath
);
}
void
HtmlGenerator
::
endFile
()
...
...
@@ -562,10 +567,6 @@ void HtmlGenerator::writeIndexItem(const char *ref,const char *f,
{
t
<<
"</b>"
;
}
//if (Config_getBool("GENERATE_HTMLHELP") && f)
//{
// htmlHelp->addItem(name,((QCString)f)+htmlFileExtension);
//}
}
void
HtmlGenerator
::
writeStartAnnoItem
(
const
char
*
,
const
char
*
f
,
...
...
@@ -576,10 +577,6 @@ void HtmlGenerator::writeStartAnnoItem(const char *,const char *f,
t
<<
"<a class=
\"
el
\"
href=
\"
"
<<
f
<<
Doxygen
::
htmlFileExtension
<<
"
\"
>"
;
docify
(
name
);
t
<<
"</a> "
;
//if (Config_getBool("GENERATE_HTMLHELP") && f)
//{
// htmlHelp->addItem(name, ((QCString)f)+htmlFileExtension);
//}
}
void
HtmlGenerator
::
writeObjectLink
(
const
char
*
ref
,
const
char
*
f
,
...
...
@@ -600,7 +597,11 @@ void HtmlGenerator::writeObjectLink(const char *ref,const char *f,
t
<<
"href=
\"
"
;
if
(
ref
)
{
if
((
dest
=
Doxygen
::
tagDestinationDict
[
ref
]))
t
<<
*
dest
<<
"/"
;
if
((
dest
=
Doxygen
::
tagDestinationDict
[
ref
]))
t
<<
relPath
<<
*
dest
<<
"/"
;
}
else
{
t
<<
relPath
;
}
if
(
f
)
t
<<
f
<<
Doxygen
::
htmlFileExtension
;
if
(
anchor
)
t
<<
"#"
<<
anchor
;
...
...
@@ -627,7 +628,11 @@ void HtmlGenerator::writeCodeLink(const char *ref,const char *f,
t
<<
"href=
\"
"
;
if
(
ref
)
{
if
((
dest
=
Doxygen
::
tagDestinationDict
[
ref
]))
t
<<
*
dest
<<
"/"
;
if
((
dest
=
Doxygen
::
tagDestinationDict
[
ref
]))
t
<<
relPath
<<
*
dest
<<
"/"
;
}
else
{
t
<<
relPath
;
}
if
(
f
)
t
<<
f
<<
Doxygen
::
htmlFileExtension
;
if
(
anchor
)
t
<<
"#"
<<
anchor
;
...
...
@@ -640,7 +645,7 @@ void HtmlGenerator::writeCodeLink(const char *ref,const char *f,
void
HtmlGenerator
::
startTextLink
(
const
char
*
f
,
const
char
*
anchor
)
{
t
<<
"<a href=
\"
"
;
if
(
f
)
t
<<
f
<<
Doxygen
::
htmlFileExtension
;
if
(
f
)
t
<<
relPath
<<
f
<<
Doxygen
::
htmlFileExtension
;
if
(
anchor
)
t
<<
"#"
<<
anchor
;
t
<<
"
\"
>"
;
}
...
...
@@ -1019,7 +1024,7 @@ void HtmlGenerator::startMemberDocName(bool align)
void
HtmlGenerator
::
endMemberDocName
()
{
DBG_HTML
(
t
<<
"<!-- endMemberDocName -->"
<<
endl
;)
t
<<
"</td>"
<<
endl
;
t
<<
"
</td>"
<<
endl
;
}
void
HtmlGenerator
::
startParameterList
(
bool
openBracket
)
...
...
@@ -1108,10 +1113,13 @@ void HtmlGenerator::endParameterList()
t
<<
" </tr>"
<<
endl
;
}
void
HtmlGenerator
::
endMemberDoc
()
void
HtmlGenerator
::
endMemberDoc
(
bool
hasArgs
)
{
DBG_HTML
(
t
<<
"<!-- endMemberDoc -->"
<<
endl
;)
t
<<
endl
;
if
(
!
hasArgs
)
{
t
<<
" </tr>"
<<
endl
;
}
t
<<
" </table>"
<<
endl
;
t
<<
" </td>"
<<
endl
;
t
<<
" </tr>"
<<
endl
;
...
...
@@ -1124,7 +1132,7 @@ void HtmlGenerator::startDotGraph()
void
HtmlGenerator
::
endDotGraph
(
DotClassGraph
&
g
)
{
g
.
writeGraph
(
t
,
BITMAP
,
Config_getString
(
"HTML_OUTPUT"
)
);
g
.
writeGraph
(
t
,
BITMAP
,
dir
,
relPath
);
}
void
HtmlGenerator
::
startInclDepGraph
()
...
...
@@ -1133,7 +1141,7 @@ void HtmlGenerator::startInclDepGraph()
void
HtmlGenerator
::
endInclDepGraph
(
DotInclDepGraph
&
g
)
{
g
.
writeGraph
(
t
,
BITMAP
,
Config_getString
(
"HTML_OUTPUT"
)
);
g
.
writeGraph
(
t
,
BITMAP
,
dir
,
relPath
);
}
void
HtmlGenerator
::
startCallGraph
()
...
...
@@ -1142,12 +1150,12 @@ void HtmlGenerator::startCallGraph()
void
HtmlGenerator
::
endCallGraph
(
DotCallGraph
&
g
)
{
g
.
writeGraph
(
t
,
BITMAP
,
Config_getString
(
"HTML_OUTPUT"
)
);
g
.
writeGraph
(
t
,
BITMAP
,
dir
,
relPath
);
}
void
HtmlGenerator
::
writeGraphicalHierarchy
(
DotGfxHierarchyTable
&
g
)
{
g
.
writeGraph
(
t
,
Config_getString
(
"HTML_OUTPUT"
)
);
g
.
writeGraph
(
t
,
dir
);
}
void
HtmlGenerator
::
startMemberGroupHeader
(
bool
)
...
...
@@ -1278,7 +1286,8 @@ void HtmlGenerator::printDoc(DocNode *n)
}
static
void
startQuickIndexItem
(
QTextStream
&
t
,
const
char
*
l
,
bool
hl
,
bool
compact
,
bool
&
first
)
bool
hl
,
bool
compact
,
bool
&
first
,
const
QCString
&
relPath
)
{
if
(
!
first
&&
compact
)
t
<<
" | "
;
first
=
FALSE
;
...
...
@@ -1291,7 +1300,7 @@ static void startQuickIndexItem(QTextStream &t,const char *l,
{
t
<<
"<a class=
\"
qindex
\"
"
;
}
t
<<
"href=
\"
"
<<
l
<<
"
\"
>"
;
t
<<
"href=
\"
"
<<
relPath
<<
l
<<
"
\"
>"
;
}
static
void
endQuickIndexItem
(
QTextStream
&
t
)
...
...
@@ -1304,7 +1313,8 @@ static QCString fixSpaces(const QCString &s)
return
substitute
(
s
,
" "
,
" "
);
}
static
void
writeDefaultQuickLinks
(
QTextStream
&
t
,
bool
compact
,
HighlightedItem
hli
)
static
void
writeDefaultQuickLinks
(
QTextStream
&
t
,
bool
compact
,
HighlightedItem
hli
,
const
QCString
&
relPath
)
{
bool
first
=
TRUE
;
if
(
compact
)
...
...
@@ -1318,18 +1328,19 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,HighlightedItem h
if
(
Config_getBool
(
"SEARCHENGINE"
))
{
t
<<
" <form class=
\"
search
\"
action=
\"
search.php
\"
method=
\"
get
\"
>
\n
"
;
t
<<
" <form class=
\"
search
\"
action=
\"
"
<<
relPath
<<
"search.php
\"
method=
\"
get
\"
>
\n
"
;
}
if
(
Config_getBool
(
"GENERATE_TREEVIEW"
))
{
startQuickIndexItem
(
t
,
"main"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Main
,
compact
,
first
);
hli
==
HLI_Main
,
compact
,
first
,
relPath
);
}
else
{
startQuickIndexItem
(
t
,
"index"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Main
,
compact
,
first
);
hli
==
HLI_Main
,
compact
,
first
,
relPath
);
}
t
<<
fixSpaces
(
theTranslator
->
trMainPage
());
endQuickIndexItem
(
t
);
...
...
@@ -1337,14 +1348,14 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,HighlightedItem h
if
(
documentedGroups
>
0
)
{
startQuickIndexItem
(
t
,
"modules"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Modules
,
compact
,
first
);
hli
==
HLI_Modules
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trModules
());
endQuickIndexItem
(
t
);
}
if
(
documentedNamespaces
>
0
)
{
startQuickIndexItem
(
t
,
"namespaces"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Namespaces
,
compact
,
first
);
hli
==
HLI_Namespaces
,
compact
,
first
,
relPath
);
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_JAVA"
))
{
t
<<
fixSpaces
(
theTranslator
->
trPackages
());
...
...
@@ -1358,7 +1369,7 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,HighlightedItem h
if
(
hierarchyClasses
>
0
)
{
startQuickIndexItem
(
t
,
"hierarchy"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Hierarchy
,
compact
,
first
);
hli
==
HLI_Hierarchy
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trClassHierarchy
());
endQuickIndexItem
(
t
);
}
...
...
@@ -1367,54 +1378,54 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,HighlightedItem h
if
(
Config_getBool
(
"ALPHABETICAL_INDEX"
))
{
startQuickIndexItem
(
t
,
"classes"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Classes
,
compact
,
first
);
hli
==
HLI_Classes
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trAlphabeticalList
());
endQuickIndexItem
(
t
);
}
startQuickIndexItem
(
t
,
"annotated"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Annotated
,
compact
,
first
);
hli
==
HLI_Annotated
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trCompoundList
());
endQuickIndexItem
(
t
);
}
if
(
documentedHtmlFiles
>
0
)
{
startQuickIndexItem
(
t
,
"files"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Files
,
compact
,
first
);
hli
==
HLI_Files
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trFileList
());
endQuickIndexItem
(
t
);
}
if
(
documentedNamespaceMembers
[
NMHL_All
]
>
0
)
{
startQuickIndexItem
(
t
,
"namespacemembers"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_NamespaceMembers
,
compact
,
first
);
hli
==
HLI_NamespaceMembers
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trNamespaceMembers
());
endQuickIndexItem
(
t
);
}
if
(
documentedClassMembers
[
CMHL_All
]
>
0
)
{
startQuickIndexItem
(
t
,
"functions"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Functions
,
compact
,
first
);
hli
==
HLI_Functions
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trCompoundMembers
());
endQuickIndexItem
(
t
);
}
if
(
documentedFileMembers
[
FMHL_All
]
>
0
)
{
startQuickIndexItem
(
t
,
"globals"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Globals
,
compact
,
first
);
hli
==
HLI_Globals
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trFileMembers
());
endQuickIndexItem
(
t
);
}
if
(
indexedPages
>
0
)
{
startQuickIndexItem
(
t
,
"pages"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Pages
,
compact
,
first
);
hli
==
HLI_Pages
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trRelatedPages
());
endQuickIndexItem
(
t
);
}
if
(
Doxygen
::
exampleSDict
->
count
()
>
0
)
{
startQuickIndexItem
(
t
,
"examples"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Examples
,
compact
,
first
);
hli
==
HLI_Examples
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trExamples
());
endQuickIndexItem
(
t
);
}
...
...
@@ -1454,7 +1465,7 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,HighlightedItem h
void
HtmlGenerator
::
writeQuickLinks
(
bool
compact
,
HighlightedItem
hli
)
{
writeDefaultQuickLinks
(
t
,
compact
,
hli
);
writeDefaultQuickLinks
(
t
,
compact
,
hli
,
relPath
);
}
void
HtmlGenerator
::
writeSearchPage
()
...
...
@@ -1471,7 +1482,7 @@ void HtmlGenerator::writeSearchPage()
#endif
if
(
g_header
.
isEmpty
())
{
writeDefaultHeaderFile
(
t
,
"Search"
);
writeDefaultHeaderFile
(
t
,
"Search"
,
0
);
}
else
{
...
...
@@ -1481,7 +1492,7 @@ void HtmlGenerator::writeSearchPage()
<<
versionString
<<
" -->"
<<
endl
;
if
(
!
Config_getBool
(
"DISABLE_INDEX"
))
{
writeDefaultQuickLinks
(
t
,
TRUE
,
HLI_Search
);
writeDefaultQuickLinks
(
t
,
TRUE
,
HLI_Search
,
""
);
}
t
<<
"
\n
<?php
\n\n
"
;
...
...
@@ -1514,7 +1525,7 @@ void HtmlGenerator::writeSearchPage()
t
<<
search_script
;
t
<<
"
\n
"
;
t
<<
"?>
\n
"
;
writePageFooter
(
t
,
"Search"
);
writePageFooter
(
t
,
"Search"
,
""
);
}
}
}
...
...
src/htmlgen.h
View file @
02b5f51e
...
...
@@ -128,7 +128,7 @@ class HtmlGenerator : public OutputGenerator
void
lineBreak
()
{
t
<<
"<br>"
<<
endl
;
}
void
writeChar
(
char
c
);
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
void
endMemberDoc
();
void
endMemberDoc
(
bool
);
void
startDoxyAnchor
(
const
char
*
fName
,
const
char
*
manName
,
const
char
*
anchor
,
const
char
*
name
);
void
endDoxyAnchor
(
const
char
*
fName
,
const
char
*
anchor
);
...
...
@@ -214,6 +214,7 @@ class HtmlGenerator : public OutputGenerator
private
:
QCString
lastTitle
;
QCString
lastFile
;
QCString
relPath
;
HtmlGenerator
&
operator
=
(
const
HtmlGenerator
&
g
);
HtmlGenerator
(
const
HtmlGenerator
&
g
);
...
...
src/latexdocvisitor.cpp
View file @
02b5f51e
...
...
@@ -904,7 +904,7 @@ void LatexDocVisitor::visitPre(DocXRefItem *x)
m_t
<<
"
\\
item["
;
if
(
Config_getBool
(
"PDF_HYPERLINKS"
))
{
m_t
<<
"
\\
hyperlink{"
<<
x
->
file
(
)
<<
"_"
<<
x
->
anchor
()
<<
"}{"
;
m_t
<<
"
\\
hyperlink{"
<<
stripPath
(
x
->
file
()
)
<<
"_"
<<
x
->
anchor
()
<<
"}{"
;
}
else
{
...
...
@@ -960,7 +960,7 @@ void LatexDocVisitor::startLink(const QString &ref,const QString &file,const QSt
if
(
ref
.
isEmpty
()
&&
Config_getBool
(
"PDF_HYPERLINKS"
))
{
m_t
<<
"
\\
hyperlink{"
;
if
(
!
file
.
isEmpty
())
m_t
<<
file
;
if
(
!
file
.
isEmpty
())
m_t
<<
stripPath
(
file
)
;
if
(
!
file
.
isEmpty
()
&&
!
anchor
.
isEmpty
())
m_t
<<
"_"
;
if
(
!
anchor
.
isEmpty
())
m_t
<<
anchor
;
m_t
<<
"}{"
;
...
...
src/latexgen.cpp
View file @
02b5f51e
...
...
@@ -51,6 +51,7 @@
// return result;
//}
static
QCString
escapeLabelName
(
const
char
*
s
)
{
QCString
result
;
...
...
@@ -222,6 +223,8 @@ void LatexGenerator::init()
t
<<
endl
<<
"clean:"
<<
endl
<<
"
\t
rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf"
<<
endl
;
createSubDirs
(
d
);
}
static
void
writeDefaultHeaderPart1
(
QTextStream
&
t
)
...
...
@@ -441,6 +444,7 @@ void LatexGenerator::writeStyleSheetFile(QFile &f)
void
LatexGenerator
::
startFile
(
const
char
*
name
,
const
char
*
,
const
char
*
)
{
QCString
fileName
=
name
;
relPath
=
relativePathToRoot
(
fileName
);
if
(
fileName
.
right
(
4
)
!=
".tex"
&&
fileName
.
right
(
4
)
!=
".sty"
)
fileName
+=
".tex"
;
startPlainFile
(
fileName
);
}
...
...
@@ -926,7 +930,7 @@ void LatexGenerator::startTextLink(const char *f,const char *anchor)
if
(
Config_getBool
(
"PDF_HYPERLINKS"
))
{
t
<<
"
\\
hyperlink{"
;
if
(
f
)
t
<<
f
;
if
(
f
)
t
<<
stripPath
(
f
)
;
if
(
anchor
)
t
<<
"_"
<<
anchor
;
t
<<
"}{"
;
}
...
...
@@ -947,7 +951,7 @@ void LatexGenerator::writeObjectLink(const char *ref, const char *f,
if
(
!
ref
&&
Config_getBool
(
"PDF_HYPERLINKS"
))
{
t
<<
"
\\
hyperlink{"
;
if
(
f
)
t
<<
f
;
if
(
f
)
t
<<
stripPath
(
f
)
;
if
(
f
&&
anchor
)
t
<<
"_"
;
if
(
anchor
)
t
<<
anchor
;
t
<<
"}{"
;
...
...
@@ -986,7 +990,7 @@ void LatexGenerator::startTitleHead(const char *fileName)
{
if
(
Config_getBool
(
"PDF_HYPERLINKS"
)
&&
fileName
)
{
t
<<
"
\\
hypertarget{"
<<
fileName
<<
"}{"
<<
endl
;
t
<<
"
\\
hypertarget{"
<<
stripPath
(
fileName
)
<<
"}{"
<<
endl
;
}
if
(
Config_getBool
(
"COMPACT_LATEX"
))
{
...
...
@@ -1100,7 +1104,7 @@ void LatexGenerator::startMemberDoc(const char *clname,
t
<<
"{
\\
setlength{
\\
rightskip}{0pt plus 5cm}"
;
}
void
LatexGenerator
::
endMemberDoc
()
void
LatexGenerator
::
endMemberDoc
(
bool
)
{
t
<<
"}"
;
if
(
Config_getBool
(
"COMPACT_LATEX"
))
t
<<
"
\\
hfill"
;
...
...
@@ -1112,7 +1116,7 @@ void LatexGenerator::startDoxyAnchor(const char *fName,const char *,
if
(
Config_getBool
(
"PDF_HYPERLINKS"
))
{
t
<<
"
\\
hypertarget{"
;
if
(
fName
)
t
<<
fName
;
if
(
fName
)
t
<<
stripPath
(
fName
)
;
if
(
anchor
)
t
<<
"_"
<<
anchor
;
t
<<
"}{"
<<
endl
;
}
...
...
@@ -1136,7 +1140,7 @@ void LatexGenerator::writeAnchor(const char *fName,const char *name)
t
<<
"
\\
label{"
<<
name
<<
"}"
<<
endl
;
if
(
fName
&&
Config_getBool
(
"PDF_HYPERLINKS"
))
{
t
<<
"
\\
hypertarget{"
<<
fName
<<
"_"
<<
name
<<
"}{}"
<<
endl
;
t
<<
"
\\
hypertarget{"
<<
stripPath
(
fName
)
<<
"_"
<<
name
<<
"}{}"
<<
endl
;
}
}
...
...
@@ -1168,7 +1172,7 @@ void LatexGenerator::startSection(const char *lab,const char *,SectionInfo::Sect
{
if
(
Config_getBool
(
"PDF_HYPERLINKS"
))
{
t
<<
"
\\
hypertarget{"
<<
lab
<<
"}{}"
;
t
<<
"
\\
hypertarget{"
<<
stripPath
(
lab
)
<<
"}{}"
;
}
t
<<
"
\\
"
;
if
(
Config_getBool
(
"COMPACT_LATEX"
))
...
...
@@ -1380,7 +1384,7 @@ void LatexGenerator::startDotGraph()
void
LatexGenerator
::
endDotGraph
(
DotClassGraph
&
g
)
{
g
.
writeGraph
(
t
,
EPS
,
Config_getString
(
"LATEX_OUTPUT"
));
g
.
writeGraph
(
t
,
EPS
,
Config_getString
(
"LATEX_OUTPUT"
)
,
relPath
);
}
void
LatexGenerator
::
startInclDepGraph
()
...
...
@@ -1389,7 +1393,7 @@ void LatexGenerator::startInclDepGraph()
void
LatexGenerator
::
endInclDepGraph
(
DotInclDepGraph
&
g
)
{
g
.
writeGraph
(
t
,
EPS
,
Config_getString
(
"LATEX_OUTPUT"
));
g
.
writeGraph
(
t
,
EPS
,
Config_getString
(
"LATEX_OUTPUT"
)
,
relPath
);
}
void
LatexGenerator
::
startCallGraph
()
...
...
@@ -1398,7 +1402,7 @@ void LatexGenerator::startCallGraph()
void
LatexGenerator
::
endCallGraph
(
DotCallGraph
&
g
)
{
g
.
writeGraph
(
t
,
EPS
,
Config_getString
(
"LATEX_OUTPUT"
));
g
.
writeGraph
(
t
,
EPS
,
Config_getString
(
"LATEX_OUTPUT"
)
,
relPath
);
}
void
LatexGenerator
::
startDescription
()
...
...
src/latexgen.h
View file @
02b5f51e
...
...
@@ -142,7 +142,7 @@ class LatexGenerator : public OutputGenerator
void
endDescItem
();
void
lineBreak
()
{
t
<<
"
\\
par
\n
"
;
}
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
void
endMemberDoc
();
void
endMemberDoc
(
bool
);
void
startDoxyAnchor
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
void
endDoxyAnchor
(
const
char
*
,
const
char
*
);
void
startCodeAnchor
(
const
char
*
)
{}
...
...
@@ -299,6 +299,7 @@ class LatexGenerator : public OutputGenerator
bool
insideTabbing
;
bool
firstDescItem
;
bool
insidePre
;
QCString
relPath
;
};
#endif
src/mangen.cpp
View file @
02b5f51e
...
...
@@ -35,10 +35,9 @@ static QCString getExtension()
{
QCString
ext
=
Config_getString
(
"MAN_EXTENSION"
);
if
(
ext
.
length
()
>=
2
&&
ext
.
data
()[
0
]
==
'.'
&&
isdigit
(
ext
.
data
()[
1
]
)
)
ext
.
data
()[
0
]
==
'.'
)
{
ext
=
ext
.
mid
(
1
,
1
);
ext
=
ext
.
mid
(
1
,
ext
.
length
()
-
1
);
}
else
{
...
...
@@ -95,6 +94,7 @@ void ManGenerator::init()
err
(
"Could not create output directory %s/man%s
\n
"
,
manOutput
.
data
(),
ext
.
data
());
exit
(
1
);
}
createSubDirs
(
d
);
}
static
QCString
buildFileName
(
const
char
*
name
)
...
...
@@ -405,7 +405,7 @@ void ManGenerator::startDoxyAnchor(const char *,const char *manName,
linkfile
.
close
();
}
void
ManGenerator
::
endMemberDoc
()
void
ManGenerator
::
endMemberDoc
(
bool
)
{
t
<<
"
\"
"
;
}
...
...
src/mangen.h
View file @
02b5f51e
...
...
@@ -135,7 +135,7 @@ class ManGenerator : public OutputGenerator
void
lineBreak
()
{
t
<<
"
\n
.br"
<<
endl
;
}
void
writeChar
(
char
c
);
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
void
endMemberDoc
();
void
endMemberDoc
(
bool
);
void
startDoxyAnchor
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
void
endDoxyAnchor
(
const
char
*
,
const
char
*
)
{}
void
startCodeAnchor
(
const
char
*
)
{}
...
...
src/memberdef.cpp
View file @
02b5f51e
...
...
@@ -74,24 +74,33 @@ static QCString addTemplateNames(const QCString &s,const QCString &n,const QCStr
return
result
;
}
static
void
writeDefArgumentList
(
OutputList
&
ol
,
ClassDef
*
cd
,
static
bool
writeDefArgumentList
(
OutputList
&
ol
,
ClassDef
*
cd
,
const
QCString
&
/*scopeName*/
,
MemberDef
*
md
)
{
ArgumentList
*
defArgList
=
md
->
isDocsForDefinition
()
?
md
->
argumentList
()
:
md
->
declArgumentList
();
//printf("writeDefArgumentList `%s' isDocsForDefinition()=%d\n",md->name().data(),md->isDocsForDefinition());
if
(
defArgList
==
0
)
return
;
// member has no function like argument list
if
(
defArgList
==
0
)
{
return
FALSE
;
// member has no function like argument list
}
if
(
!
md
->
isDefine
())
ol
.
docify
(
" "
);
//printf("writeDefArgList(%d)\n",defArgList->count());
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
{
// html
ol
.
endMemberDocName
();
ol
.
startParameterList
(
!
md
->
isObjCMethod
());
}
ol
.
enableAll
();
ol
.
disable
(
OutputGenerator
::
Html
);
{
// other formats
if
(
!
md
->
isObjCMethod
())
ol
.
docify
(
"("
);
// start argument list
ol
.
endMemberDocName
();
}
ol
.
popGeneratorState
();
//printf("===> name=%s isDefine=%d\n",md->name().data(),md->isDefine());
...
...
@@ -227,6 +236,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
{
ol
.
docify
(
" volatile"
);
}
return
TRUE
;
}
static
void
writeTemplatePrefix
(
OutputList
&
ol
,
ArgumentList
*
al
)
...
...
@@ -1168,11 +1178,11 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
)
{
// if this member is in a group find the real scope name.
bool
hasParameterList
=
FALSE
;
bool
hasDocs
=
isDetailedSectionVisible
(
inGroup
);
//printf("MemberDef::writeDocumentation(): name=`%s' hasDocs=`%d' containerType=%d inGroup=%d\n",
// name().data(),hasDocs,container->definitionType(),inGroup);
if
(
hasDocs
)
{
if
(
!
hasDocs
)
return
;
QCString
scopeName
=
scName
;
if
(
container
->
definitionType
()
==
TypeGroup
)
{
...
...
@@ -1328,7 +1338,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
}
}
ol
.
startMemberDocName
(
isObjCMethod
());
if
(
isObjCMethod
())
if
(
cd
&&
cd
->
isObjectiveC
())
{
// strip scope name
int
ep
=
ldef
.
find
(
"::"
);
...
...
@@ -1350,7 +1360,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
//printf("start >%s<\n",ldef.data());
int
i
=
l
-
1
;
while
(
i
>=
0
&&
(
isId
(
ldef
.
at
(
i
))
||
ldef
.
at
(
i
)
==
':'
))
i
--
;
while
(
i
>=
0
&&
isspace
(
ldef
.
at
(
i
)))
i
--
;
while
(
i
>=
0
&&
isspace
((
uchar
)
ldef
.
at
(
i
)))
i
--
;
if
(
i
>
0
)
{
// insert braches around the type
...
...
@@ -1361,7 +1371,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
if
(
isStatic
())
ldef
.
prepend
(
"+ "
);
else
ldef
.
prepend
(
"- "
);
}
linkifyText
(
TextGeneratorOLImpl
(
ol
),
container
,
getBodyDef
(),
name
(),
ldef
);
writeDefArgumentList
(
ol
,
cd
,
scopeName
,
this
);
hasParameterList
=
writeDefArgumentList
(
ol
,
cd
,
scopeName
,
this
);
if
(
hasOneLineInitializer
())
// add initializer
{
if
(
!
isDefine
())
...
...
@@ -1438,8 +1448,16 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
ol
.
docify
(
" [implementation]"
);
ol
.
endTypewriter
();
}
if
(
!
isDefine
()
&&
defArgList
)
ol
.
endParameterList
();
ol
.
endMemberDoc
();
if
(
hasParameterList
)
{
ol
.
endParameterList
();
ol
.
endMemberDoc
(
TRUE
);
}
else
{
ol
.
endMemberDocName
();
ol
.
endMemberDoc
(
FALSE
);
}
ol
.
endDoxyAnchor
(
cfname
,
anchor
());
ol
.
startIndent
();
...
...
@@ -1768,11 +1786,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
ol
.
newParagraph
();
ol
.
enableAll
();
ol
.
endIndent
();
// enable LaTeX again
//if (Config_getBool("EXTRACT_ALL") && !hasDocs) ol.enable(OutputGenerator::Latex);
ol
.
popGeneratorState
();
if
((
m_hasCallGraph
||
Config_getBool
(
"CALL_GRAPH"
))
&&
isFunction
()
&&
Config_getBool
(
"HAVE_DOT"
)
)
...
...
@@ -1789,7 +1802,11 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
ol
.
enableAll
();
}
}
}
ol
.
endIndent
();
// enable LaTeX again
//if (Config_getBool("EXTRACT_ALL") && !hasDocs) ol.enable(OutputGenerator::Latex);
ol
.
popGeneratorState
();
}
...
...
@@ -1969,7 +1986,7 @@ void MemberDef::setInitializer(const char *initializer)
{
init
=
initializer
;
int
p
=
init
.
length
()
-
1
;
while
(
p
>=
0
&&
isspace
(
init
.
at
(
p
)))
p
--
;
while
(
p
>=
0
&&
isspace
(
(
uchar
)
init
.
at
(
p
)))
p
--
;
init
=
init
.
left
(
p
+
1
);
initLines
=
init
.
contains
(
'\n'
);
}
...
...
@@ -2209,4 +2226,21 @@ bool MemberDef::isObjCMethod() const
return
FALSE
;
}
QCString
MemberDef
::
qualifiedName
()
const
{
if
(
isObjCMethod
())
{
QCString
qm
;
if
(
isStatic
())
qm
=
"+"
;
else
qm
=
"-"
;
qm
+=
"["
;
qm
+=
classDef
->
name
()
+
" "
;
qm
+=
name
();
qm
+=
"]"
;
return
qm
;
}
else
{
return
Definition
::
qualifiedName
();
}
}
src/memberdef.h
View file @
02b5f51e
...
...
@@ -99,6 +99,7 @@ class MemberDef : public Definition
const
char
*
getGroupFileName
()
const
{
return
groupFileName
;
}
int
getGroupStartLine
()
const
{
return
groupStartLine
;
}
bool
getGroupHasDocs
()
const
{
return
groupHasDocs
;
}
QCString
qualifiedName
()
const
;
// direct kind info
Protection
protection
()
const
{
return
prot
;
}
...
...
src/outputgen.h
View file @
02b5f51e
...
...
@@ -316,7 +316,7 @@ class OutputGenerator : public BaseOutputDocInterface
virtual
void
insertMemberAlign
()
=
0
;
virtual
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
=
0
;
virtual
void
endMemberDoc
()
=
0
;
virtual
void
endMemberDoc
(
bool
)
=
0
;
virtual
void
startDoxyAnchor
(
const
char
*
fName
,
const
char
*
manName
,
const
char
*
anchor
,
const
char
*
name
)
=
0
;
virtual
void
endDoxyAnchor
(
const
char
*
fileName
,
const
char
*
anchor
)
=
0
;
...
...
src/outputlist.h
View file @
02b5f51e
...
...
@@ -207,8 +207,8 @@ class OutputList : public OutputDocInterface
void
startMemberDoc
(
const
char
*
clName
,
const
char
*
memName
,
const
char
*
anchor
,
const
char
*
title
)
{
forall
(
&
OutputGenerator
::
startMemberDoc
,
clName
,
memName
,
anchor
,
title
);
}
void
endMemberDoc
()
{
forall
(
&
OutputGenerator
::
endMemberDoc
);
}
void
endMemberDoc
(
bool
hasArgs
)
{
forall
(
&
OutputGenerator
::
endMemberDoc
,
hasArgs
);
}
void
startDoxyAnchor
(
const
char
*
fName
,
const
char
*
manName
,
const
char
*
anchor
,
const
char
*
name
)
{
forall
(
&
OutputGenerator
::
startDoxyAnchor
,
fName
,
manName
,
anchor
,
name
);
}
...
...
src/rtfgen.cpp
View file @
02b5f51e
...
...
@@ -190,6 +190,8 @@ void RTFGenerator::init()
{
loadExtensions
(
rtfExtensionsFile
);
}
createSubDirs
(
d
);
}
static
QCString
makeIndexName
(
const
char
*
s
,
int
i
)
...
...
@@ -322,6 +324,7 @@ void RTFGenerator::beginRTFSection()
void
RTFGenerator
::
startFile
(
const
char
*
name
,
const
char
*
,
const
char
*
)
{
QCString
fileName
=
name
;
relPath
=
relativePathToRoot
(
fileName
);
if
(
fileName
.
right
(
4
)
!=
".rtf"
)
fileName
+=
".rtf"
;
startPlainFile
(
fileName
);
...
...
@@ -1357,7 +1360,7 @@ void RTFGenerator::startMemberDoc(const char *clname,
t
<<
endl
;
}
void
RTFGenerator
::
endMemberDoc
()
void
RTFGenerator
::
endMemberDoc
(
bool
)
{
DBG_RTF
(
t
<<
"{
\\
comment endMemberDoc}"
<<
endl
)
t
<<
"}"
<<
endl
;
...
...
@@ -2188,7 +2191,7 @@ void RTFGenerator::endDotGraph(DotClassGraph &g)
newParagraph
();
QCString
fileName
=
g
.
writeGraph
(
t
,
BITMAP
,
Config_getString
(
"RTF_OUTPUT"
),
TRUE
,
FALSE
);
g
.
writeGraph
(
t
,
BITMAP
,
Config_getString
(
"RTF_OUTPUT"
),
relPath
,
TRUE
,
FALSE
);
// display the file
t
<<
"{"
<<
endl
;
...
...
@@ -2210,7 +2213,8 @@ void RTFGenerator::endInclDepGraph(DotInclDepGraph &g)
{
newParagraph
();
QCString
fileName
=
g
.
writeGraph
(
t
,
BITMAP
,
Config_getString
(
"RTF_OUTPUT"
),
FALSE
);
QCString
fileName
=
g
.
writeGraph
(
t
,
BITMAP
,
Config_getString
(
"RTF_OUTPUT"
),
relPath
,
FALSE
);
// display the file
t
<<
"{"
<<
endl
;
...
...
@@ -2231,7 +2235,8 @@ void RTFGenerator::endCallGraph(DotCallGraph &g)
{
newParagraph
();
QCString
fileName
=
g
.
writeGraph
(
t
,
BITMAP
,
Config_getString
(
"RTF_OUTPUT"
),
FALSE
);
QCString
fileName
=
g
.
writeGraph
(
t
,
BITMAP
,
Config_getString
(
"RTF_OUTPUT"
),
relPath
,
FALSE
);
// display the file
t
<<
"{"
<<
endl
;
...
...
src/rtfgen.h
View file @
02b5f51e
...
...
@@ -134,7 +134,7 @@ class RTFGenerator : public OutputGenerator
void
endDescItem
();
void
lineBreak
();
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
void
endMemberDoc
();
void
endMemberDoc
(
bool
);
void
startDoxyAnchor
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
void
endDoxyAnchor
(
const
char
*
,
const
char
*
);
void
startCodeAnchor
(
const
char
*
)
{};
...
...
@@ -282,6 +282,7 @@ class RTFGenerator : public OutputGenerator
int
m_listLevel
;
// // RTF does not really have a addative indent...manually set list level.
bool
m_omitParagraph
;
// should a the next paragraph command be ignored?
int
m_numCols
;
// number of columns in a table
QCString
relPath
;
void
beginRTFDocument
();
void
beginRTFChapter
();
...
...
src/scanner.l
View file @
02b5f51e
...
...
@@ -516,7 +516,7 @@ static void splitKnRArg(QCString &oldStyleArgPtr,QCString &oldStyleArgName)
int s=bi2+1;
oldStyleArgType = current->args.left(s);
int i=s;
while (i<si && ((c=current->args.at(i))=='*' || isspace(c))) i++;
while (i<si && ((c=current->args.at(i))=='*' || isspace(
(uchar)
c))) i++;
oldStyleArgType += current->args.mid(s,i-s);
s=i;
while (i<si && isId(current->args.at(i))) i++;
...
...
@@ -529,7 +529,7 @@ static void splitKnRArg(QCString &oldStyleArgPtr,QCString &oldStyleArgName)
oldStyleArgType = current->args.left(s);
s++;
int i=s+1;
while (i<si && ((c=current->args.at(i))=='*' || isspace(c))) i++;
while (i<si && ((c=current->args.at(i))=='*' || isspace(
(uchar)
c))) i++;
oldStyleArgType += current->args.mid(s,i-s);
s=i;
while (i<si && isId(current->args.at(i))) i++;
...
...
@@ -543,7 +543,7 @@ static void splitKnRArg(QCString &oldStyleArgPtr,QCString &oldStyleArgName)
while (i>=0 && isId(current->args.at(i))) i--;
j=i+1;
// look for start of *'s
while (i>=0 && ((c=current->args.at(i))=='*' || isspace(c))) i--;
while (i>=0 && ((c=current->args.at(i))=='*' || isspace(
(uchar)
c))) i--;
i++;
if (i!=l)
{
...
...
@@ -561,7 +561,7 @@ static void splitKnRArg(QCString &oldStyleArgPtr,QCString &oldStyleArgName)
{
int l=si,j=0;
char c;
while (j<l && ((c=current->args.at(j))=='*' || isspace(c))) j++;
while (j<l && ((c=current->args.at(j))=='*' || isspace(
(uchar)
c))) j++;
if (j>0)
{
oldStyleArgPtr=current->args.left(j);
...
...
@@ -750,7 +750,6 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
%x PageDocArg2
%x FileDocArg1
%x FileDocArg2
%x ExampleDoc
%x ExampleDocArg1
%x EnumDocArg1
%x FuncPtr
...
...
@@ -1067,9 +1066,17 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<ObjCReturnType>")" {
BEGIN( ObjCMethod );
}
<ObjCParams>{ID}/":" { // Keyword of parameter
current->argList->getLast()->attrib=(QCString)"["+yytext+"]";
current->name += yytext;
<ObjCParams>{ID}{BN}*/":" { // Keyword of parameter
lineCount();
QCString keyw = QCString(yytext).stripWhiteSpace();
current->name += keyw;
if (current->argList->getLast()->type.isEmpty())
{
current->argList->getLast()->type="id";
}
Argument *a = new Argument;
a->attrib=(QCString)"["+keyw+"]";
current->argList->append(a);
}
<ObjCParams>{ID}{BN}* { // name of parameter
lineCount();
...
...
@@ -1085,17 +1092,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<ObjCParams>"(" {
BEGIN( ObjCParamType );
}
<ObjCParams>{BN}* {
lineCount();
if (current->argList->getLast()->type.isEmpty())
{
current->argList->getLast()->type="id";
}
Argument *a = new Argument;
current->argList->append(a);
}
<ObjCParamType>[^)]* {
current->argList->
l
ast()->type=yytext;
current->argList->
getL
ast()->type=yytext;
}
<ObjCParamType>")"{B}* {
BEGIN( ObjCParams );
...
...
@@ -1107,6 +1105,9 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
BEGIN( Function );
}
<ObjCMethod,ObjCParams>"{" { // start of a method body
//printf("Type=%s Name=%s args=%s\n",
// current->type.data(),current->name.data(),argListToString(current->argList).data()
// );
unput('{');
BEGIN( Function );
}
...
...
@@ -3940,14 +3941,14 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->groupDocType = Entry::GROUPDOC_NORMAL;
BEGIN( GroupDocArg1 );
}
<Doc,PageDoc,
ExampleDoc,
JavaDoc>{B}*{CMD}"addtogroup"{B}+ {
<Doc,PageDoc,JavaDoc>{B}*{CMD}"addtogroup"{B}+ {
current->section = Entry::GROUPDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->groupDocType = Entry::GROUPDOC_ADD;
BEGIN( GroupDocArg1 );
}
<Doc,PageDoc,
ExampleDoc,
JavaDoc>{B}*{CMD}"weakgroup"{B}+ {
<Doc,PageDoc,JavaDoc>{B}*{CMD}"weakgroup"{B}+ {
current->section = Entry::GROUPDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
...
...
@@ -4163,7 +4164,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
}
<ExampleDocArg1>{FILE} {
current->name = stripQuotes(yytext);
BEGIN(
Exampl
eDoc );
BEGIN(
Pag
eDoc );
}
<ClassDoc,Doc,JavaDoc>{B}*{CMD}"relate"[sd]{B}* {
lastDocRelContext = YY_START;
...
...
@@ -4362,22 +4363,22 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<PageDoc>{CMD}"refitem".*"\n" {
current->doc+=yytext;
}
<
ExampleDoc,
ClassDoc,PageDoc,Doc,JavaDoc>{CMD}"section"{B}+ {
<ClassDoc,PageDoc,Doc,JavaDoc>{CMD}"section"{B}+ {
//sectionType=SectionInfo::Section;
current->doc+=yytext;
BEGIN(SectionLabel);
}
<
ExampleDoc,
ClassDoc,PageDoc,Doc,JavaDoc>{CMD}"subsection"{B}+ {
<ClassDoc,PageDoc,Doc,JavaDoc>{CMD}"subsection"{B}+ {
//sectionType=SectionInfo::Subsection;
current->doc+=yytext;
BEGIN(SectionLabel);
}
<
ExampleDoc,
ClassDoc,PageDoc,Doc,JavaDoc>{CMD}"subsubsection"{B}+ {
<ClassDoc,PageDoc,Doc,JavaDoc>{CMD}"subsubsection"{B}+ {
//sectionType=SectionInfo::Subsubsection;
current->doc+=yytext;
BEGIN(SectionLabel);
}
<
ExampleDoc,
ClassDoc,PageDoc,Doc,JavaDoc>{CMD}"paragraph"{B}+ {
<ClassDoc,PageDoc,Doc,JavaDoc>{CMD}"paragraph"{B}+ {
//sectionType=SectionInfo::Paragraph;
current->doc+=yytext;
BEGIN(SectionLabel);
...
...
@@ -4418,7 +4419,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->brief.resize(0);
BEGIN(lastDocContext);
}
<
ExampleDoc,
Doc,PageDoc,JavaDoc,ClassDoc>{CMD}"anchor"{B}+ {
<Doc,PageDoc,JavaDoc,ClassDoc>{CMD}"anchor"{B}+ {
lastAnchorContext = YY_START;
//sectionType=SectionInfo::Anchor;
current->doc+=yytext;
...
...
@@ -4640,9 +4641,9 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
sectionTitle+=yytext;
current->doc+=yytext;
}
<
ExampleDoc,
PageDoc,ClassDoc>"\n" { yyLineNr++ ; current->doc+=yytext; }
<
ExampleDoc,
PageDoc,ClassDoc>[a-z_A-Z0-9 \t]+ { current->doc += yytext; }
<
ExampleDoc,
PageDoc>{CMD}"ingroup"{B}+ {
<PageDoc,ClassDoc>"\n" { yyLineNr++ ; current->doc+=yytext; }
<PageDoc,ClassDoc>[a-z_A-Z0-9 \t]+ { current->doc += yytext; }
<PageDoc>{CMD}"ingroup"{B}+ {
lastGroupContext = YY_START;
lineCount();
BEGIN( GroupName );
...
...
@@ -4663,20 +4664,20 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
endGroup();
memberGroupHeader.resize(0);
}
<
ExampleDoc,
PageDoc,ClassDoc>. { current->doc += yytext; }
<Doc,JavaDoc,LineDoc,
ExampleDoc,
PageDoc,ClassDoc>^{B}*"//"
<Doc,
ExampleDoc,
PageDoc,ClassDoc>"//" { current->doc += yytext; }
<PageDoc,ClassDoc>. { current->doc += yytext; }
<Doc,JavaDoc,LineDoc,PageDoc,ClassDoc>^{B}*"//"
<Doc,PageDoc,ClassDoc>"//" { current->doc += yytext; }
<LineDoc,JavaDoc,ClassDocBrief>"//" { current->brief += yytext; }
<Doc,JavaDoc,LineDoc,
ExampleDoc,
ClassDocBrief,PageDoc,ClassDoc,AfterDoc,AfterDocLine,AfterDocBrief>("\\\\"|"@@")"f"[$\[\]] {
<Doc,JavaDoc,LineDoc,ClassDocBrief,PageDoc,ClassDoc,AfterDoc,AfterDocLine,AfterDocBrief>("\\\\"|"@@")"f"[$\[\]] {
current->doc += yytext;
}
<Doc,JavaDoc,LineDoc,
ExampleDoc,
ClassDocBrief,PageDoc,ClassDoc,AfterDoc,AfterDocLine,AfterDocBrief,CopyArgComment,CopyArgCommentLine>{CMD}"f$" {
<Doc,JavaDoc,LineDoc,ClassDocBrief,PageDoc,ClassDoc,AfterDoc,AfterDocLine,AfterDocBrief,CopyArgComment,CopyArgCommentLine>{CMD}"f$" {
lastFormulaContext = YY_START;
formulaText="$";
insideFormula=TRUE;
BEGIN(ReadFormulaShort);
}
<Doc,JavaDoc,LineDoc,
ExampleDoc,
ClassDocBrief,PageDoc,ClassDoc,AfterDoc,AfterDocLine,AfterDocBrief,CopyArgComment,CopyArgCommentLine>{CMD}"f[" {
<Doc,JavaDoc,LineDoc,ClassDocBrief,PageDoc,ClassDoc,AfterDoc,AfterDocLine,AfterDocBrief,CopyArgComment,CopyArgCommentLine>{CMD}"f[" {
lastFormulaContext = YY_START;
formulaText="\\[";
insideFormula=TRUE;
...
...
@@ -4742,7 +4743,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
}
<ReadFormulaLong>\n { formulaText+=*yytext; yyLineNr++; }
<ReadFormulaLong,ReadFormulaShort>. { formulaText+=*yytext; }
<
ExampleDoc,
PageDoc,ClassDocBrief,ClassDoc,ReadFormulaShort,ReadFormulaLong>{B}*"*/" {
<PageDoc,ClassDocBrief,ClassDoc,ReadFormulaShort,ReadFormulaLong>{B}*"*/" {
checkDocs();
//printf("current->section=%x\n",current->section);
if (YY_START==SkipCode) // premature end of code block
...
...
@@ -4814,11 +4815,11 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<PageDocTitle>"</"{TITLE}">" { BEGIN( PageDoc ); }
/* escaped versions of the conditional commands (for putting them in the docs) */
<ClassDoc,Doc,AfterDoc,PageDoc
,ExampleDoc
>{CMD}{CMD}"if"/[^a-z_A-Z0-9] { current->doc+=yytext; }
<ClassDoc,Doc,AfterDoc,PageDoc
,ExampleDoc
>{CMD}{CMD}"ifnot"/[^a-z_A-Z0-9] { current->doc+=yytext; }
<ClassDoc,Doc,AfterDoc,PageDoc
,ExampleDoc
>{CMD}{CMD}"elseif"/[^a-z_A-Z0-9] { current->doc+=yytext; }
<ClassDoc,Doc,AfterDoc,PageDoc
,ExampleDoc
>{CMD}{CMD}"else"/[^a-z_A-Z0-9] { current->doc+=yytext; }
<ClassDoc,Doc,AfterDoc,PageDoc
,ExampleDoc
>{CMD}{CMD}"endif"/[^a-z_A-Z0-9] { current->doc+=yytext; }
<ClassDoc,Doc,AfterDoc,PageDoc>{CMD}{CMD}"if"/[^a-z_A-Z0-9] { current->doc+=yytext; }
<ClassDoc,Doc,AfterDoc,PageDoc>{CMD}{CMD}"ifnot"/[^a-z_A-Z0-9] { current->doc+=yytext; }
<ClassDoc,Doc,AfterDoc,PageDoc>{CMD}{CMD}"elseif"/[^a-z_A-Z0-9] { current->doc+=yytext; }
<ClassDoc,Doc,AfterDoc,PageDoc>{CMD}{CMD}"else"/[^a-z_A-Z0-9] { current->doc+=yytext; }
<ClassDoc,Doc,AfterDoc,PageDoc>{CMD}{CMD}"endif"/[^a-z_A-Z0-9] { current->doc+=yytext; }
<LineDoc,JavaDoc>{CMD}{CMD}"if"/[^a-z_A-Z0-9] { current->brief+=yytext; }
<LineDoc,JavaDoc>{CMD}{CMD}"ifnot"/[^a-z_A-Z0-9] { current->brief+=yytext; }
<LineDoc,JavaDoc>{CMD}{CMD}"elseif"/[^a-z_A-Z0-9] { current->brief+=yytext; }
...
...
@@ -4826,15 +4827,15 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<LineDoc,JavaDoc>{CMD}{CMD}"endif"/[^a-z_A-Z0-9] { current->brief+=yytext; }
/* conditional commands */
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc
,ExampleDoc
>{CMD}"if"{B}+ {
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc>{CMD}"if"{B}+ {
lastIfContext = YY_START;
BEGIN(IfGuard);
}
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc
,ExampleDoc
>{CMD}"ifnot"{B}+ {
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc>{CMD}"ifnot"{B}+ {
lastIfContext = YY_START;
BEGIN(IfNotGuard);
}
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc
,ExampleDoc
>{CMD}"if"(\r?)\n |
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc>{CMD}"if"(\r?)\n |
<IfGuard>\n {
warn(yyFileName,yyLineNr,"Missing guard for if statement!");
yyLineNr++;
...
...
@@ -4897,17 +4898,17 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
yyLineNr++;
}
<SkipSection>"//"|"*/"
<ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc
,ExampleDoc
>{CMD}"elseif"/[^a-z_A-Z0-9] {
<ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc>{CMD}"elseif"/[^a-z_A-Z0-9] {
// previous section enabled => skip now
depthIf=1;
BEGIN(SkipSection);
}
<ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc
,ExampleDoc
>{CMD}"else"/[^a-z_A-Z0-9] {
<ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc>{CMD}"else"/[^a-z_A-Z0-9] {
// section was enabled => skip now
depthIf=1;
BEGIN(SkipSection);
}
<ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc
,ExampleDoc
>{CMD}"endif"/[^a-z_A-Z0-9] {
<ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc>{CMD}"endif"/[^a-z_A-Z0-9] {
// section enabled => absorb endif
}
...
...
@@ -5222,7 +5223,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->doc+="\\internal";
}
}
<Doc,JavaDoc,
ExampleDoc,
PageDoc,ClassDoc,AfterDoc>{CMD}"internal" {
<Doc,JavaDoc,PageDoc,ClassDoc,AfterDoc>{CMD}"internal" {
if (!Config_getBool("INTERNAL_DOCS"))
{
lastInternalDocContext = YY_START;
...
...
@@ -5294,10 +5295,10 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
unput('/');unput('*');
BEGIN( tmpDocType );
}
<Doc,JavaDoc,ClassDoc,PageDoc,
ExampleDoc,
ReadFormulaShort,ReadFormulaLong,AfterDoc>^{B}*(("//"{B}*)?)"*"+[ \t]*"-"("#")?{B}+ {
<Doc,JavaDoc,ClassDoc,PageDoc,ReadFormulaShort,ReadFormulaLong,AfterDoc>^{B}*(("//"{B}*)?)"*"+[ \t]*"-"("#")?{B}+ {
current->doc += yytext;
}
<Doc,JavaDoc,ClassDoc,PageDoc,
ExampleDoc,
ReadFormulaShort,ReadFormulaLong,AfterDoc>^{B}*(("//"{B}*)?)"*"+[ \t]*"."{B}*\n {
<Doc,JavaDoc,ClassDoc,PageDoc,ReadFormulaShort,ReadFormulaLong,AfterDoc>^{B}*(("//"{B}*)?)"*"+[ \t]*"."{B}*\n {
current->doc += yytext;
yyLineNr++;
}
...
...
@@ -5307,12 +5308,12 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<ClassDocBrief,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+[ \t]*"."{B}*\n {
current->brief += "."; yyLineNr++;
}
<Doc,JavaDoc,ClassDoc,PageDoc,
ExampleDoc,
ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+/[^/]
<Doc,JavaDoc,ClassDoc,PageDoc,
ExampleDoc,
ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+{B}+ {
<Doc,JavaDoc,ClassDoc,PageDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+/[^/]
<Doc,JavaDoc,ClassDoc,PageDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+{B}+ {
current->doc+=' ';
}
<Doc,ClassDoc,PageDoc,
ExampleDoc,
AfterDoc>"\\"[a-z_A-Z][a-z_A-Z0-9]*[\\] { // directory type of text
<Doc,ClassDoc,PageDoc,AfterDoc>"\\"[a-z_A-Z][a-z_A-Z0-9]*[\\] { // directory type of text
current->doc+=yytext;
}
/*
...
...
@@ -5328,13 +5329,13 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
}
}
*/
<Doc,ClassDoc,PageDoc,
ExampleDoc,
AfterDoc,CopyArgComment>{CMD}{CMD}[a-z_A-Z][a-z_A-Z0-9]* { /* escaped command */
<Doc,ClassDoc,PageDoc,AfterDoc,CopyArgComment>{CMD}{CMD}[a-z_A-Z][a-z_A-Z0-9]* { /* escaped command */
if (YY_START==CopyArgComment)
fullArgString+=yytext;
else
current->doc+=yytext;
}
<Doc,ClassDoc,PageDoc,
ExampleDoc,
AfterDoc,CopyArgComment>{CMD}[a-z_A-Z][a-z_A-Z0-9]* {
<Doc,ClassDoc,PageDoc,AfterDoc,CopyArgComment>{CMD}[a-z_A-Z][a-z_A-Z0-9]* {
bool handled=FALSE;
if ( useOverrideCommands)
{
...
...
@@ -5422,7 +5423,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->brief+=yytext;
//}
}
<DefLineDoc,LineDoc,ClassDoc,PageDoc,
ExampleDoc,
Doc>"/*"|"//" { current->doc += yytext; }
<DefLineDoc,LineDoc,ClassDoc,PageDoc,Doc>"/*"|"//" { current->doc += yytext; }
<SkipCxxComment>.*/\n {
BEGIN( lastCContext ) ;
}
...
...
src/util.cpp
View file @
02b5f51e
...
...
@@ -1127,7 +1127,7 @@ static bool findOperator(const QCString &s,int i)
while
(
b
<
i
)
// check if there are only spaces inbetween
// the operator and the >
{
if
(
!
isspace
(
s
.
at
(
b
)))
return
FALSE
;
if
(
!
isspace
(
(
uchar
)
s
.
at
(
b
)))
return
FALSE
;
b
++
;
}
return
TRUE
;
...
...
@@ -1147,20 +1147,20 @@ QCString removeRedundantWhiteSpace(const QCString &s)
char
c
=
s
.
at
(
i
);
if
(
csp
<
6
&&
c
==
constScope
[
csp
])
csp
++
;
else
csp
=
0
;
if
(
i
<
l
-
2
&&
c
==
'<'
&&
// current char is a <
(
isId
(
s
.
at
(
i
+
1
))
||
isspace
(
s
.
at
(
i
+
1
)))
&&
// next char is an id char or space
(
isId
(
s
.
at
(
i
+
1
))
||
isspace
(
(
uchar
)
s
.
at
(
i
+
1
)))
&&
// next char is an id char or space
(
i
<
8
||
!
findOperator
(
s
,
i
))
// string in front is not "operator"
)
{
result
+=
"< "
;
// insert extra space for layouting (nested) templates
}
else
if
(
i
>
0
&&
c
==
'>'
&&
// current char is a >
(
isId
(
s
.
at
(
i
-
1
))
||
isspace
(
s
.
at
(
i
-
1
))
||
s
.
at
(
i
-
1
)
==
'*'
||
s
.
at
(
i
-
1
)
==
'&'
)
&&
// prev char is an id char or space
(
isId
(
s
.
at
(
i
-
1
))
||
isspace
(
(
uchar
)
s
.
at
(
i
-
1
))
||
s
.
at
(
i
-
1
)
==
'*'
||
s
.
at
(
i
-
1
)
==
'&'
)
&&
// prev char is an id char or space
(
i
<
8
||
!
findOperator
(
s
,
i
))
// string in front is not "operator"
)
{
result
+=
" >"
;
// insert extra space for layouting (nested) templates
}
else
if
(
i
>
0
&&
c
==
','
&&
!
isspace
(
s
.
at
(
i
-
1
))
else
if
(
i
>
0
&&
c
==
','
&&
!
isspace
(
(
uchar
)
s
.
at
(
i
-
1
))
&&
((
i
<
l
-
1
&&
isId
(
s
.
at
(
i
+
1
)))
||
(
i
<
l
-
2
&&
s
.
at
(
i
+
1
)
==
'$'
&&
isId
(
s
.
at
(
i
+
2
)))
// for PHP
||
(
i
<
l
-
3
&&
s
.
at
(
i
+
1
)
==
'&'
&&
s
.
at
(
i
+
2
)
==
'$'
&&
isId
(
s
.
at
(
i
+
3
)))))
// for PHP
...
...
@@ -1186,7 +1186,7 @@ QCString removeRedundantWhiteSpace(const QCString &s)
result
+=
" :"
;
csp
=
0
;
}
else
if
(
!
isspace
(
c
)
||
else
if
(
!
isspace
(
(
uchar
)
c
)
||
(
i
>
0
&&
i
<
l
-
1
&&
(
isId
(
s
.
at
(
i
-
1
))
||
s
.
at
(
i
-
1
)
==
')'
||
s
.
at
(
i
-
1
)
==
','
||
s
.
at
(
i
-
1
)
==
'>'
||
s
.
at
(
i
-
1
)
==
']'
)
&&
(
isId
(
s
.
at
(
i
+
1
))
||
(
i
<
l
-
2
&&
s
.
at
(
i
+
1
)
==
'$'
&&
isId
(
s
.
at
(
i
+
2
)))
...
...
@@ -2247,7 +2247,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
}
else
if
(
dstPos
<
dstAType
.
length
())
{
if
(
!
isspace
(
dstAType
.
at
(
dstPos
)))
// maybe the names differ
if
(
!
isspace
(
(
uchar
)
dstAType
.
at
(
dstPos
)))
// maybe the names differ
{
if
(
!
dstA
->
name
.
isEmpty
())
// dst has its name separated from its type
{
...
...
@@ -2274,7 +2274,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
}
else
if
(
srcPos
<
srcAType
.
length
())
{
if
(
!
isspace
(
srcAType
.
at
(
srcPos
)))
// maybe the names differ
if
(
!
isspace
(
(
uchar
)
srcAType
.
at
(
srcPos
)))
// maybe the names differ
{
if
(
!
srcA
->
name
.
isEmpty
())
// src has its name separated from its type
{
...
...
@@ -2646,7 +2646,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
{
delete
argList
;
argList
=
0
;
}
if
(
mdist
==
maxInheritanceDepth
&&
!
strcmp
(
args
,
"()"
)
)
if
(
mdist
==
maxInheritanceDepth
&&
args
&&
strcmp
(
args
,
"()"
)
!=
0
)
// no exact match found, but if args="()" an arbitrary member will do
{
//printf(" >Searching for arbitrary member\n");
...
...
@@ -2746,7 +2746,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
}
}
}
if
(
!
found
&&
!
strcmp
(
args
,
"()"
))
if
(
!
found
&&
args
&&
!
strcmp
(
args
,
"()"
))
// no exact match found, but if args="()" an arbitrary
// member will do
{
...
...
@@ -2812,7 +2812,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
}
}
}
if
(
members
.
count
()
!=
1
&&
!
strcmp
(
args
,
"()"
))
if
(
members
.
count
()
!=
1
&&
args
&&
!
strcmp
(
args
,
"()"
))
{
// no exact match found, but if args="()" an arbitrary
// member will do
...
...
@@ -3548,11 +3548,12 @@ QCString escapeCharsInString(const char *name,bool allowDots)
}
/*! This function determines the file name on disk of an item
* given its name, which could be a class name with templ
e
te
* given its name, which could be a class name with templ
a
te
* arguments, so special characters need to be escaped.
*/
QCString
convertNameToFile
(
const
char
*
name
,
bool
allowDots
)
{
QCString
result
;
if
(
Config_getBool
(
"SHORT_NAMES"
))
{
static
QDict
<
void
>
usedNames
(
10007
);
...
...
@@ -3569,13 +3570,75 @@ QCString convertNameToFile(const char *name,bool allowDots)
{
num
=
*
(
int
*
)
&
value
;
}
QCString
result
;
result
.
sprintf
(
"a%05d"
,
num
);
return
result
;
}
else
// long names
{
return
escapeCharsInString
(
name
,
allowDots
);
result
=
escapeCharsInString
(
name
,
allowDots
);
}
if
(
Config_getBool
(
"CREATE_SUBDIRS"
))
{
if
(
Doxygen
::
htmlDirMap
==
0
)
{
Doxygen
::
htmlDirMap
=
new
QDict
<
int
>
(
100003
);
Doxygen
::
htmlDirMap
->
setAutoDelete
(
TRUE
);
}
static
int
curDirNum
=
0
;
int
*
dirNum
=
Doxygen
::
htmlDirMap
->
find
(
result
);
int
l1Dir
=
0
,
l2Dir
=
0
;
if
(
dirNum
==
0
)
// new name
{
Doxygen
::
htmlDirMap
->
insert
(
result
,
new
int
(
curDirNum
));
l1Dir
=
(
curDirNum
)
%
10
;
l2Dir
=
((
curDirNum
)
/
10
)
%
10
;
curDirNum
++
;
}
else
// existing name
{
l1Dir
=
(
*
dirNum
)
%
10
;
l2Dir
=
((
*
dirNum
)
/
10
)
%
10
;
}
result
.
prepend
(
QCString
().
sprintf
(
"d%d/d%d/"
,
l1Dir
,
l2Dir
));
}
return
result
;
}
QCString
relativePathToRoot
(
const
char
*
name
)
{
QCString
result
;
if
(
Config_getBool
(
"CREATE_SUBDIRS"
))
{
if
(
name
==
0
)
{
return
REL_PATH_TO_ROOT
;
}
else
{
QCString
n
=
name
;
int
i
=
n
.
findRev
(
'/'
);
if
(
i
!=-
1
)
{
result
=
REL_PATH_TO_ROOT
;
}
}
}
return
result
;
}
void
createSubDirs
(
QDir
&
d
)
{
if
(
Config_getBool
(
"CREATE_SUBDIRS"
))
{
// create 100 subdirectories
int
l1
,
l2
;
for
(
l1
=
0
;
l1
<
10
;
l1
++
)
{
d
.
mkdir
(
QString
().
sprintf
(
"d%d"
,
l1
));
for
(
l2
=
0
;
l2
<
10
;
l2
++
)
{
d
.
mkdir
(
QString
().
sprintf
(
"d%d/d%d"
,
l1
,
l2
));
}
}
}
}
...
...
@@ -4714,3 +4777,13 @@ void replaceNamespaceAliases(QCString &scope,int i)
//printf("replaceNamespaceAliases() result=%s\n",scope.data());
}
QCString
stripPath
(
const
char
*
s
)
{
QCString
result
=
s
;
int
i
=
result
.
findRev
(
'/'
);
if
(
i
!=-
1
)
{
result
=
result
.
mid
(
i
+
1
);
}
return
result
;
}
src/util.h
View file @
02b5f51e
...
...
@@ -49,6 +49,7 @@ class MemberNameInfoSDict;
struct
ListItemInfo
;
class
PageDef
;
struct
SectionInfo
;
class
QDir
;
//--------------------------------------------------------------------
...
...
@@ -213,6 +214,11 @@ int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item);
int
isAccessibleFrom
(
Definition
*
scope
,
FileDef
*
fileScope
,
Definition
*
item
,
const
QCString
&
explicitScopePart
);
int
computeQualifiedIndex
(
const
QString
&
name
);
void
addDirPrefix
(
QCString
&
fileName
);
QCString
relativePathToRoot
(
const
char
*
name
);
#define REL_PATH_TO_ROOT "../../"
void
createSubDirs
(
QDir
&
d
);
QCString
stripPath
(
const
char
*
s
);
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment