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
cba24284
Commit
cba24284
authored
Mar 24, 2004
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.3.6-20040324
parent
ce05925c
Changes
36
Hide 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 @
cba24284
DOXYGEN Version 1.3.6-200403
07
DOXYGEN Version 1.3.6-200403
24
Please read the installation section of the manual
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
(http://www.doxygen.org/install.html) for instructions.
--------
--------
Dimitri van Heesch (
07
March 2004)
Dimitri van Heesch (
24
March 2004)
README
View file @
cba24284
DOXYGEN Version 1.3.6_200403
07
DOXYGEN Version 1.3.6_200403
24
Please read INSTALL for compilation instructions.
Please read INSTALL for compilation instructions.
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (
07
March 2004)
Dimitri van Heesch (dimitri@stack.nl) (
24
March 2004)
VERSION
View file @
cba24284
1.3.6-200403
07
1.3.6-200403
24
doc/commands.doc
View file @
cba24284
...
@@ -147,6 +147,7 @@ documentation:
...
@@ -147,6 +147,7 @@ documentation:
\refitem cmdlt \\\<
\refitem cmdlt \\\<
\refitem cmdgt \\\>
\refitem cmdgt \\\>
\refitem cmdhash \\\#
\refitem cmdhash \\\#
\refitem cmdperc \\\%
\endsecreflist
\endsecreflist
The following subsections provide a list of all commands that are recognized by
The following subsections provide a list of all commands that are recognized by
...
@@ -1956,6 +1957,15 @@ class C {};
...
@@ -1956,6 +1957,15 @@ class C {};
\f$\mbox{\LaTeX}\f$ output. This
\f$\mbox{\LaTeX}\f$ output. This
character has to be escaped because it has a special meaning in HTML.
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>
<hr>
<h2>\htmlonly <center> --- \endhtmlonly
<h2>\htmlonly <center> --- \endhtmlonly
Commands included for Qt compatibility
Commands included for Qt compatibility
...
...
doc/config.doc
View file @
cba24284
...
@@ -71,6 +71,7 @@ followed by the descriptions of the tags grouped by category.
...
@@ -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_cols_in_alpha_index
COLS_IN_ALPHA_INDEX
\
refitem
cfg_compact_latex
COMPACT_LATEX
\
refitem
cfg_compact_latex
COMPACT_LATEX
\
refitem
cfg_compact_rtf
COMPACT_RTF
\
refitem
cfg_compact_rtf
COMPACT_RTF
\
refitem
cfg_create_subdirs
CREATE_SUBDIRS
\
refitem
cfg_details_at_top
DETAILS_AT_TOP
\
refitem
cfg_details_at_top
DETAILS_AT_TOP
\
refitem
cfg_disable_index
DISABLE_INDEX
\
refitem
cfg_disable_index
DISABLE_INDEX
\
refitem
cfg_distribute_group_doc
DISTRIBUTE_GROUP_DOC
\
refitem
cfg_distribute_group_doc
DISTRIBUTE_GROUP_DOC
...
@@ -233,6 +234,16 @@ followed by the descriptions of the tags grouped by category.
...
@@ -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
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
.
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
\
anchor
cfg_output_language
<
dt
>\
c
OUTPUT_LANGUAGE
<
dd
>
<
dt
>\
c
OUTPUT_LANGUAGE
<
dd
>
\
addindex
OUTPUT_LANGUAGE
\
addindex
OUTPUT_LANGUAGE
...
...
packages/rpm/doxygen.spec
View file @
cba24284
Summary: A documentation system for C/C++.
Summary: A documentation system for C/C++.
Name: doxygen
Name: doxygen
Version: 1.3.6_200403
07
Version: 1.3.6_200403
24
Release: 1
Release: 1
Epoch: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
...
...
src/classdef.cpp
View file @
cba24284
...
@@ -1186,7 +1186,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
...
@@ -1186,7 +1186,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
writeString
(
"<center><font size=
\"
2
\"
>["
);
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
.
docify
(
theTranslator
->
trLegend
());
ol
.
endHtmlLink
();
ol
.
endHtmlLink
();
ol
.
writeString
(
"]</font></center>"
);
ol
.
writeString
(
"]</font></center>"
);
...
@@ -1220,7 +1220,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
...
@@ -1220,7 +1220,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
{
{
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
writeString
(
"<center><font size=
\"
2
\"
>["
);
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
.
docify
(
theTranslator
->
trLegend
());
ol
.
endHtmlLink
();
ol
.
endHtmlLink
();
ol
.
writeString
(
"]</font></center>"
);
ol
.
writeString
(
"]</font></center>"
);
...
...
src/config.l
View file @
cba24284
...
@@ -1319,18 +1319,29 @@ void Config::create()
...
@@ -1319,18 +1319,29 @@ void Config::create()
"where doxygen was started. If left blank the current directory will be used.\n"
"where doxygen was started. If left blank the current directory will be used.\n"
);
);
cs->setWidgetType(ConfigString::Dir);
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(
ce = addEnum(
"OUTPUT_LANGUAGE",
"OUTPUT_LANGUAGE",
"The OUTPUT_LANGUAGE tag is used to specify the language in which all \n"
"The OUTPUT_LANGUAGE tag is used to specify the language in which all \n"
"documentation generated by doxygen is written. Doxygen will use this \n"
"documentation generated by doxygen is written. Doxygen will use this \n"
"information to generate all constant output in the proper language. \n"
"information to generate all constant output in the proper language. \n"
"The default language is English, other supported languages are: \n"
"The default language is English, other supported languages are: \n"
"Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, \n"
"Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, \n"
"Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en \n"
"Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en \n"
"(Japanese with English messages), Korean, Korean-en, Norwegian, Polish, Portuguese, \n"
"(Japanese with English messages), Korean, Korean-en, Norwegian, Polish, Portuguese, \n"
"Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.\n",
"Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.\n",
"English"
"English"
);
);
#ifdef LANG_BR
#ifdef LANG_BR
ce->addValue("Brazilian");
ce->addValue("Brazilian");
#endif
#endif
...
...
src/declinfo.l
View file @
cba24284
...
@@ -65,7 +65,11 @@ static void addTypeName()
...
@@ -65,7 +65,11 @@ static void addTypeName()
{
{
//printf("addTypeName() type=`%s' scope=`%s' name=`%s'\n",
//printf("addTypeName() type=`%s' scope=`%s' name=`%s'\n",
// type.data(),scope.data(),name.data());
// 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+=' ';
if (!type.isEmpty()) type+=' ';
type+=name;
type+=name;
name.resize(0);
name.resize(0);
...
...
src/defargs.l
View file @
cba24284
...
@@ -266,7 +266,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
...
@@ -266,7 +266,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
if (l>0)
if (l>0)
{
{
int i=l-1;
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--;
while (i>=0 && isId(g_curArgTypeName.at(i))) i--;
//printf("g_curArgTypeName=`%s' i=%d\n",g_curArgTypeName.data(),i);
//printf("g_curArgTypeName=`%s' i=%d\n",g_curArgTypeName.data(),i);
Argument *a = new Argument;
Argument *a = new Argument;
...
...
src/definition.h
View file @
cba24284
...
@@ -58,7 +58,7 @@ class Definition
...
@@ -58,7 +58,7 @@ class Definition
/*! Returns the base name of the output file that contains this
/*! Returns the base name of the output file that contains this
* definition.
* definition.
*/
*/
QCString
qualifiedName
()
const
;
virtual
QCString
qualifiedName
()
const
;
QCString
localName
()
const
;
QCString
localName
()
const
;
virtual
QCString
getOutputFileBase
()
const
=
0
;
virtual
QCString
getOutputFileBase
()
const
=
0
;
/*! Returns the name of the source listing of this file. */
/*! Returns the name of the source listing of this file. */
...
...
src/docparser.cpp
View file @
cba24284
...
@@ -84,6 +84,7 @@ static QStack<DocStyleChange> g_styleStack;
...
@@ -84,6 +84,7 @@ static QStack<DocStyleChange> g_styleStack;
static
QStack
<
DocStyleChange
>
g_initialStyleStack
;
static
QStack
<
DocStyleChange
>
g_initialStyleStack
;
static
QList
<
Definition
>
g_copyStack
;
static
QList
<
Definition
>
g_copyStack
;
static
QString
g_fileName
;
static
QString
g_fileName
;
static
QString
g_relPath
;
struct
DocParserContext
struct
DocParserContext
{
{
...
@@ -96,6 +97,7 @@ struct DocParserContext
...
@@ -96,6 +97,7 @@ struct DocParserContext
QList
<
Definition
>
copyStack
;
QList
<
Definition
>
copyStack
;
MemberDef
*
memberDef
;
MemberDef
*
memberDef
;
QString
fileName
;
QString
fileName
;
QString
relPath
;
};
};
static
QStack
<
DocParserContext
>
g_parserStack
;
static
QStack
<
DocParserContext
>
g_parserStack
;
...
@@ -114,6 +116,7 @@ static void docParserPushContext()
...
@@ -114,6 +116,7 @@ static void docParserPushContext()
ctx
->
initialStyleStack
=
g_initialStyleStack
;
ctx
->
initialStyleStack
=
g_initialStyleStack
;
ctx
->
copyStack
=
g_copyStack
;
ctx
->
copyStack
=
g_copyStack
;
ctx
->
fileName
=
g_fileName
;
ctx
->
fileName
=
g_fileName
;
ctx
->
relPath
=
g_relPath
;
g_parserStack
.
push
(
ctx
);
g_parserStack
.
push
(
ctx
);
}
}
...
@@ -128,6 +131,7 @@ static void docParserPopContext()
...
@@ -128,6 +131,7 @@ static void docParserPopContext()
g_initialStyleStack
=
ctx
->
initialStyleStack
;
g_initialStyleStack
=
ctx
->
initialStyleStack
;
g_copyStack
=
ctx
->
copyStack
;
g_copyStack
=
ctx
->
copyStack
;
g_fileName
=
ctx
->
fileName
;
g_fileName
=
ctx
->
fileName
;
g_relPath
=
ctx
->
relPath
;
delete
ctx
;
delete
ctx
;
doctokenizerYYpopContext
();
doctokenizerYYpopContext
();
}
}
...
@@ -1191,7 +1195,7 @@ DocLinkedWord::DocLinkedWord(DocNode *parent,const QString &word,
...
@@ -1191,7 +1195,7 @@ DocLinkedWord::DocLinkedWord(DocNode *parent,const QString &word,
const
QString
&
ref
,
const
QString
&
file
,
const
QString
&
ref
,
const
QString
&
file
,
const
QString
&
anchor
)
:
const
QString
&
anchor
)
:
m_parent
(
parent
),
m_word
(
word
),
m_ref
(
ref
),
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());
//printf("new word %s url=%s\n",word.data(),g_searchUrl.data());
if
(
!
g_searchUrl
.
isEmpty
())
if
(
!
g_searchUrl
.
isEmpty
())
...
@@ -1281,7 +1285,7 @@ void DocIncOperator::parse()
...
@@ -1281,7 +1285,7 @@ void DocIncOperator::parse()
if
(
nonEmpty
)
break
;
// we have a pattern to match
if
(
nonEmpty
)
break
;
// we have a pattern to match
so
=
o
+
1
;
// no pattern, skip empty line
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
;
nonEmpty
=
TRUE
;
}
}
...
@@ -1306,7 +1310,7 @@ void DocIncOperator::parse()
...
@@ -1306,7 +1310,7 @@ void DocIncOperator::parse()
if
(
nonEmpty
)
break
;
// we have a pattern to match
if
(
nonEmpty
)
break
;
// we have a pattern to match
so
=
o
+
1
;
// no pattern, skip empty line
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
;
nonEmpty
=
TRUE
;
}
}
...
@@ -1334,7 +1338,7 @@ void DocIncOperator::parse()
...
@@ -1334,7 +1338,7 @@ void DocIncOperator::parse()
if
(
nonEmpty
)
break
;
// we have a pattern to match
if
(
nonEmpty
)
break
;
// we have a pattern to match
so
=
o
+
1
;
// no pattern, skip empty line
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
;
nonEmpty
=
TRUE
;
}
}
...
@@ -1361,7 +1365,7 @@ void DocIncOperator::parse()
...
@@ -1361,7 +1365,7 @@ void DocIncOperator::parse()
if
(
nonEmpty
)
break
;
// we have a pattern to match
if
(
nonEmpty
)
break
;
// we have a pattern to match
so
=
o
+
1
;
// no pattern, skip empty line
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
;
nonEmpty
=
TRUE
;
}
}
...
@@ -1635,7 +1639,7 @@ endsecreflist:
...
@@ -1635,7 +1639,7 @@ endsecreflist:
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
DocInternalRef
::
DocInternalRef
(
DocNode
*
parent
,
const
QString
&
ref
)
DocInternalRef
::
DocInternalRef
(
DocNode
*
parent
,
const
QString
&
ref
)
:
m_parent
(
parent
)
:
m_parent
(
parent
)
,
m_relPath
(
g_relPath
)
{
{
int
i
=
ref
.
find
(
'#'
);
int
i
=
ref
.
find
(
'#'
);
if
(
i
!=-
1
)
if
(
i
!=-
1
)
...
@@ -1691,6 +1695,7 @@ DocRef::DocRef(DocNode *parent,const QString &target) :
...
@@ -1691,6 +1695,7 @@ DocRef::DocRef(DocNode *parent,const QString &target) :
Definition
*
compound
=
0
;
Definition
*
compound
=
0
;
QCString
anchor
;
QCString
anchor
;
ASSERT
(
!
target
.
isEmpty
());
ASSERT
(
!
target
.
isEmpty
());
m_relPath
=
g_relPath
;
SectionInfo
*
sec
=
Doxygen
::
sectionDict
[
target
];
SectionInfo
*
sec
=
Doxygen
::
sectionDict
[
target
];
if
(
sec
)
// ref to section or anchor
if
(
sec
)
// ref to section or anchor
{
{
...
@@ -1779,6 +1784,7 @@ DocLink::DocLink(DocNode *parent,const QString &target) :
...
@@ -1779,6 +1784,7 @@ DocLink::DocLink(DocNode *parent,const QString &target) :
//PageInfo *page;
//PageInfo *page;
QCString
anchor
;
QCString
anchor
;
m_refText
=
target
;
m_refText
=
target
;
m_relPath
=
g_relPath
;
if
(
!
m_refText
.
isEmpty
()
&&
m_refText
.
at
(
0
)
==
'#'
)
if
(
!
m_refText
.
isEmpty
()
&&
m_refText
.
at
(
0
)
==
'#'
)
{
{
m_refText
=
m_refText
.
right
(
m_refText
.
length
()
-
1
);
m_refText
=
m_refText
.
right
(
m_refText
.
length
()
-
1
);
...
@@ -4889,6 +4895,7 @@ DocNode *validatingParseDoc(const char *fileName,int startLine,
...
@@ -4889,6 +4895,7 @@ DocNode *validatingParseDoc(const char *fileName,int startLine,
}
}
g_fileName
=
fileName
;
g_fileName
=
fileName
;
g_relPath
=
ctx
?
relativePathToRoot
(
ctx
->
getOutputFileBase
())
:
QString
(
""
);
g_memberDef
=
md
;
g_memberDef
=
md
;
g_nodeStack
.
clear
();
g_nodeStack
.
clear
();
g_styleStack
.
clear
();
g_styleStack
.
clear
();
...
@@ -4940,6 +4947,7 @@ DocNode *validatingParseText(const char *input)
...
@@ -4940,6 +4947,7 @@ DocNode *validatingParseText(const char *input)
g_token
=
new
TokenInfo
;
g_token
=
new
TokenInfo
;
g_context
=
""
;
g_context
=
""
;
g_fileName
=
"<parseText>"
;
g_fileName
=
"<parseText>"
;
g_relPath
=
""
;
g_memberDef
=
0
;
g_memberDef
=
0
;
g_nodeStack
.
clear
();
g_nodeStack
.
clear
();
g_styleStack
.
clear
();
g_styleStack
.
clear
();
...
...
src/docparser.h
View file @
cba24284
...
@@ -203,6 +203,7 @@ class DocLinkedWord : public DocNode
...
@@ -203,6 +203,7 @@ class DocLinkedWord : public DocNode
Kind
kind
()
const
{
return
Kind_Word
;
}
Kind
kind
()
const
{
return
Kind_Word
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
QString
file
()
const
{
return
m_file
;
}
QString
file
()
const
{
return
m_file
;
}
QString
relPath
()
const
{
return
m_relPath
;
}
QString
ref
()
const
{
return
m_ref
;
}
QString
ref
()
const
{
return
m_ref
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
void
accept
(
DocVisitor
*
v
)
{
v
->
visit
(
this
);
}
void
accept
(
DocVisitor
*
v
)
{
v
->
visit
(
this
);
}
...
@@ -212,6 +213,7 @@ class DocLinkedWord : public DocNode
...
@@ -212,6 +213,7 @@ class DocLinkedWord : public DocNode
QString
m_word
;
QString
m_word
;
QString
m_ref
;
QString
m_ref
;
QString
m_file
;
QString
m_file
;
QString
m_relPath
;
QString
m_anchor
;
QString
m_anchor
;
};
};
...
@@ -614,6 +616,7 @@ class DocLink : public CompAccept<DocLink>, public DocNode
...
@@ -614,6 +616,7 @@ class DocLink : public CompAccept<DocLink>, public DocNode
QString
parse
(
bool
);
QString
parse
(
bool
);
Kind
kind
()
const
{
return
Kind_Link
;
}
Kind
kind
()
const
{
return
Kind_Link
;
}
QString
file
()
const
{
return
m_file
;
}
QString
file
()
const
{
return
m_file
;
}
QString
relPath
()
const
{
return
m_relPath
;
}
QString
ref
()
const
{
return
m_ref
;
}
QString
ref
()
const
{
return
m_ref
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
...
@@ -622,6 +625,7 @@ class DocLink : public CompAccept<DocLink>, public DocNode
...
@@ -622,6 +625,7 @@ class DocLink : public CompAccept<DocLink>, public DocNode
private
:
private
:
DocNode
*
m_parent
;
DocNode
*
m_parent
;
QString
m_file
;
QString
m_file
;
QString
m_relPath
;
QString
m_ref
;
QString
m_ref
;
QString
m_anchor
;
QString
m_anchor
;
QString
m_refText
;
QString
m_refText
;
...
@@ -635,6 +639,7 @@ class DocRef : public CompAccept<DocRef>, public DocNode
...
@@ -635,6 +639,7 @@ class DocRef : public CompAccept<DocRef>, public DocNode
void
parse
();
void
parse
();
Kind
kind
()
const
{
return
Kind_Ref
;
}
Kind
kind
()
const
{
return
Kind_Ref
;
}
QString
file
()
const
{
return
m_file
;
}
QString
file
()
const
{
return
m_file
;
}
QString
relPath
()
const
{
return
m_relPath
;
}
QString
ref
()
const
{
return
m_ref
;
}
QString
ref
()
const
{
return
m_ref
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
QString
targetTitle
()
const
{
return
m_text
;
}
QString
targetTitle
()
const
{
return
m_text
;
}
...
@@ -649,6 +654,7 @@ class DocRef : public CompAccept<DocRef>, public DocNode
...
@@ -649,6 +654,7 @@ class DocRef : public CompAccept<DocRef>, public DocNode
bool
m_refToSection
;
bool
m_refToSection
;
bool
m_refToAnchor
;
bool
m_refToAnchor
;
QString
m_file
;
QString
m_file
;
QString
m_relPath
;
QString
m_ref
;
QString
m_ref
;
QString
m_anchor
;
QString
m_anchor
;
QString
m_text
;
QString
m_text
;
...
@@ -662,6 +668,7 @@ class DocInternalRef : public CompAccept<DocInternalRef>, public DocNode
...
@@ -662,6 +668,7 @@ class DocInternalRef : public CompAccept<DocInternalRef>, public DocNode
void
parse
();
void
parse
();
Kind
kind
()
const
{
return
Kind_Ref
;
}
Kind
kind
()
const
{
return
Kind_Ref
;
}
QString
file
()
const
{
return
m_file
;
}
QString
file
()
const
{
return
m_file
;
}
QString
relPath
()
const
{
return
m_relPath
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocInternalRef
>::
accept
(
this
,
v
);
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocInternalRef
>::
accept
(
this
,
v
);
}
...
@@ -669,6 +676,7 @@ class DocInternalRef : public CompAccept<DocInternalRef>, public DocNode
...
@@ -669,6 +676,7 @@ class DocInternalRef : public CompAccept<DocInternalRef>, public DocNode
private
:
private
:
DocNode
*
m_parent
;
DocNode
*
m_parent
;
QString
m_file
;
QString
m_file
;
QString
m_relPath
;
QString
m_anchor
;
QString
m_anchor
;
};
};
...
...
src/doctokenizer.l
View file @
cba24284
...
@@ -292,7 +292,8 @@ TEMPCHAR [a-z_A-Z0-9,: \t\*\&]
...
@@ -292,7 +292,8 @@ TEMPCHAR [a-z_A-Z0-9,: \t\*\&]
FUNCCHAR [a-z_A-Z0-9,:\<\> \t\*\&]
FUNCCHAR [a-z_A-Z0-9,:\<\> \t\*\&]
SCOPESEP "::"|"#"|"."
SCOPESEP "::"|"#"|"."
SCOPEPRE {ID}("<"{TEMPCHAR}*">")?{SCOPESEP}
SCOPEPRE {ID}("<"{TEMPCHAR}*">")?{SCOPESEP}
SCOPEMASK {SCOPEPRE}*(~)?{ID}("<"{TEMPCHAR}*">")?
SCOPEKEYS ":"({ID}":")*
SCOPEMASK {SCOPEPRE}*(~)?{ID}{SCOPEKEYS}?("<"{TEMPCHAR}*">")?
FUNCARG "("{FUNCCHAR}*")"
FUNCARG "("{FUNCCHAR}*")"
OPNEW {BLANK}+"new"({BLANK}*"[]")?
OPNEW {BLANK}+"new"({BLANK}*"[]")?
OPDEL {BLANK}+"delete"({BLANK}*"[]")?
OPDEL {BLANK}+"delete"({BLANK}*"[]")?
...
...
src/dot.cpp
View file @
cba24284
...
@@ -1610,6 +1610,7 @@ QCString DotClassGraph::diskName() const
...
@@ -1610,6 +1610,7 @@ QCString DotClassGraph::diskName() const
QCString
DotClassGraph
::
writeGraph
(
QTextStream
&
out
,
QCString
DotClassGraph
::
writeGraph
(
QTextStream
&
out
,
GraphOutputFormat
format
,
GraphOutputFormat
format
,
const
char
*
path
,
const
char
*
path
,
const
char
*
relPath
,
bool
isTBRank
,
bool
isTBRank
,
bool
generateImageMap
)
bool
generateImageMap
)
{
{
...
@@ -1643,7 +1644,6 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
...
@@ -1643,7 +1644,6 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
}
}
baseName
=
convertNameToFile
(
diskName
());
baseName
=
convertNameToFile
(
diskName
());
QCString
imgExt
=
Config_getEnum
(
"DOT_IMAGE_FORMAT"
);
QCString
imgExt
=
Config_getEnum
(
"DOT_IMAGE_FORMAT"
);
QCString
md5
=
computeMd5Signature
(
m_startNode
,
// root
QCString
md5
=
computeMd5Signature
(
m_startNode
,
// root
m_graphType
,
// gt
m_graphType
,
// gt
...
@@ -1722,7 +1722,7 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
...
@@ -1722,7 +1722,7 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
if
(
format
==
BITMAP
&&
generateImageMap
)
// run dot to create a image map
if
(
format
==
BITMAP
&&
generateImageMap
)
// run dot to create a image map
{
{
QCString
mapLabel
=
convertNameToFile
(
m_startNode
->
m_label
+
"_"
+
mapName
);
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=
\"
#"
<<
imgExt
<<
"
\"
border=
\"
0
\"
usemap=
\"
#"
<<
mapLabel
<<
"
\"
alt=
\"
"
;
<<
mapLabel
<<
"
\"
alt=
\"
"
;
switch
(
m_graphType
)
switch
(
m_graphType
)
...
@@ -1816,7 +1816,7 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance)
...
@@ -1816,7 +1816,7 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance)
doc
=
bfd
->
isLinkable
();
doc
=
bfd
->
isLinkable
();
src
=
bfd
->
generateSourceFile
();
src
=
bfd
->
generateSourceFile
();
}
}
if
(
doc
||
src
)
if
(
doc
||
src
||
!
Config_getBool
(
"HIDE_UNDOC_RELATIONS"
)
)
{
{
QCString
url
=
""
;
QCString
url
=
""
;
if
(
bfd
)
url
=
bfd
->
getOutputFileBase
().
copy
();
if
(
bfd
)
url
=
bfd
->
getOutputFileBase
().
copy
();
...
@@ -1833,8 +1833,8 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance)
...
@@ -1833,8 +1833,8 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance)
}
}
else
else
{
{
QCString
tmp_url
=
""
;
QCString
tmp_url
;
if
(
bfd
)
tmp_url
=
bfd
->
getReference
()
+
"$"
+
url
;
if
(
bfd
)
tmp_url
=
doc
||
src
?
bfd
->
getReference
()
+
"$"
+
url
:
QCString
()
;
bn
=
new
DotNode
(
bn
=
new
DotNode
(
m_curNodeNumber
++
,
m_curNodeNumber
++
,
ii
->
includeName
,
ii
->
includeName
,
...
@@ -1890,6 +1890,7 @@ QCString DotInclDepGraph::diskName() const
...
@@ -1890,6 +1890,7 @@ QCString DotInclDepGraph::diskName() const
QCString
DotInclDepGraph
::
writeGraph
(
QTextStream
&
out
,
QCString
DotInclDepGraph
::
writeGraph
(
QTextStream
&
out
,
GraphOutputFormat
format
,
GraphOutputFormat
format
,
const
char
*
path
,
const
char
*
path
,
const
char
*
relPath
,
bool
generateImageMap
bool
generateImageMap
)
)
{
{
...
@@ -1900,7 +1901,7 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
...
@@ -1900,7 +1901,7 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
err
(
"Error: Output dir %s does not exist!
\n
"
,
path
);
exit
(
1
);
err
(
"Error: Output dir %s does not exist!
\n
"
,
path
);
exit
(
1
);
}
}
QCString
oldDir
=
convertToQCString
(
QDir
::
currentDirPath
());
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
::
setCurrent
(
d
.
absPath
());
QDir
thisDir
;
QDir
thisDir
;
...
@@ -1995,7 +1996,7 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
...
@@ -1995,7 +1996,7 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
if
(
format
==
BITMAP
&&
generateImageMap
)
if
(
format
==
BITMAP
&&
generateImageMap
)
{
{
out
<<
"<p><center><img src=
\"
"
<<
baseName
<<
"."
out
<<
"<p><center><img src=
\"
"
<<
relPath
<<
baseName
<<
"."
<<
imgExt
<<
"
\"
border=
\"
0
\"
usemap=
\"
#"
<<
imgExt
<<
"
\"
border=
\"
0
\"
usemap=
\"
#"
<<
mapName
<<
"_map
\"
alt=
\"
"
;
<<
mapName
<<
"_map
\"
alt=
\"
"
;
if
(
m_inverse
)
out
<<
"Included by dependency graph"
;
else
out
<<
"Include dependency graph"
;
if
(
m_inverse
)
out
<<
"Included by dependency graph"
;
else
out
<<
"Include dependency graph"
;
...
@@ -2081,7 +2082,7 @@ DotCallGraph::~DotCallGraph()
...
@@ -2081,7 +2082,7 @@ DotCallGraph::~DotCallGraph()
}
}
QCString
DotCallGraph
::
writeGraph
(
QTextStream
&
out
,
GraphOutputFormat
format
,
QCString
DotCallGraph
::
writeGraph
(
QTextStream
&
out
,
GraphOutputFormat
format
,
const
char
*
path
,
bool
generateImageMap
)
const
char
*
path
,
const
char
*
relPath
,
bool
generateImageMap
)
{
{
QDir
d
(
path
);
QDir
d
(
path
);
// store the original directory
// store the original directory
...
@@ -2177,7 +2178,7 @@ QCString DotCallGraph::writeGraph(QTextStream &out, GraphOutputFormat format,
...
@@ -2177,7 +2178,7 @@ QCString DotCallGraph::writeGraph(QTextStream &out, GraphOutputFormat format,
if
(
format
==
BITMAP
&&
generateImageMap
)
if
(
format
==
BITMAP
&&
generateImageMap
)
{
{
out
<<
"<p><center><img src=
\"
"
<<
baseName
<<
"."
out
<<
"<p><center><img src=
\"
"
<<
relPath
<<
baseName
<<
"."
<<
imgExt
<<
"
\"
border=
\"
0
\"
usemap=
\"
#"
<<
imgExt
<<
"
\"
border=
\"
0
\"
usemap=
\"
#"
<<
mapName
<<
"_map
\"
alt=
\"
"
;
<<
mapName
<<
"_map
\"
alt=
\"
"
;
out
<<
"
\"
>"
;
out
<<
"
\"
>"
;
...
...
src/dot.h
View file @
cba24284
...
@@ -137,7 +137,7 @@ class DotClassGraph
...
@@ -137,7 +137,7 @@ class DotClassGraph
~
DotClassGraph
();
~
DotClassGraph
();
bool
isTrivial
()
const
;
bool
isTrivial
()
const
;
QCString
writeGraph
(
QTextStream
&
t
,
GraphOutputFormat
f
,
const
char
*
path
,
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
writeXML
(
QTextStream
&
t
);
void
writeDEF
(
QTextStream
&
t
);
void
writeDEF
(
QTextStream
&
t
);
...
@@ -163,6 +163,7 @@ class DotInclDepGraph
...
@@ -163,6 +163,7 @@ class DotInclDepGraph
DotInclDepGraph
(
FileDef
*
fd
,
int
maxRecusionDepth
,
bool
inverse
);
DotInclDepGraph
(
FileDef
*
fd
,
int
maxRecusionDepth
,
bool
inverse
);
~
DotInclDepGraph
();
~
DotInclDepGraph
();
QCString
writeGraph
(
QTextStream
&
t
,
GraphOutputFormat
f
,
const
char
*
path
,
QCString
writeGraph
(
QTextStream
&
t
,
GraphOutputFormat
f
,
const
char
*
path
,
const
char
*
relPath
,
bool
writeImageMap
=
TRUE
);
bool
writeImageMap
=
TRUE
);
bool
isTrivial
()
const
;
bool
isTrivial
()
const
;
QCString
diskName
()
const
;
QCString
diskName
()
const
;
...
@@ -185,7 +186,7 @@ class DotCallGraph
...
@@ -185,7 +186,7 @@ class DotCallGraph
DotCallGraph
(
MemberDef
*
md
,
int
maxRecursionDepth
);
DotCallGraph
(
MemberDef
*
md
,
int
maxRecursionDepth
);
~
DotCallGraph
();
~
DotCallGraph
();
QCString
writeGraph
(
QTextStream
&
t
,
GraphOutputFormat
f
,
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
);
void
buildGraph
(
DotNode
*
n
,
MemberDef
*
md
,
int
distance
);
bool
isTrivial
()
const
;
bool
isTrivial
()
const
;
...
...
src/doxygen.cpp
View file @
cba24284
...
@@ -118,12 +118,14 @@ QTime Doxygen::runningTime;
...
@@ -118,12 +118,14 @@ QTime Doxygen::runningTime;
SearchIndex
*
Doxygen
::
searchIndex
=
0
;
SearchIndex
*
Doxygen
::
searchIndex
=
0
;
SDict
<
DefinitionList
>
*
Doxygen
::
symbolMap
;
SDict
<
DefinitionList
>
*
Doxygen
::
symbolMap
;
bool
Doxygen
::
outputToWizard
=
FALSE
;
bool
Doxygen
::
outputToWizard
=
FALSE
;
QDict
<
int
>
*
Doxygen
::
htmlDirMap
=
0
;
static
StringList
inputFiles
;
static
StringList
inputFiles
;
static
StringDict
excludeNameDict
(
1009
);
// sections
static
StringDict
excludeNameDict
(
1009
);
// sections
static
QDict
<
void
>
compoundKeywordDict
(
7
);
// keywords recognised as compounds
static
QDict
<
void
>
compoundKeywordDict
(
7
);
// keywords recognised as compounds
static
OutputList
*
outputList
=
0
;
// list of output generating objects
static
OutputList
*
outputList
=
0
;
// list of output generating objects
void
clearAll
()
void
clearAll
()
{
{
inputFiles
.
clear
();
inputFiles
.
clear
();
...
...
src/doxygen.h
View file @
cba24284
...
@@ -101,6 +101,7 @@ class Doxygen
...
@@ -101,6 +101,7 @@ class Doxygen
static
SearchIndex
*
searchIndex
;
static
SearchIndex
*
searchIndex
;
static
SDict
<
DefinitionList
>
*
symbolMap
;
static
SDict
<
DefinitionList
>
*
symbolMap
;
static
bool
outputToWizard
;
static
bool
outputToWizard
;
static
QDict
<
int
>
*
htmlDirMap
;
};
};
void
initDoxygen
();
void
initDoxygen
();
...
...
src/htmldocvisitor.cpp
View file @
cba24284
...
@@ -61,7 +61,7 @@ void HtmlDocVisitor::visit(DocWord *w)
...
@@ -61,7 +61,7 @@ void HtmlDocVisitor::visit(DocWord *w)
void
HtmlDocVisitor
::
visit
(
DocLinkedWord
*
w
)
void
HtmlDocVisitor
::
visit
(
DocLinkedWord
*
w
)
{
{
if
(
m_hide
)
return
;
if
(
m_hide
)
return
;
startLink
(
w
->
ref
(),
w
->
file
(),
w
->
anchor
());
startLink
(
w
->
ref
(),
w
->
file
(),
w
->
relPath
(),
w
->
anchor
());
filter
(
w
->
word
());
filter
(
w
->
word
());
endLink
();
endLink
();
}
}
...
@@ -750,7 +750,7 @@ void HtmlDocVisitor::visitPost(DocDotFile *df)
...
@@ -750,7 +750,7 @@ void HtmlDocVisitor::visitPost(DocDotFile *df)
void
HtmlDocVisitor
::
visitPre
(
DocLink
*
lnk
)
void
HtmlDocVisitor
::
visitPre
(
DocLink
*
lnk
)
{
{
if
(
m_hide
)
return
;
if
(
m_hide
)
return
;
startLink
(
lnk
->
ref
(),
lnk
->
file
(),
lnk
->
anchor
());
startLink
(
lnk
->
ref
(),
lnk
->
file
(),
lnk
->
relPath
(),
lnk
->
anchor
());
}
}
void
HtmlDocVisitor
::
visitPost
(
DocLink
*
)
void
HtmlDocVisitor
::
visitPost
(
DocLink
*
)
...
@@ -762,7 +762,10 @@ void HtmlDocVisitor::visitPost(DocLink *)
...
@@ -762,7 +762,10 @@ void HtmlDocVisitor::visitPost(DocLink *)
void
HtmlDocVisitor
::
visitPre
(
DocRef
*
ref
)
void
HtmlDocVisitor
::
visitPre
(
DocRef
*
ref
)
{
{
if
(
m_hide
)
return
;
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
());
if
(
!
ref
->
hasLinkText
())
filter
(
ref
->
targetTitle
());
}
}
...
@@ -891,7 +894,7 @@ void HtmlDocVisitor::visitPost(DocXRefItem *)
...
@@ -891,7 +894,7 @@ void HtmlDocVisitor::visitPost(DocXRefItem *)
void
HtmlDocVisitor
::
visitPre
(
DocInternalRef
*
ref
)
void
HtmlDocVisitor
::
visitPre
(
DocInternalRef
*
ref
)
{
{
if
(
m_hide
)
return
;
if
(
m_hide
)
return
;
startLink
(
0
,
ref
->
file
(),
ref
->
anchor
());
startLink
(
0
,
ref
->
file
(),
ref
->
relPath
(),
ref
->
anchor
());
}
}
void
HtmlDocVisitor
::
visitPost
(
DocInternalRef
*
)
void
HtmlDocVisitor
::
visitPost
(
DocInternalRef
*
)
...
@@ -972,7 +975,8 @@ void HtmlDocVisitor::filterQuotedCdataAttr(const char* str)
...
@@ -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
;
QCString
*
dest
;
if
(
!
ref
.
isEmpty
())
// link to entity imported via tag file
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
...
@@ -989,7 +993,11 @@ void HtmlDocVisitor::startLink(const QString &ref,const QString &file,const QStr
m_t
<<
"href=
\"
"
;
m_t
<<
"href=
\"
"
;
if
(
!
ref
.
isEmpty
())
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
(
!
file
.
isEmpty
())
m_t
<<
file
<<
Doxygen
::
htmlFileExtension
;
if
(
!
anchor
.
isEmpty
())
m_t
<<
"#"
<<
anchor
;
if
(
!
anchor
.
isEmpty
())
m_t
<<
"#"
<<
anchor
;
...
...
src/htmldocvisitor.h
View file @
cba24284
...
@@ -135,7 +135,7 @@ class HtmlDocVisitor : public DocVisitor
...
@@ -135,7 +135,7 @@ class HtmlDocVisitor : public DocVisitor
void
filter
(
const
char
*
str
);
void
filter
(
const
char
*
str
);
void
filterQuotedCdataAttr
(
const
char
*
str
);
void
filterQuotedCdataAttr
(
const
char
*
str
);
void
startLink
(
const
QString
&
ref
,
const
QString
&
file
,
void
startLink
(
const
QString
&
ref
,
const
QString
&
file
,
const
QString
&
anchor
);
const
QString
&
relPath
,
const
QString
&
anchor
);
void
endLink
();
void
endLink
();
void
writeDotFile
(
const
QString
&
fileName
);
void
writeDotFile
(
const
QString
&
fileName
);
...
...
src/htmlgen.cpp
View file @
cba24284
...
@@ -298,6 +298,7 @@ void HtmlGenerator::init()
...
@@ -298,6 +298,7 @@ void HtmlGenerator::init()
g_footer
=
fileToString
(
Config_getString
(
"HTML_FOOTER"
));
g_footer
=
fileToString
(
Config_getString
(
"HTML_FOOTER"
));
//printf("g_footer='%s'\n",g_footer.data());
//printf("g_footer='%s'\n",g_footer.data());
}
}
createSubDirs
(
d
);
}
}
void
HtmlGenerator
::
writeStyleSheetFile
(
QFile
&
file
)
void
HtmlGenerator
::
writeStyleSheetFile
(
QFile
&
file
)
...
@@ -306,7 +307,8 @@ void HtmlGenerator::writeStyleSheetFile(QFile &file)
...
@@ -306,7 +307,8 @@ void HtmlGenerator::writeStyleSheetFile(QFile &file)
t
<<
defaultStyleSheet
;
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
"
t
<<
"<!DOCTYPE HTML PUBLIC
\"
-//W3C//DTD HTML 4.01 Transitional//EN
\"
>
\n
"
"<html><head>"
"<html><head>"
...
@@ -319,7 +321,7 @@ static void writeDefaultHeaderFile(QTextStream &t, const char *title)
...
@@ -319,7 +321,7 @@ static void writeDefaultHeaderFile(QTextStream &t, const char *title)
t
<<
"href=
\"
"
;
t
<<
"href=
\"
"
;
if
(
Config_getString
(
"HTML_STYLESHEET"
).
isEmpty
())
if
(
Config_getString
(
"HTML_STYLESHEET"
).
isEmpty
())
{
{
t
<<
"doxygen.css"
;
t
<<
relPath
<<
"doxygen.css"
;
}
}
else
else
{
{
...
@@ -342,7 +344,7 @@ void HtmlGenerator::writeHeaderFile(QFile &file)
...
@@ -342,7 +344,7 @@ void HtmlGenerator::writeHeaderFile(QFile &file)
#if QT_VERSION >= 200
#if QT_VERSION >= 200
t
.
setEncoding
(
QTextStream
::
Latin1
);
t
.
setEncoding
(
QTextStream
::
Latin1
);
#endif
#endif
writeDefaultHeaderFile
(
t
,
"$title"
);
writeDefaultHeaderFile
(
t
,
"$title"
,
relativePathToRoot
(
0
)
);
}
}
void
HtmlGenerator
::
writeFooterFile
(
QFile
&
file
)
void
HtmlGenerator
::
writeFooterFile
(
QFile
&
file
)
...
@@ -366,6 +368,8 @@ void HtmlGenerator::startFile(const char *name,const char *,
...
@@ -366,6 +368,8 @@ void HtmlGenerator::startFile(const char *name,const char *,
//printf("HtmlGenerator::startFile(%s)\n",name);
//printf("HtmlGenerator::startFile(%s)\n",name);
QCString
fileName
=
name
;
QCString
fileName
=
name
;
lastTitle
=
title
;
lastTitle
=
title
;
relPath
=
relativePathToRoot
(
fileName
);
if
(
fileName
.
right
(
Doxygen
::
htmlFileExtension
.
length
())
!=
Doxygen
::
htmlFileExtension
)
if
(
fileName
.
right
(
Doxygen
::
htmlFileExtension
.
length
())
!=
Doxygen
::
htmlFileExtension
)
{
{
fileName
+=
Doxygen
::
htmlFileExtension
;
fileName
+=
Doxygen
::
htmlFileExtension
;
...
@@ -386,7 +390,7 @@ void HtmlGenerator::startFile(const char *name,const char *,
...
@@ -386,7 +390,7 @@ void HtmlGenerator::startFile(const char *name,const char *,
lastFile
=
fileName
;
lastFile
=
fileName
;
if
(
g_header
.
isEmpty
())
if
(
g_header
.
isEmpty
())
{
{
writeDefaultHeaderFile
(
t
,
dispTitle
);
writeDefaultHeaderFile
(
t
,
dispTitle
,
relPath
);
}
}
else
else
{
{
...
@@ -425,7 +429,8 @@ void HtmlGenerator::startFile(const char *name,const char *,
...
@@ -425,7 +429,8 @@ void HtmlGenerator::startFile(const char *name,const char *,
// t << "</a> ";
// 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
())
if
(
g_footer
.
isEmpty
())
{
{
...
@@ -435,8 +440,8 @@ static void writePageFooter(QTextStream &t,const QCString lastTitle)
...
@@ -435,8 +440,8 @@ static void writePageFooter(QTextStream &t,const QCString lastTitle)
Config_getString
(
"PROJECT_NAME"
)
Config_getString
(
"PROJECT_NAME"
)
);
);
t
<<
endl
<<
"<a href=
\"
http://www.doxygen.org/index.html
\"
>"
;
t
<<
endl
<<
"<a href=
\"
http://www.doxygen.org/index.html
\"
>"
;
t
<<
endl
<<
"<img src=
\"
doxygen.png
\"
alt=
\"
doxygen
\"
"
t
<<
endl
<<
"<img src=
\"
"
<<
relPath
<<
"
doxygen.png
\"
alt=
\"
doxygen
\"
"
<<
"align=
\"
middle
\"
border=0 >
"
<<
"</a>
"
<<
versionString
<<
" "
;
<<
"align=
\"
middle
\"
border=0 >
"
<<
"</a>
"
<<
versionString
<<
" "
;
t
<<
"</small></address>
\n
</body>
\n
</html>
\n
"
;
t
<<
"</small></address>
\n
</body>
\n
</html>
\n
"
;
}
}
else
else
...
@@ -447,7 +452,7 @@ static void writePageFooter(QTextStream &t,const QCString lastTitle)
...
@@ -447,7 +452,7 @@ static void writePageFooter(QTextStream &t,const QCString lastTitle)
void
HtmlGenerator
::
writeFooter
()
void
HtmlGenerator
::
writeFooter
()
{
{
writePageFooter
(
t
,
lastTitle
);
writePageFooter
(
t
,
lastTitle
,
relPath
);
}
}
void
HtmlGenerator
::
endFile
()
void
HtmlGenerator
::
endFile
()
...
@@ -562,10 +567,6 @@ void HtmlGenerator::writeIndexItem(const char *ref,const char *f,
...
@@ -562,10 +567,6 @@ void HtmlGenerator::writeIndexItem(const char *ref,const char *f,
{
{
t
<<
"</b>"
;
t
<<
"</b>"
;
}
}
//if (Config_getBool("GENERATE_HTMLHELP") && f)
//{
// htmlHelp->addItem(name,((QCString)f)+htmlFileExtension);
//}
}
}
void
HtmlGenerator
::
writeStartAnnoItem
(
const
char
*
,
const
char
*
f
,
void
HtmlGenerator
::
writeStartAnnoItem
(
const
char
*
,
const
char
*
f
,
...
@@ -576,10 +577,6 @@ 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
<<
"
\"
>"
;
t
<<
"<a class=
\"
el
\"
href=
\"
"
<<
f
<<
Doxygen
::
htmlFileExtension
<<
"
\"
>"
;
docify
(
name
);
docify
(
name
);
t
<<
"</a> "
;
t
<<
"</a> "
;
//if (Config_getBool("GENERATE_HTMLHELP") && f)
//{
// htmlHelp->addItem(name, ((QCString)f)+htmlFileExtension);
//}
}
}
void
HtmlGenerator
::
writeObjectLink
(
const
char
*
ref
,
const
char
*
f
,
void
HtmlGenerator
::
writeObjectLink
(
const
char
*
ref
,
const
char
*
f
,
...
@@ -600,7 +597,11 @@ void HtmlGenerator::writeObjectLink(const char *ref,const char *f,
...
@@ -600,7 +597,11 @@ void HtmlGenerator::writeObjectLink(const char *ref,const char *f,
t
<<
"href=
\"
"
;
t
<<
"href=
\"
"
;
if
(
ref
)
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
(
f
)
t
<<
f
<<
Doxygen
::
htmlFileExtension
;
if
(
anchor
)
t
<<
"#"
<<
anchor
;
if
(
anchor
)
t
<<
"#"
<<
anchor
;
...
@@ -627,7 +628,11 @@ void HtmlGenerator::writeCodeLink(const char *ref,const char *f,
...
@@ -627,7 +628,11 @@ void HtmlGenerator::writeCodeLink(const char *ref,const char *f,
t
<<
"href=
\"
"
;
t
<<
"href=
\"
"
;
if
(
ref
)
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
(
f
)
t
<<
f
<<
Doxygen
::
htmlFileExtension
;
if
(
anchor
)
t
<<
"#"
<<
anchor
;
if
(
anchor
)
t
<<
"#"
<<
anchor
;
...
@@ -640,7 +645,7 @@ void HtmlGenerator::writeCodeLink(const char *ref,const char *f,
...
@@ -640,7 +645,7 @@ void HtmlGenerator::writeCodeLink(const char *ref,const char *f,
void
HtmlGenerator
::
startTextLink
(
const
char
*
f
,
const
char
*
anchor
)
void
HtmlGenerator
::
startTextLink
(
const
char
*
f
,
const
char
*
anchor
)
{
{
t
<<
"<a href=
\"
"
;
t
<<
"<a href=
\"
"
;
if
(
f
)
t
<<
f
<<
Doxygen
::
htmlFileExtension
;
if
(
f
)
t
<<
relPath
<<
f
<<
Doxygen
::
htmlFileExtension
;
if
(
anchor
)
t
<<
"#"
<<
anchor
;
if
(
anchor
)
t
<<
"#"
<<
anchor
;
t
<<
"
\"
>"
;
t
<<
"
\"
>"
;
}
}
...
@@ -1019,7 +1024,7 @@ void HtmlGenerator::startMemberDocName(bool align)
...
@@ -1019,7 +1024,7 @@ void HtmlGenerator::startMemberDocName(bool align)
void
HtmlGenerator
::
endMemberDocName
()
void
HtmlGenerator
::
endMemberDocName
()
{
{
DBG_HTML
(
t
<<
"<!-- endMemberDocName -->"
<<
endl
;)
DBG_HTML
(
t
<<
"<!-- endMemberDocName -->"
<<
endl
;)
t
<<
"</td>"
<<
endl
;
t
<<
"
</td>"
<<
endl
;
}
}
void
HtmlGenerator
::
startParameterList
(
bool
openBracket
)
void
HtmlGenerator
::
startParameterList
(
bool
openBracket
)
...
@@ -1108,10 +1113,13 @@ void HtmlGenerator::endParameterList()
...
@@ -1108,10 +1113,13 @@ void HtmlGenerator::endParameterList()
t
<<
" </tr>"
<<
endl
;
t
<<
" </tr>"
<<
endl
;
}
}
void
HtmlGenerator
::
endMemberDoc
()
void
HtmlGenerator
::
endMemberDoc
(
bool
hasArgs
)
{
{
DBG_HTML
(
t
<<
"<!-- endMemberDoc -->"
<<
endl
;)
DBG_HTML
(
t
<<
"<!-- endMemberDoc -->"
<<
endl
;)
t
<<
endl
;
if
(
!
hasArgs
)
{
t
<<
" </tr>"
<<
endl
;
}
t
<<
" </table>"
<<
endl
;
t
<<
" </table>"
<<
endl
;
t
<<
" </td>"
<<
endl
;
t
<<
" </td>"
<<
endl
;
t
<<
" </tr>"
<<
endl
;
t
<<
" </tr>"
<<
endl
;
...
@@ -1124,7 +1132,7 @@ void HtmlGenerator::startDotGraph()
...
@@ -1124,7 +1132,7 @@ void HtmlGenerator::startDotGraph()
void
HtmlGenerator
::
endDotGraph
(
DotClassGraph
&
g
)
void
HtmlGenerator
::
endDotGraph
(
DotClassGraph
&
g
)
{
{
g
.
writeGraph
(
t
,
BITMAP
,
Config_getString
(
"HTML_OUTPUT"
)
);
g
.
writeGraph
(
t
,
BITMAP
,
dir
,
relPath
);
}
}
void
HtmlGenerator
::
startInclDepGraph
()
void
HtmlGenerator
::
startInclDepGraph
()
...
@@ -1133,7 +1141,7 @@ void HtmlGenerator::startInclDepGraph()
...
@@ -1133,7 +1141,7 @@ void HtmlGenerator::startInclDepGraph()
void
HtmlGenerator
::
endInclDepGraph
(
DotInclDepGraph
&
g
)
void
HtmlGenerator
::
endInclDepGraph
(
DotInclDepGraph
&
g
)
{
{
g
.
writeGraph
(
t
,
BITMAP
,
Config_getString
(
"HTML_OUTPUT"
)
);
g
.
writeGraph
(
t
,
BITMAP
,
dir
,
relPath
);
}
}
void
HtmlGenerator
::
startCallGraph
()
void
HtmlGenerator
::
startCallGraph
()
...
@@ -1142,12 +1150,12 @@ void HtmlGenerator::startCallGraph()
...
@@ -1142,12 +1150,12 @@ void HtmlGenerator::startCallGraph()
void
HtmlGenerator
::
endCallGraph
(
DotCallGraph
&
g
)
void
HtmlGenerator
::
endCallGraph
(
DotCallGraph
&
g
)
{
{
g
.
writeGraph
(
t
,
BITMAP
,
Config_getString
(
"HTML_OUTPUT"
)
);
g
.
writeGraph
(
t
,
BITMAP
,
dir
,
relPath
);
}
}
void
HtmlGenerator
::
writeGraphicalHierarchy
(
DotGfxHierarchyTable
&
g
)
void
HtmlGenerator
::
writeGraphicalHierarchy
(
DotGfxHierarchyTable
&
g
)
{
{
g
.
writeGraph
(
t
,
Config_getString
(
"HTML_OUTPUT"
)
);
g
.
writeGraph
(
t
,
dir
);
}
}
void
HtmlGenerator
::
startMemberGroupHeader
(
bool
)
void
HtmlGenerator
::
startMemberGroupHeader
(
bool
)
...
@@ -1278,7 +1286,8 @@ void HtmlGenerator::printDoc(DocNode *n)
...
@@ -1278,7 +1286,8 @@ void HtmlGenerator::printDoc(DocNode *n)
}
}
static
void
startQuickIndexItem
(
QTextStream
&
t
,
const
char
*
l
,
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
<<
" | "
;
if
(
!
first
&&
compact
)
t
<<
" | "
;
first
=
FALSE
;
first
=
FALSE
;
...
@@ -1291,7 +1300,7 @@ static void startQuickIndexItem(QTextStream &t,const char *l,
...
@@ -1291,7 +1300,7 @@ static void startQuickIndexItem(QTextStream &t,const char *l,
{
{
t
<<
"<a class=
\"
qindex
\"
"
;
t
<<
"<a class=
\"
qindex
\"
"
;
}
}
t
<<
"href=
\"
"
<<
l
<<
"
\"
>"
;
t
<<
"href=
\"
"
<<
relPath
<<
l
<<
"
\"
>"
;
}
}
static
void
endQuickIndexItem
(
QTextStream
&
t
)
static
void
endQuickIndexItem
(
QTextStream
&
t
)
...
@@ -1304,7 +1313,8 @@ static QCString fixSpaces(const QCString &s)
...
@@ -1304,7 +1313,8 @@ static QCString fixSpaces(const QCString &s)
return
substitute
(
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
;
bool
first
=
TRUE
;
if
(
compact
)
if
(
compact
)
...
@@ -1318,18 +1328,19 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,HighlightedItem h
...
@@ -1318,18 +1328,19 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,HighlightedItem h
if
(
Config_getBool
(
"SEARCHENGINE"
))
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"
))
if
(
Config_getBool
(
"GENERATE_TREEVIEW"
))
{
{
startQuickIndexItem
(
t
,
"main"
+
Doxygen
::
htmlFileExtension
,
startQuickIndexItem
(
t
,
"main"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Main
,
compact
,
first
);
hli
==
HLI_Main
,
compact
,
first
,
relPath
);
}
}
else
else
{
{
startQuickIndexItem
(
t
,
"index"
+
Doxygen
::
htmlFileExtension
,
startQuickIndexItem
(
t
,
"index"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Main
,
compact
,
first
);
hli
==
HLI_Main
,
compact
,
first
,
relPath
);
}
}
t
<<
fixSpaces
(
theTranslator
->
trMainPage
());
t
<<
fixSpaces
(
theTranslator
->
trMainPage
());
endQuickIndexItem
(
t
);
endQuickIndexItem
(
t
);
...
@@ -1337,14 +1348,14 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,HighlightedItem h
...
@@ -1337,14 +1348,14 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,HighlightedItem h
if
(
documentedGroups
>
0
)
if
(
documentedGroups
>
0
)
{
{
startQuickIndexItem
(
t
,
"modules"
+
Doxygen
::
htmlFileExtension
,
startQuickIndexItem
(
t
,
"modules"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Modules
,
compact
,
first
);
hli
==
HLI_Modules
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trModules
());
t
<<
fixSpaces
(
theTranslator
->
trModules
());
endQuickIndexItem
(
t
);
endQuickIndexItem
(
t
);
}
}
if
(
documentedNamespaces
>
0
)
if
(
documentedNamespaces
>
0
)
{
{
startQuickIndexItem
(
t
,
"namespaces"
+
Doxygen
::
htmlFileExtension
,
startQuickIndexItem
(
t
,
"namespaces"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Namespaces
,
compact
,
first
);
hli
==
HLI_Namespaces
,
compact
,
first
,
relPath
);
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_JAVA"
))
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_JAVA"
))
{
{
t
<<
fixSpaces
(
theTranslator
->
trPackages
());
t
<<
fixSpaces
(
theTranslator
->
trPackages
());
...
@@ -1358,7 +1369,7 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,HighlightedItem h
...
@@ -1358,7 +1369,7 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,HighlightedItem h
if
(
hierarchyClasses
>
0
)
if
(
hierarchyClasses
>
0
)
{
{
startQuickIndexItem
(
t
,
"hierarchy"
+
Doxygen
::
htmlFileExtension
,
startQuickIndexItem
(
t
,
"hierarchy"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Hierarchy
,
compact
,
first
);
hli
==
HLI_Hierarchy
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trClassHierarchy
());
t
<<
fixSpaces
(
theTranslator
->
trClassHierarchy
());
endQuickIndexItem
(
t
);
endQuickIndexItem
(
t
);
}
}
...
@@ -1367,54 +1378,54 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,HighlightedItem h
...
@@ -1367,54 +1378,54 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,HighlightedItem h
if
(
Config_getBool
(
"ALPHABETICAL_INDEX"
))
if
(
Config_getBool
(
"ALPHABETICAL_INDEX"
))
{
{
startQuickIndexItem
(
t
,
"classes"
+
Doxygen
::
htmlFileExtension
,
startQuickIndexItem
(
t
,
"classes"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Classes
,
compact
,
first
);
hli
==
HLI_Classes
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trAlphabeticalList
());
t
<<
fixSpaces
(
theTranslator
->
trAlphabeticalList
());
endQuickIndexItem
(
t
);
endQuickIndexItem
(
t
);
}
}
startQuickIndexItem
(
t
,
"annotated"
+
Doxygen
::
htmlFileExtension
,
startQuickIndexItem
(
t
,
"annotated"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Annotated
,
compact
,
first
);
hli
==
HLI_Annotated
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trCompoundList
());
t
<<
fixSpaces
(
theTranslator
->
trCompoundList
());
endQuickIndexItem
(
t
);
endQuickIndexItem
(
t
);
}
}
if
(
documentedHtmlFiles
>
0
)
if
(
documentedHtmlFiles
>
0
)
{
{
startQuickIndexItem
(
t
,
"files"
+
Doxygen
::
htmlFileExtension
,
startQuickIndexItem
(
t
,
"files"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Files
,
compact
,
first
);
hli
==
HLI_Files
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trFileList
());
t
<<
fixSpaces
(
theTranslator
->
trFileList
());
endQuickIndexItem
(
t
);
endQuickIndexItem
(
t
);
}
}
if
(
documentedNamespaceMembers
[
NMHL_All
]
>
0
)
if
(
documentedNamespaceMembers
[
NMHL_All
]
>
0
)
{
{
startQuickIndexItem
(
t
,
"namespacemembers"
+
Doxygen
::
htmlFileExtension
,
startQuickIndexItem
(
t
,
"namespacemembers"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_NamespaceMembers
,
compact
,
first
);
hli
==
HLI_NamespaceMembers
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trNamespaceMembers
());
t
<<
fixSpaces
(
theTranslator
->
trNamespaceMembers
());
endQuickIndexItem
(
t
);
endQuickIndexItem
(
t
);
}
}
if
(
documentedClassMembers
[
CMHL_All
]
>
0
)
if
(
documentedClassMembers
[
CMHL_All
]
>
0
)
{
{
startQuickIndexItem
(
t
,
"functions"
+
Doxygen
::
htmlFileExtension
,
startQuickIndexItem
(
t
,
"functions"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Functions
,
compact
,
first
);
hli
==
HLI_Functions
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trCompoundMembers
());
t
<<
fixSpaces
(
theTranslator
->
trCompoundMembers
());
endQuickIndexItem
(
t
);
endQuickIndexItem
(
t
);
}
}
if
(
documentedFileMembers
[
FMHL_All
]
>
0
)
if
(
documentedFileMembers
[
FMHL_All
]
>
0
)
{
{
startQuickIndexItem
(
t
,
"globals"
+
Doxygen
::
htmlFileExtension
,
startQuickIndexItem
(
t
,
"globals"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Globals
,
compact
,
first
);
hli
==
HLI_Globals
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trFileMembers
());
t
<<
fixSpaces
(
theTranslator
->
trFileMembers
());
endQuickIndexItem
(
t
);
endQuickIndexItem
(
t
);
}
}
if
(
indexedPages
>
0
)
if
(
indexedPages
>
0
)
{
{
startQuickIndexItem
(
t
,
"pages"
+
Doxygen
::
htmlFileExtension
,
startQuickIndexItem
(
t
,
"pages"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Pages
,
compact
,
first
);
hli
==
HLI_Pages
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trRelatedPages
());
t
<<
fixSpaces
(
theTranslator
->
trRelatedPages
());
endQuickIndexItem
(
t
);
endQuickIndexItem
(
t
);
}
}
if
(
Doxygen
::
exampleSDict
->
count
()
>
0
)
if
(
Doxygen
::
exampleSDict
->
count
()
>
0
)
{
{
startQuickIndexItem
(
t
,
"examples"
+
Doxygen
::
htmlFileExtension
,
startQuickIndexItem
(
t
,
"examples"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Examples
,
compact
,
first
);
hli
==
HLI_Examples
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trExamples
());
t
<<
fixSpaces
(
theTranslator
->
trExamples
());
endQuickIndexItem
(
t
);
endQuickIndexItem
(
t
);
}
}
...
@@ -1454,7 +1465,7 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,HighlightedItem h
...
@@ -1454,7 +1465,7 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,HighlightedItem h
void
HtmlGenerator
::
writeQuickLinks
(
bool
compact
,
HighlightedItem
hli
)
void
HtmlGenerator
::
writeQuickLinks
(
bool
compact
,
HighlightedItem
hli
)
{
{
writeDefaultQuickLinks
(
t
,
compact
,
hli
);
writeDefaultQuickLinks
(
t
,
compact
,
hli
,
relPath
);
}
}
void
HtmlGenerator
::
writeSearchPage
()
void
HtmlGenerator
::
writeSearchPage
()
...
@@ -1471,7 +1482,7 @@ void HtmlGenerator::writeSearchPage()
...
@@ -1471,7 +1482,7 @@ void HtmlGenerator::writeSearchPage()
#endif
#endif
if
(
g_header
.
isEmpty
())
if
(
g_header
.
isEmpty
())
{
{
writeDefaultHeaderFile
(
t
,
"Search"
);
writeDefaultHeaderFile
(
t
,
"Search"
,
0
);
}
}
else
else
{
{
...
@@ -1481,7 +1492,7 @@ void HtmlGenerator::writeSearchPage()
...
@@ -1481,7 +1492,7 @@ void HtmlGenerator::writeSearchPage()
<<
versionString
<<
" -->"
<<
endl
;
<<
versionString
<<
" -->"
<<
endl
;
if
(
!
Config_getBool
(
"DISABLE_INDEX"
))
if
(
!
Config_getBool
(
"DISABLE_INDEX"
))
{
{
writeDefaultQuickLinks
(
t
,
TRUE
,
HLI_Search
);
writeDefaultQuickLinks
(
t
,
TRUE
,
HLI_Search
,
""
);
}
}
t
<<
"
\n
<?php
\n\n
"
;
t
<<
"
\n
<?php
\n\n
"
;
...
@@ -1514,7 +1525,7 @@ void HtmlGenerator::writeSearchPage()
...
@@ -1514,7 +1525,7 @@ void HtmlGenerator::writeSearchPage()
t
<<
search_script
;
t
<<
search_script
;
t
<<
"
\n
"
;
t
<<
"
\n
"
;
t
<<
"?>
\n
"
;
t
<<
"?>
\n
"
;
writePageFooter
(
t
,
"Search"
);
writePageFooter
(
t
,
"Search"
,
""
);
}
}
}
}
}
}
...
...
src/htmlgen.h
View file @
cba24284
...
@@ -128,7 +128,7 @@ class HtmlGenerator : public OutputGenerator
...
@@ -128,7 +128,7 @@ class HtmlGenerator : public OutputGenerator
void
lineBreak
()
{
t
<<
"<br>"
<<
endl
;
}
void
lineBreak
()
{
t
<<
"<br>"
<<
endl
;
}
void
writeChar
(
char
c
);
void
writeChar
(
char
c
);
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
void
endMemberDoc
();
void
endMemberDoc
(
bool
);
void
startDoxyAnchor
(
const
char
*
fName
,
const
char
*
manName
,
void
startDoxyAnchor
(
const
char
*
fName
,
const
char
*
manName
,
const
char
*
anchor
,
const
char
*
name
);
const
char
*
anchor
,
const
char
*
name
);
void
endDoxyAnchor
(
const
char
*
fName
,
const
char
*
anchor
);
void
endDoxyAnchor
(
const
char
*
fName
,
const
char
*
anchor
);
...
@@ -214,6 +214,7 @@ class HtmlGenerator : public OutputGenerator
...
@@ -214,6 +214,7 @@ class HtmlGenerator : public OutputGenerator
private
:
private
:
QCString
lastTitle
;
QCString
lastTitle
;
QCString
lastFile
;
QCString
lastFile
;
QCString
relPath
;
HtmlGenerator
&
operator
=
(
const
HtmlGenerator
&
g
);
HtmlGenerator
&
operator
=
(
const
HtmlGenerator
&
g
);
HtmlGenerator
(
const
HtmlGenerator
&
g
);
HtmlGenerator
(
const
HtmlGenerator
&
g
);
...
...
src/latexdocvisitor.cpp
View file @
cba24284
...
@@ -904,7 +904,7 @@ void LatexDocVisitor::visitPre(DocXRefItem *x)
...
@@ -904,7 +904,7 @@ void LatexDocVisitor::visitPre(DocXRefItem *x)
m_t
<<
"
\\
item["
;
m_t
<<
"
\\
item["
;
if
(
Config_getBool
(
"PDF_HYPERLINKS"
))
if
(
Config_getBool
(
"PDF_HYPERLINKS"
))
{
{
m_t
<<
"
\\
hyperlink{"
<<
x
->
file
(
)
<<
"_"
<<
x
->
anchor
()
<<
"}{"
;
m_t
<<
"
\\
hyperlink{"
<<
stripPath
(
x
->
file
()
)
<<
"_"
<<
x
->
anchor
()
<<
"}{"
;
}
}
else
else
{
{
...
@@ -960,7 +960,7 @@ void LatexDocVisitor::startLink(const QString &ref,const QString &file,const QSt
...
@@ -960,7 +960,7 @@ void LatexDocVisitor::startLink(const QString &ref,const QString &file,const QSt
if
(
ref
.
isEmpty
()
&&
Config_getBool
(
"PDF_HYPERLINKS"
))
if
(
ref
.
isEmpty
()
&&
Config_getBool
(
"PDF_HYPERLINKS"
))
{
{
m_t
<<
"
\\
hyperlink{"
;
m_t
<<
"
\\
hyperlink{"
;
if
(
!
file
.
isEmpty
())
m_t
<<
file
;
if
(
!
file
.
isEmpty
())
m_t
<<
stripPath
(
file
)
;
if
(
!
file
.
isEmpty
()
&&
!
anchor
.
isEmpty
())
m_t
<<
"_"
;
if
(
!
file
.
isEmpty
()
&&
!
anchor
.
isEmpty
())
m_t
<<
"_"
;
if
(
!
anchor
.
isEmpty
())
m_t
<<
anchor
;
if
(
!
anchor
.
isEmpty
())
m_t
<<
anchor
;
m_t
<<
"}{"
;
m_t
<<
"}{"
;
...
...
src/latexgen.cpp
View file @
cba24284
...
@@ -51,6 +51,7 @@
...
@@ -51,6 +51,7 @@
// return result;
// return result;
//}
//}
static
QCString
escapeLabelName
(
const
char
*
s
)
static
QCString
escapeLabelName
(
const
char
*
s
)
{
{
QCString
result
;
QCString
result
;
...
@@ -222,6 +223,8 @@ void LatexGenerator::init()
...
@@ -222,6 +223,8 @@ void LatexGenerator::init()
t
<<
endl
t
<<
endl
<<
"clean:"
<<
endl
<<
"clean:"
<<
endl
<<
"
\t
rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf"
<<
endl
;
<<
"
\t
rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf"
<<
endl
;
createSubDirs
(
d
);
}
}
static
void
writeDefaultHeaderPart1
(
QTextStream
&
t
)
static
void
writeDefaultHeaderPart1
(
QTextStream
&
t
)
...
@@ -441,6 +444,7 @@ void LatexGenerator::writeStyleSheetFile(QFile &f)
...
@@ -441,6 +444,7 @@ void LatexGenerator::writeStyleSheetFile(QFile &f)
void
LatexGenerator
::
startFile
(
const
char
*
name
,
const
char
*
,
const
char
*
)
void
LatexGenerator
::
startFile
(
const
char
*
name
,
const
char
*
,
const
char
*
)
{
{
QCString
fileName
=
name
;
QCString
fileName
=
name
;
relPath
=
relativePathToRoot
(
fileName
);
if
(
fileName
.
right
(
4
)
!=
".tex"
&&
fileName
.
right
(
4
)
!=
".sty"
)
fileName
+=
".tex"
;
if
(
fileName
.
right
(
4
)
!=
".tex"
&&
fileName
.
right
(
4
)
!=
".sty"
)
fileName
+=
".tex"
;
startPlainFile
(
fileName
);
startPlainFile
(
fileName
);
}
}
...
@@ -926,7 +930,7 @@ void LatexGenerator::startTextLink(const char *f,const char *anchor)
...
@@ -926,7 +930,7 @@ void LatexGenerator::startTextLink(const char *f,const char *anchor)
if
(
Config_getBool
(
"PDF_HYPERLINKS"
))
if
(
Config_getBool
(
"PDF_HYPERLINKS"
))
{
{
t
<<
"
\\
hyperlink{"
;
t
<<
"
\\
hyperlink{"
;
if
(
f
)
t
<<
f
;
if
(
f
)
t
<<
stripPath
(
f
)
;
if
(
anchor
)
t
<<
"_"
<<
anchor
;
if
(
anchor
)
t
<<
"_"
<<
anchor
;
t
<<
"}{"
;
t
<<
"}{"
;
}
}
...
@@ -947,7 +951,7 @@ void LatexGenerator::writeObjectLink(const char *ref, const char *f,
...
@@ -947,7 +951,7 @@ void LatexGenerator::writeObjectLink(const char *ref, const char *f,
if
(
!
ref
&&
Config_getBool
(
"PDF_HYPERLINKS"
))
if
(
!
ref
&&
Config_getBool
(
"PDF_HYPERLINKS"
))
{
{
t
<<
"
\\
hyperlink{"
;
t
<<
"
\\
hyperlink{"
;
if
(
f
)
t
<<
f
;
if
(
f
)
t
<<
stripPath
(
f
)
;
if
(
f
&&
anchor
)
t
<<
"_"
;
if
(
f
&&
anchor
)
t
<<
"_"
;
if
(
anchor
)
t
<<
anchor
;
if
(
anchor
)
t
<<
anchor
;
t
<<
"}{"
;
t
<<
"}{"
;
...
@@ -986,7 +990,7 @@ void LatexGenerator::startTitleHead(const char *fileName)
...
@@ -986,7 +990,7 @@ void LatexGenerator::startTitleHead(const char *fileName)
{
{
if
(
Config_getBool
(
"PDF_HYPERLINKS"
)
&&
fileName
)
if
(
Config_getBool
(
"PDF_HYPERLINKS"
)
&&
fileName
)
{
{
t
<<
"
\\
hypertarget{"
<<
fileName
<<
"}{"
<<
endl
;
t
<<
"
\\
hypertarget{"
<<
stripPath
(
fileName
)
<<
"}{"
<<
endl
;
}
}
if
(
Config_getBool
(
"COMPACT_LATEX"
))
if
(
Config_getBool
(
"COMPACT_LATEX"
))
{
{
...
@@ -1100,7 +1104,7 @@ void LatexGenerator::startMemberDoc(const char *clname,
...
@@ -1100,7 +1104,7 @@ void LatexGenerator::startMemberDoc(const char *clname,
t
<<
"{
\\
setlength{
\\
rightskip}{0pt plus 5cm}"
;
t
<<
"{
\\
setlength{
\\
rightskip}{0pt plus 5cm}"
;
}
}
void
LatexGenerator
::
endMemberDoc
()
void
LatexGenerator
::
endMemberDoc
(
bool
)
{
{
t
<<
"}"
;
t
<<
"}"
;
if
(
Config_getBool
(
"COMPACT_LATEX"
))
t
<<
"
\\
hfill"
;
if
(
Config_getBool
(
"COMPACT_LATEX"
))
t
<<
"
\\
hfill"
;
...
@@ -1112,7 +1116,7 @@ void LatexGenerator::startDoxyAnchor(const char *fName,const char *,
...
@@ -1112,7 +1116,7 @@ void LatexGenerator::startDoxyAnchor(const char *fName,const char *,
if
(
Config_getBool
(
"PDF_HYPERLINKS"
))
if
(
Config_getBool
(
"PDF_HYPERLINKS"
))
{
{
t
<<
"
\\
hypertarget{"
;
t
<<
"
\\
hypertarget{"
;
if
(
fName
)
t
<<
fName
;
if
(
fName
)
t
<<
stripPath
(
fName
)
;
if
(
anchor
)
t
<<
"_"
<<
anchor
;
if
(
anchor
)
t
<<
"_"
<<
anchor
;
t
<<
"}{"
<<
endl
;
t
<<
"}{"
<<
endl
;
}
}
...
@@ -1136,7 +1140,7 @@ void LatexGenerator::writeAnchor(const char *fName,const char *name)
...
@@ -1136,7 +1140,7 @@ void LatexGenerator::writeAnchor(const char *fName,const char *name)
t
<<
"
\\
label{"
<<
name
<<
"}"
<<
endl
;
t
<<
"
\\
label{"
<<
name
<<
"}"
<<
endl
;
if
(
fName
&&
Config_getBool
(
"PDF_HYPERLINKS"
))
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
...
@@ -1168,7 +1172,7 @@ void LatexGenerator::startSection(const char *lab,const char *,SectionInfo::Sect
{
{
if
(
Config_getBool
(
"PDF_HYPERLINKS"
))
if
(
Config_getBool
(
"PDF_HYPERLINKS"
))
{
{
t
<<
"
\\
hypertarget{"
<<
lab
<<
"}{}"
;
t
<<
"
\\
hypertarget{"
<<
stripPath
(
lab
)
<<
"}{}"
;
}
}
t
<<
"
\\
"
;
t
<<
"
\\
"
;
if
(
Config_getBool
(
"COMPACT_LATEX"
))
if
(
Config_getBool
(
"COMPACT_LATEX"
))
...
@@ -1380,7 +1384,7 @@ void LatexGenerator::startDotGraph()
...
@@ -1380,7 +1384,7 @@ void LatexGenerator::startDotGraph()
void
LatexGenerator
::
endDotGraph
(
DotClassGraph
&
g
)
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
()
void
LatexGenerator
::
startInclDepGraph
()
...
@@ -1389,7 +1393,7 @@ void LatexGenerator::startInclDepGraph()
...
@@ -1389,7 +1393,7 @@ void LatexGenerator::startInclDepGraph()
void
LatexGenerator
::
endInclDepGraph
(
DotInclDepGraph
&
g
)
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
()
void
LatexGenerator
::
startCallGraph
()
...
@@ -1398,7 +1402,7 @@ void LatexGenerator::startCallGraph()
...
@@ -1398,7 +1402,7 @@ void LatexGenerator::startCallGraph()
void
LatexGenerator
::
endCallGraph
(
DotCallGraph
&
g
)
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
()
void
LatexGenerator
::
startDescription
()
...
...
src/latexgen.h
View file @
cba24284
...
@@ -142,7 +142,7 @@ class LatexGenerator : public OutputGenerator
...
@@ -142,7 +142,7 @@ class LatexGenerator : public OutputGenerator
void
endDescItem
();
void
endDescItem
();
void
lineBreak
()
{
t
<<
"
\\
par
\n
"
;
}
void
lineBreak
()
{
t
<<
"
\\
par
\n
"
;
}
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
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
startDoxyAnchor
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
void
endDoxyAnchor
(
const
char
*
,
const
char
*
);
void
endDoxyAnchor
(
const
char
*
,
const
char
*
);
void
startCodeAnchor
(
const
char
*
)
{}
void
startCodeAnchor
(
const
char
*
)
{}
...
@@ -299,6 +299,7 @@ class LatexGenerator : public OutputGenerator
...
@@ -299,6 +299,7 @@ class LatexGenerator : public OutputGenerator
bool
insideTabbing
;
bool
insideTabbing
;
bool
firstDescItem
;
bool
firstDescItem
;
bool
insidePre
;
bool
insidePre
;
QCString
relPath
;
};
};
#endif
#endif
src/mangen.cpp
View file @
cba24284
...
@@ -35,10 +35,9 @@ static QCString getExtension()
...
@@ -35,10 +35,9 @@ static QCString getExtension()
{
{
QCString
ext
=
Config_getString
(
"MAN_EXTENSION"
);
QCString
ext
=
Config_getString
(
"MAN_EXTENSION"
);
if
(
ext
.
length
()
>=
2
&&
if
(
ext
.
length
()
>=
2
&&
ext
.
data
()[
0
]
==
'.'
&&
ext
.
data
()[
0
]
==
'.'
)
isdigit
(
ext
.
data
()[
1
]
)
)
{
{
ext
=
ext
.
mid
(
1
,
1
);
ext
=
ext
.
mid
(
1
,
ext
.
length
()
-
1
);
}
}
else
else
{
{
...
@@ -95,6 +94,7 @@ void ManGenerator::init()
...
@@ -95,6 +94,7 @@ void ManGenerator::init()
err
(
"Could not create output directory %s/man%s
\n
"
,
manOutput
.
data
(),
ext
.
data
());
err
(
"Could not create output directory %s/man%s
\n
"
,
manOutput
.
data
(),
ext
.
data
());
exit
(
1
);
exit
(
1
);
}
}
createSubDirs
(
d
);
}
}
static
QCString
buildFileName
(
const
char
*
name
)
static
QCString
buildFileName
(
const
char
*
name
)
...
@@ -405,7 +405,7 @@ void ManGenerator::startDoxyAnchor(const char *,const char *manName,
...
@@ -405,7 +405,7 @@ void ManGenerator::startDoxyAnchor(const char *,const char *manName,
linkfile
.
close
();
linkfile
.
close
();
}
}
void
ManGenerator
::
endMemberDoc
()
void
ManGenerator
::
endMemberDoc
(
bool
)
{
{
t
<<
"
\"
"
;
t
<<
"
\"
"
;
}
}
...
...
src/mangen.h
View file @
cba24284
...
@@ -135,7 +135,7 @@ class ManGenerator : public OutputGenerator
...
@@ -135,7 +135,7 @@ class ManGenerator : public OutputGenerator
void
lineBreak
()
{
t
<<
"
\n
.br"
<<
endl
;
}
void
lineBreak
()
{
t
<<
"
\n
.br"
<<
endl
;
}
void
writeChar
(
char
c
);
void
writeChar
(
char
c
);
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
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
startDoxyAnchor
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
void
endDoxyAnchor
(
const
char
*
,
const
char
*
)
{}
void
endDoxyAnchor
(
const
char
*
,
const
char
*
)
{}
void
startCodeAnchor
(
const
char
*
)
{}
void
startCodeAnchor
(
const
char
*
)
{}
...
...
src/memberdef.cpp
View file @
cba24284
...
@@ -74,24 +74,33 @@ static QCString addTemplateNames(const QCString &s,const QCString &n,const QCStr
...
@@ -74,24 +74,33 @@ static QCString addTemplateNames(const QCString &s,const QCString &n,const QCStr
return
result
;
return
result
;
}
}
static
void
writeDefArgumentList
(
OutputList
&
ol
,
ClassDef
*
cd
,
static
bool
writeDefArgumentList
(
OutputList
&
ol
,
ClassDef
*
cd
,
const
QCString
&
/*scopeName*/
,
MemberDef
*
md
)
const
QCString
&
/*scopeName*/
,
MemberDef
*
md
)
{
{
ArgumentList
*
defArgList
=
md
->
isDocsForDefinition
()
?
ArgumentList
*
defArgList
=
md
->
isDocsForDefinition
()
?
md
->
argumentList
()
:
md
->
declArgumentList
();
md
->
argumentList
()
:
md
->
declArgumentList
();
//printf("writeDefArgumentList `%s' isDocsForDefinition()=%d\n",md->name().data(),md->isDocsForDefinition());
//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
(
" "
);
if
(
!
md
->
isDefine
())
ol
.
docify
(
" "
);
//printf("writeDefArgList(%d)\n",defArgList->count());
//printf("writeDefArgList(%d)\n",defArgList->count());
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
endMemberDocName
();
{
ol
.
startParameterList
(
!
md
->
isObjCMethod
());
// html
ol
.
endMemberDocName
();
ol
.
startParameterList
(
!
md
->
isObjCMethod
());
}
ol
.
enableAll
();
ol
.
enableAll
();
ol
.
disable
(
OutputGenerator
::
Html
);
ol
.
disable
(
OutputGenerator
::
Html
);
if
(
!
md
->
isObjCMethod
())
ol
.
docify
(
"("
);
// start argument list
{
ol
.
endMemberDocName
();
// other formats
if
(
!
md
->
isObjCMethod
())
ol
.
docify
(
"("
);
// start argument list
ol
.
endMemberDocName
();
}
ol
.
popGeneratorState
();
ol
.
popGeneratorState
();
//printf("===> name=%s isDefine=%d\n",md->name().data(),md->isDefine());
//printf("===> name=%s isDefine=%d\n",md->name().data(),md->isDefine());
...
@@ -227,6 +236,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
...
@@ -227,6 +236,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
{
{
ol
.
docify
(
" volatile"
);
ol
.
docify
(
" volatile"
);
}
}
return
TRUE
;
}
}
static
void
writeTemplatePrefix
(
OutputList
&
ol
,
ArgumentList
*
al
)
static
void
writeTemplatePrefix
(
OutputList
&
ol
,
ArgumentList
*
al
)
...
@@ -1168,124 +1178,145 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
...
@@ -1168,124 +1178,145 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
)
)
{
{
// if this member is in a group find the real scope name.
// if this member is in a group find the real scope name.
bool
hasParameterList
=
FALSE
;
bool
hasDocs
=
isDetailedSectionVisible
(
inGroup
);
bool
hasDocs
=
isDetailedSectionVisible
(
inGroup
);
//printf("MemberDef::writeDocumentation(): name=`%s' hasDocs=`%d' containerType=%d inGroup=%d\n",
//printf("MemberDef::writeDocumentation(): name=`%s' hasDocs=`%d' containerType=%d inGroup=%d\n",
// name().data(),hasDocs,container->definitionType(),inGroup);
// name().data(),hasDocs,container->definitionType(),inGroup);
if
(
hasDocs
)
if
(
!
hasDocs
)
return
;
QCString
scopeName
=
scName
;
if
(
container
->
definitionType
()
==
TypeGroup
)
{
{
QCString
scopeName
=
scName
;
if
(
getClassDef
())
scopeName
=
getClassDef
()
->
name
();
if
(
container
->
definitionType
()
==
TypeGroup
)
else
if
(
getNamespaceDef
())
scopeName
=
getNamespaceDef
()
->
name
();
{
else
if
(
getFileDef
())
scopeName
=
getFileDef
()
->
name
();
if
(
getClassDef
())
scopeName
=
getClassDef
()
->
name
();
}
else
if
(
getNamespaceDef
())
scopeName
=
getNamespaceDef
()
->
name
();
else
if
(
getFileDef
())
scopeName
=
getFileDef
()
->
name
();
}
QCString
cname
=
container
->
name
();
QCString
cfname
=
getOutputFileBase
();
//ol.addIndexItem(name(),cname
);
QCString
cname
=
container
->
name
(
);
//ol.addIndexItem(cname,name());
QCString
cfname
=
getOutputFileBase
();
if
(
Config_getBool
(
"GENERATE_HTML"
)
&&
Config_getBool
(
"GENERATE_HTMLHELP"
))
//ol.addIndexItem(name(),cname);
{
//ol.addIndexItem(cname,name());
HtmlHelp
*
htmlHelp
=
HtmlHelp
::
getInstance
();
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
());
}
// get member name
if
(
Config_getBool
(
"GENERATE_HTML"
)
&&
Config_getBool
(
"GENERATE_HTMLHELP"
))
QCString
doxyName
=
name
().
copy
();
{
// prepend scope if there is any. TODO: make this optional for C only docs
HtmlHelp
*
htmlHelp
=
HtmlHelp
::
getInstance
();
if
(
scopeName
)
doxyName
.
prepend
((
QCString
)
scopeName
+
"::"
);
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
());
}
// get member name
QCString
doxyName
=
name
().
copy
();
// prepend scope if there is any. TODO: make this optional for C only docs
if
(
scopeName
)
doxyName
.
prepend
((
QCString
)
scopeName
+
"::"
);
QCString
ldef
=
definition
();
QCString
ldef
=
definition
();
//printf("member `%s' def=`%s'\n",name().data(),ldef.data());
//printf("member `%s' def=`%s'\n",name().data(),ldef.data());
if
(
isEnumerate
())
if
(
isEnumerate
())
{
if
(
name
().
at
(
0
)
==
'@'
)
{
{
if
(
name
().
at
(
0
)
==
'@'
)
ldef
=
"anonymous enum"
;
{
ldef
=
"anonymous enum"
;
}
else
{
ldef
.
prepend
(
"enum "
);
}
}
}
int
i
=
0
,
l
;
else
static
QRegExp
r
(
"@[0-9]+"
);
{
ldef
.
prepend
(
"enum "
);
}
}
int
i
=
0
,
l
;
static
QRegExp
r
(
"@[0-9]+"
);
if
(
isEnumValue
())
return
;
if
(
isEnumValue
())
return
;
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
bool
hasHtmlHelp
=
Config_getBool
(
"GENERATE_HTML"
)
&&
Config_getBool
(
"GENERATE_HTMLHELP"
);
bool
hasHtmlHelp
=
Config_getBool
(
"GENERATE_HTML"
)
&&
Config_getBool
(
"GENERATE_HTMLHELP"
);
HtmlHelp
*
htmlHelp
=
0
;
HtmlHelp
*
htmlHelp
=
0
;
if
(
hasHtmlHelp
)
htmlHelp
=
HtmlHelp
::
getInstance
();
if
(
hasHtmlHelp
)
htmlHelp
=
HtmlHelp
::
getInstance
();
if
((
isVariable
()
||
isTypedef
())
&&
(
i
=
r
.
match
(
ldef
,
0
,
&
l
))
!=-
1
)
if
((
isVariable
()
||
isTypedef
())
&&
(
i
=
r
.
match
(
ldef
,
0
,
&
l
))
!=-
1
)
{
// find enum type and insert it in the definition
MemberListIterator
vmli
(
*
ml
);
MemberDef
*
vmd
;
bool
found
=
FALSE
;
for
(
;
(
vmd
=
vmli
.
current
())
&&
!
found
;
++
vmli
)
{
{
// find enum type and insert it in the definition
if
(
vmd
->
isEnumerate
()
&&
ldef
.
mid
(
i
,
l
)
==
vmd
->
name
())
MemberListIterator
vmli
(
*
ml
);
MemberDef
*
vmd
;
bool
found
=
FALSE
;
for
(
;
(
vmd
=
vmli
.
current
())
&&
!
found
;
++
vmli
)
{
{
if
(
vmd
->
isEnumerate
()
&&
ldef
.
mid
(
i
,
l
)
==
vmd
->
name
())
{
ol
.
startDoxyAnchor
(
cfname
,
cname
,
anchor
(),
doxyName
);
ol
.
startMemberDoc
(
cname
,
name
(),
anchor
(),
name
());
if
(
hasHtmlHelp
)
{
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
());
}
linkifyText
(
TextGeneratorOLImpl
(
ol
),
container
,
getBodyDef
(),
name
(),
ldef
.
left
(
i
));
//ol+=*vmd->enumDecl();
vmd
->
writeEnumDeclaration
(
ol
,
getClassDef
(),
getNamespaceDef
(),
getFileDef
(),
getGroupDef
());
linkifyText
(
TextGeneratorOLImpl
(
ol
),
container
,
getBodyDef
(),
name
(),
ldef
.
right
(
ldef
.
length
()
-
i
-
l
));
found
=
TRUE
;
}
}
if
(
!
found
)
// anonymous compound
{
//printf("Anonymous compound `%s'\n",cname.data());
ol
.
startDoxyAnchor
(
cfname
,
cname
,
anchor
(),
doxyName
);
ol
.
startDoxyAnchor
(
cfname
,
cname
,
anchor
(),
doxyName
);
ol
.
startMemberDoc
(
cname
,
name
(),
anchor
(),
name
());
ol
.
startMemberDoc
(
cname
,
name
(),
anchor
(),
name
());
if
(
hasHtmlHelp
)
if
(
hasHtmlHelp
)
{
{
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
());
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
());
}
}
// strip anonymous compound names from definition
linkifyText
(
TextGeneratorOLImpl
(
ol
),
container
,
getBodyDef
(),
name
(),
ldef
.
left
(
i
));
int
si
=
ldef
.
find
(
' '
),
pi
,
ei
=
i
+
l
;
//ol+=*vmd->enumDecl();
if
(
si
==-
1
)
si
=
0
;
vmd
->
writeEnumDeclaration
(
ol
,
getClassDef
(),
getNamespaceDef
(),
getFileDef
(),
getGroupDef
());
while
((
pi
=
r
.
match
(
ldef
,
i
+
l
,
&
l
))
!=-
1
)
ei
=
i
=
pi
+
l
;
linkifyText
(
TextGeneratorOLImpl
(
ol
),
container
,
getBodyDef
(),
name
(),
ldef
.
right
(
ldef
.
length
()
-
i
-
l
));
// first si characters of ldef contain compound type name
ol
.
startMemberDocName
(
isObjCMethod
());
found
=
TRUE
;
ol
.
docify
(
ldef
.
left
(
si
));
ol
.
docify
(
" { ... } "
);
// last ei characters of ldef contain pointer/reference specifiers
int
ni
=
ldef
.
find
(
"::"
,
si
);
if
(
ni
>=
ei
)
ei
=
ni
+
2
;
linkifyText
(
TextGeneratorOLImpl
(
ol
),
container
,
getBodyDef
(),
name
(),
ldef
.
right
(
ldef
.
length
()
-
ei
));
}
}
}
}
else
// not an enum value
if
(
!
found
)
// anonymous compound
{
{
//printf("Anonymous compound `%s'\n",cname.data());
ol
.
startDoxyAnchor
(
cfname
,
cname
,
anchor
(),
doxyName
);
ol
.
startDoxyAnchor
(
cfname
,
cname
,
anchor
(),
doxyName
);
ol
.
startMemberDoc
(
cname
,
name
(),
anchor
(),
name
());
ol
.
startMemberDoc
(
cname
,
name
(),
anchor
(),
name
());
if
(
hasHtmlHelp
)
if
(
hasHtmlHelp
)
{
{
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
());
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
());
}
}
// strip anonymous compound names from definition
int
si
=
ldef
.
find
(
' '
),
pi
,
ei
=
i
+
l
;
if
(
si
==-
1
)
si
=
0
;
while
((
pi
=
r
.
match
(
ldef
,
i
+
l
,
&
l
))
!=-
1
)
ei
=
i
=
pi
+
l
;
// first si characters of ldef contain compound type name
ol
.
startMemberDocName
(
isObjCMethod
());
ol
.
docify
(
ldef
.
left
(
si
));
ol
.
docify
(
" { ... } "
);
// last ei characters of ldef contain pointer/reference specifiers
int
ni
=
ldef
.
find
(
"::"
,
si
);
if
(
ni
>=
ei
)
ei
=
ni
+
2
;
linkifyText
(
TextGeneratorOLImpl
(
ol
),
container
,
getBodyDef
(),
name
(),
ldef
.
right
(
ldef
.
length
()
-
ei
));
}
}
else
// not an enum value
{
ol
.
startDoxyAnchor
(
cfname
,
cname
,
anchor
(),
doxyName
);
ol
.
startMemberDoc
(
cname
,
name
(),
anchor
(),
name
());
if
(
hasHtmlHelp
)
{
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
());
}
ClassDef
*
cd
=
getClassDef
();
ClassDef
*
cd
=
getClassDef
();
if
(
!
Config_getBool
(
"HIDE_SCOPE_NAMES"
))
if
(
!
Config_getBool
(
"HIDE_SCOPE_NAMES"
))
{
bool
first
=
TRUE
;
if
(
m_defTmpArgLists
)
// definition has explicit template parameter declarations
{
QListIterator
<
ArgumentList
>
ali
(
*
m_defTmpArgLists
);
ArgumentList
*
tal
;
for
(
ali
.
toFirst
();(
tal
=
ali
.
current
());
++
ali
)
{
if
(
tal
->
count
()
>
0
)
{
if
(
!
first
)
ol
.
docify
(
" "
);
ol
.
startMemberDocPrefixItem
();
writeTemplatePrefix
(
ol
,
tal
);
ol
.
endMemberDocPrefixItem
();
}
}
}
else
// definition gets it template parameters from its class
// (since no definition was found)
{
{
bool
first
=
TRUE
;
if
(
cd
)
if
(
m_defTmpArgLists
)
// definition has explicit template parameter declarations
{
{
QListIterator
<
ArgumentList
>
ali
(
*
m_defTmpArgLists
);
QList
<
ArgumentList
>
tempParamLists
;
cd
->
getTemplateParameterLists
(
tempParamLists
);
//printf("#tempParamLists=%d\n",tempParamLists.count());
QListIterator
<
ArgumentList
>
ali
(
tempParamLists
);
ArgumentList
*
tal
;
ArgumentList
*
tal
;
for
(
ali
.
toFirst
();(
tal
=
ali
.
current
());
++
ali
)
for
(
ali
.
toFirst
();(
tal
=
ali
.
current
());
++
ali
)
{
{
...
@@ -1298,499 +1329,485 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
...
@@ -1298,499 +1329,485 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
}
}
}
}
}
}
else
// definition gets it template parameters from its class
if
(
tArgList
)
// function template prefix
// (since no definition was found)
{
{
if
(
cd
)
ol
.
startMemberDocPrefixItem
();
{
writeTemplatePrefix
(
ol
,
tArgList
);
QList
<
ArgumentList
>
tempParamLists
;
ol
.
endMemberDocPrefixItem
();
cd
->
getTemplateParameterLists
(
tempParamLists
);
//printf("#tempParamLists=%d\n",tempParamLists.count());
QListIterator
<
ArgumentList
>
ali
(
tempParamLists
);
ArgumentList
*
tal
;
for
(
ali
.
toFirst
();(
tal
=
ali
.
current
());
++
ali
)
{
if
(
tal
->
count
()
>
0
)
{
if
(
!
first
)
ol
.
docify
(
" "
);
ol
.
startMemberDocPrefixItem
();
writeTemplatePrefix
(
ol
,
tal
);
ol
.
endMemberDocPrefixItem
();
}
}
}
if
(
tArgList
)
// function template prefix
{
ol
.
startMemberDocPrefixItem
();
writeTemplatePrefix
(
ol
,
tArgList
);
ol
.
endMemberDocPrefixItem
();
}
}
}
}
}
ol
.
startMemberDocName
(
isObjCMethod
());
}
if
(
isObjCMethod
())
ol
.
startMemberDocName
(
isObjCMethod
());
if
(
cd
&&
cd
->
isObjectiveC
())
{
// strip scope name
int
ep
=
ldef
.
find
(
"::"
);
if
(
ep
!=-
1
)
{
{
// strip scope name
int
sp
=
ldef
.
findRev
(
' '
,
ep
);
int
ep
=
ldef
.
find
(
"::"
);
if
(
sp
!=-
1
)
if
(
ep
!=-
1
)
{
int
sp
=
ldef
.
findRev
(
' '
,
ep
);
if
(
sp
!=-
1
)
{
ldef
=
ldef
.
left
(
sp
+
1
)
+
ldef
.
mid
(
ep
+
2
);
}
}
// strip keywords
int
dp
=
ldef
.
find
(
':'
);
if
(
dp
!=-
1
)
{
ldef
=
ldef
.
left
(
dp
+
1
);
}
int
l
=
ldef
.
length
();
//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
--
;
if
(
i
>
0
)
{
{
// insert braches around the type
ldef
=
ldef
.
left
(
sp
+
1
)
+
ldef
.
mid
(
ep
+
2
);
QCString
tmp
(
"("
+
ldef
.
left
(
i
+
1
)
+
")"
+
ldef
.
mid
(
i
+
1
));
ldef
=
tmp
;
}
}
//printf("end >%s< i=%d\n",ldef.data(),i);
if
(
isStatic
())
ldef
.
prepend
(
"+ "
);
else
ldef
.
prepend
(
"- "
);
}
}
linkifyText
(
TextGeneratorOLImpl
(
ol
),
container
,
getBodyDef
(),
name
(),
ldef
);
// strip keywords
writeDefArgumentList
(
ol
,
cd
,
scopeName
,
this
);
int
dp
=
ldef
.
find
(
':'
);
if
(
hasOneLineInitializer
())
// add initializer
if
(
dp
!=-
1
)
{
{
if
(
!
isDefine
())
ldef
=
ldef
.
left
(
dp
+
1
);
{
ol
.
docify
(
" = "
);
linkifyText
(
TextGeneratorOLImpl
(
ol
),
container
,
getBodyDef
(),
name
(),
init
.
simplifyWhiteSpace
());
}
else
{
ol
.
writeNonBreakableSpace
(
3
);
linkifyText
(
TextGeneratorOLImpl
(
ol
),
container
,
getBodyDef
(),
name
(),
init
);
}
}
}
if
(
excpString
())
// add exception list
int
l
=
ldef
.
length
();
//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
((
uchar
)
ldef
.
at
(
i
)))
i
--
;
if
(
i
>
0
)
{
{
ol
.
docify
(
" "
);
// insert braches around the type
linkifyText
(
TextGeneratorOLImpl
(
ol
),
container
,
getBodyDef
(),
name
(),
excpString
());
QCString
tmp
(
"("
+
ldef
.
left
(
i
+
1
)
+
")"
+
ldef
.
mid
(
i
+
1
));
ldef
=
tmp
;
}
}
//printf("end >%s< i=%d\n",ldef.data(),i);
if
(
isStatic
())
ldef
.
prepend
(
"+ "
);
else
ldef
.
prepend
(
"- "
);
}
}
linkifyText
(
TextGeneratorOLImpl
(
ol
),
container
,
getBodyDef
(),
name
(),
ldef
);
Specifier
lvirt
=
virtualness
();
hasParameterList
=
writeDefArgumentList
(
ol
,
cd
,
scopeName
,
this
);
if
(
hasOneLineInitializer
())
// add initializer
if
(
!
isObjCMethod
()
&&
(
protection
()
!=
Public
||
lvirt
!=
Normal
||
isFriend
()
||
isRelated
()
||
isExplicit
()
||
isMutable
()
||
(
isInline
()
&&
Config_getBool
(
"INLINE_INFO"
))
||
isSignal
()
||
isSlot
()
||
isStatic
()
||
(
classDef
&&
classDef
!=
container
)
||
isSettable
()
||
isGettable
()
||
isReadable
()
||
isWritable
()
)
)
{
{
// write the member specifier list
if
(
!
isDefine
())
ol
.
writeLatexSpacing
();
ol
.
startTypewriter
();
ol
.
docify
(
" ["
);
QStrList
sl
;
if
(
isFriend
())
sl
.
append
(
"friend"
);
else
if
(
isRelated
())
sl
.
append
(
"related"
);
else
{
{
if
(
Config_getBool
(
"INLINE_INFO"
)
&&
isInline
())
ol
.
docify
(
" = "
);
sl
.
append
(
"inline"
);
linkifyText
(
TextGeneratorOLImpl
(
ol
),
container
,
getBodyDef
(),
name
(),
init
.
simplifyWhiteSpace
());
if
(
isExplicit
())
sl
.
append
(
"explicit"
);
if
(
isMutable
())
sl
.
append
(
"mutable"
);
if
(
isStatic
())
sl
.
append
(
"static"
);
if
(
isGettable
())
sl
.
append
(
"get"
);
if
(
isSettable
())
sl
.
append
(
"set"
);
if
(
isReadable
())
sl
.
append
(
"read"
);
if
(
isWritable
())
sl
.
append
(
"write"
);
if
(
protection
()
==
Protected
)
sl
.
append
(
"protected"
);
else
if
(
protection
()
==
Private
)
sl
.
append
(
"private"
);
else
if
(
protection
()
==
Package
)
sl
.
append
(
"package"
);
if
(
lvirt
==
Virtual
)
sl
.
append
(
"virtual"
);
else
if
(
lvirt
==
Pure
)
sl
.
append
(
"pure virtual"
);
if
(
isSignal
())
sl
.
append
(
"signal"
);
if
(
isSlot
())
sl
.
append
(
"slot"
);
}
}
if
(
classDef
&&
classDef
!=
container
)
sl
.
append
(
"inherited"
);
else
const
char
*
s
=
sl
.
first
();
while
(
s
)
{
{
ol
.
docify
(
s
);
ol
.
writeNonBreakableSpace
(
3
);
s
=
sl
.
next
();
linkifyText
(
TextGeneratorOLImpl
(
ol
),
container
,
getBodyDef
(),
name
(),
init
);
if
(
s
)
ol
.
docify
(
", "
);
}
}
ol
.
docify
(
"]"
);
ol
.
endTypewriter
();
}
}
else
if
(
isObjCMethod
()
&&
isImplementation
())
if
(
excpString
())
// add exception list
{
{
ol
.
writeLatexSpacing
();
ol
.
docify
(
" "
);
ol
.
startTypewriter
();
linkifyText
(
TextGeneratorOLImpl
(
ol
),
container
,
getBodyDef
(),
name
(),
excpString
());
ol
.
docify
(
" [implementation]"
);
ol
.
endTypewriter
();
}
}
if
(
!
isDefine
()
&&
defArgList
)
ol
.
endParameterList
();
}
ol
.
endMemberDoc
();
ol
.
endDoxyAnchor
(
cfname
,
anchor
());
ol
.
startIndent
();
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
RTF
);
ol
.
newParagraph
();
ol
.
popGeneratorState
();
/* write multi-line initializer (if any) */
Specifier
lvirt
=
virtualness
();
if
(
hasMultiLineInitializer
()
//initLines>0 && ((initLines<maxInitLines && userInitLines==-1) // implicitly enabled
if
(
!
isObjCMethod
()
&&
// || initLines<userInitLines // explicitly enabled
(
protection
()
!=
Public
||
lvirt
!=
Normal
||
// )
isFriend
()
||
isRelated
()
||
isExplicit
()
||
)
isMutable
()
||
(
isInline
()
&&
Config_getBool
(
"INLINE_INFO"
))
||
isSignal
()
||
isSlot
()
||
isStatic
()
||
(
classDef
&&
classDef
!=
container
)
||
isSettable
()
||
isGettable
()
||
isReadable
()
||
isWritable
()
)
)
{
// write the member specifier list
ol
.
writeLatexSpacing
();
ol
.
startTypewriter
();
ol
.
docify
(
" ["
);
QStrList
sl
;
if
(
isFriend
())
sl
.
append
(
"friend"
);
else
if
(
isRelated
())
sl
.
append
(
"related"
);
else
{
{
//printf("md=%s initLines=%d init=`%s'\n",name().data(),initLines,init.data());
if
(
Config_getBool
(
"INLINE_INFO"
)
&&
isInline
())
ol
.
startBold
();
sl
.
append
(
"inline"
);
if
(
mtype
==
Define
)
if
(
isExplicit
())
sl
.
append
(
"explicit"
);
ol
.
parseText
(
theTranslator
->
trDefineValue
());
if
(
isMutable
())
sl
.
append
(
"mutable"
);
else
if
(
isStatic
())
sl
.
append
(
"static"
);
ol
.
parseText
(
theTranslator
->
trInitialValue
());
if
(
isGettable
())
sl
.
append
(
"get"
);
ol
.
endBold
();
if
(
isSettable
())
sl
.
append
(
"set"
);
initParseCodeContext
();
if
(
isReadable
())
sl
.
append
(
"read"
);
ol
.
startCodeFragment
();
if
(
isWritable
())
sl
.
append
(
"write"
);
parseCode
(
ol
,
scopeName
,
init
,
FALSE
,
0
);
if
(
protection
()
==
Protected
)
sl
.
append
(
"protected"
);
ol
.
endCodeFragment
();
else
if
(
protection
()
==
Private
)
sl
.
append
(
"private"
);
else
if
(
protection
()
==
Package
)
sl
.
append
(
"package"
);
if
(
lvirt
==
Virtual
)
sl
.
append
(
"virtual"
);
else
if
(
lvirt
==
Pure
)
sl
.
append
(
"pure virtual"
);
if
(
isSignal
())
sl
.
append
(
"signal"
);
if
(
isSlot
())
sl
.
append
(
"slot"
);
}
}
if
(
classDef
&&
classDef
!=
container
)
sl
.
append
(
"inherited"
);
QCString
brief
=
m_templateMaster
?
const
char
*
s
=
sl
.
first
();
m_templateMaster
->
briefDescription
()
:
briefDescription
();
while
(
s
)
QCString
detailed
=
m_templateMaster
?
{
m_templateMaster
->
documentation
()
:
documentation
();
ol
.
docify
(
s
);
ArgumentList
*
docArgList
=
m_templateMaster
?
s
=
sl
.
next
();
m_templateMaster
->
defArgList
:
defArgList
;
if
(
s
)
ol
.
docify
(
", "
);
/* write brief description */
if
(
!
brief
.
isEmpty
()
&&
(
Config_getBool
(
"REPEAT_BRIEF"
)
||
!
Config_getBool
(
"BRIEF_MEMBER_DESC"
)
)
)
{
ol
.
parseDoc
(
briefFile
(),
briefLine
(),
getOuterScope
()
?
getOuterScope
()
:
container
,
this
,
brief
,
FALSE
,
FALSE
);
ol
.
newParagraph
();
}
}
ol
.
docify
(
"]"
);
ol
.
endTypewriter
();
}
else
if
(
isObjCMethod
()
&&
isImplementation
())
{
ol
.
writeLatexSpacing
();
ol
.
startTypewriter
();
ol
.
docify
(
" [implementation]"
);
ol
.
endTypewriter
();
}
if
(
hasParameterList
)
{
ol
.
endParameterList
();
ol
.
endMemberDoc
(
TRUE
);
}
else
{
ol
.
endMemberDocName
();
ol
.
endMemberDoc
(
FALSE
);
}
ol
.
endDoxyAnchor
(
cfname
,
anchor
());
ol
.
startIndent
();
/* write detailed description */
ol
.
pushGeneratorState
();
if
(
!
detailed
.
isEmpty
())
ol
.
disable
(
OutputGenerator
::
RTF
);
{
ol
.
newParagraph
();
ol
.
parseDoc
(
docFile
(),
docLine
(),
getOuterScope
()
?
getOuterScope
()
:
container
,
this
,
detailed
+
"
\n
"
,
TRUE
,
FALSE
);
ol
.
popGeneratorState
();
ol
.
pushGeneratorState
();
if
(
!
m_inbodyDocs
.
isEmpty
())
/* write multi-line initializer (if any) */
{
if
(
hasMultiLineInitializer
()
ol
.
newParagraph
();
//initLines>0 && ((initLines<maxInitLines && userInitLines==-1) // implicitly enabled
ol
.
parseDoc
(
inbodyFile
(),
inbodyLine
(),
getOuterScope
()
?
getOuterScope
()
:
container
,
this
,
m_inbodyDocs
+
"
\n
"
,
TRUE
,
FALSE
);
// || initLines<userInitLines // explicitly enabled
}
// )
ol
.
disableAllBut
(
OutputGenerator
::
RTF
);
)
{
//printf("md=%s initLines=%d init=`%s'\n",name().data(),initLines,init.data());
ol
.
startBold
();
if
(
mtype
==
Define
)
ol
.
parseText
(
theTranslator
->
trDefineValue
());
else
ol
.
parseText
(
theTranslator
->
trInitialValue
());
ol
.
endBold
();
initParseCodeContext
();
ol
.
startCodeFragment
();
parseCode
(
ol
,
scopeName
,
init
,
FALSE
,
0
);
ol
.
endCodeFragment
();
}
QCString
brief
=
m_templateMaster
?
m_templateMaster
->
briefDescription
()
:
briefDescription
();
QCString
detailed
=
m_templateMaster
?
m_templateMaster
->
documentation
()
:
documentation
();
ArgumentList
*
docArgList
=
m_templateMaster
?
m_templateMaster
->
defArgList
:
defArgList
;
/* write brief description */
if
(
!
brief
.
isEmpty
()
&&
(
Config_getBool
(
"REPEAT_BRIEF"
)
||
!
Config_getBool
(
"BRIEF_MEMBER_DESC"
)
)
)
{
ol
.
parseDoc
(
briefFile
(),
briefLine
(),
getOuterScope
()
?
getOuterScope
()
:
container
,
this
,
brief
,
FALSE
,
FALSE
);
ol
.
newParagraph
();
}
/* write detailed description */
if
(
!
detailed
.
isEmpty
())
{
ol
.
parseDoc
(
docFile
(),
docLine
(),
getOuterScope
()
?
getOuterScope
()
:
container
,
this
,
detailed
+
"
\n
"
,
TRUE
,
FALSE
);
ol
.
pushGeneratorState
();
if
(
!
m_inbodyDocs
.
isEmpty
())
{
ol
.
newParagraph
();
ol
.
newParagraph
();
ol
.
p
opGeneratorState
(
);
ol
.
p
arseDoc
(
inbodyFile
(),
inbodyLine
(),
getOuterScope
()
?
getOuterScope
()
:
container
,
this
,
m_inbodyDocs
+
"
\n
"
,
TRUE
,
FALSE
);
}
}
else
if
(
!
brief
.
isEmpty
()
&&
(
Config_getBool
(
"REPEAT_BRIEF"
)
||
ol
.
disableAllBut
(
OutputGenerator
::
RTF
);
!
Config_getBool
(
"BRIEF_MEMBER_DESC"
)))
ol
.
newParagraph
();
ol
.
popGeneratorState
();
}
else
if
(
!
brief
.
isEmpty
()
&&
(
Config_getBool
(
"REPEAT_BRIEF"
)
||
!
Config_getBool
(
"BRIEF_MEMBER_DESC"
)))
{
if
(
!
m_inbodyDocs
.
isEmpty
())
{
{
if
(
!
m_inbodyDocs
.
isEmpty
())
{
ol
.
newParagraph
();
ol
.
parseDoc
(
inbodyFile
(),
inbodyLine
(),
getOuterScope
()
?
getOuterScope
()
:
container
,
this
,
m_inbodyDocs
+
"
\n
"
,
TRUE
,
FALSE
);
}
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
RTF
);
ol
.
newParagraph
();
ol
.
newParagraph
();
ol
.
p
opGeneratorState
(
);
ol
.
p
arseDoc
(
inbodyFile
(),
inbodyLine
(),
getOuterScope
()
?
getOuterScope
()
:
container
,
this
,
m_inbodyDocs
+
"
\n
"
,
TRUE
,
FALSE
);
}
}
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
RTF
);
ol
.
newParagraph
();
ol
.
popGeneratorState
();
}
//printf("***** defArgList=%p name=%s docs=%s hasDocs=%d\n",
//printf("***** defArgList=%p name=%s docs=%s hasDocs=%d\n",
// defArgList,
// defArgList,
// defArgList?defArgList->hasDocumentation():-1);
// defArgList?defArgList->hasDocumentation():-1);
if
(
docArgList
&&
docArgList
->
hasDocumentation
())
if
(
docArgList
&&
docArgList
->
hasDocumentation
())
{
//printf("***** argumentList is documented\n");
ol
.
startParamList
(
BaseOutputDocInterface
::
Param
,
theTranslator
->
trParameters
()
+
": "
);
ol
.
writeDescItem
();
ol
.
startDescTable
();
ArgumentListIterator
ali
(
*
docArgList
);
Argument
*
a
;
for
(
ali
.
toFirst
();(
a
=
ali
.
current
());
++
ali
)
{
{
//printf("***** argumentList is documented\n");
if
(
a
->
hasDocumentation
())
ol
.
startParamList
(
BaseOutputDocInterface
::
Param
,
theTranslator
->
trParameters
()
+
": "
);
ol
.
writeDescItem
();
ol
.
startDescTable
();
ArgumentListIterator
ali
(
*
docArgList
);
Argument
*
a
;
for
(
ali
.
toFirst
();(
a
=
ali
.
current
());
++
ali
)
{
{
if
(
a
->
hasDocumentation
())
ol
.
startDescTableTitle
();
{
ol
.
docify
(
a
->
name
);
ol
.
startDescTableTitle
();
ol
.
endDescTableTitle
();
ol
.
docify
(
a
->
name
);
ol
.
startDescTableData
();
ol
.
endDescTableTitle
();
ol
.
parseDoc
(
docFile
(),
docLine
(),
getOuterScope
()
?
getOuterScope
()
:
container
,
this
,
a
->
docs
+
"
\n
"
,
TRUE
,
FALSE
);
ol
.
startDescTableData
();
ol
.
endDescTableData
();
ol
.
parseDoc
(
docFile
(),
docLine
(),
getOuterScope
()
?
getOuterScope
()
:
container
,
this
,
a
->
docs
+
"
\n
"
,
TRUE
,
FALSE
);
ol
.
endDescTableData
();
}
}
}
ol
.
endDescTable
();
ol
.
endParamList
();
}
}
ol
.
endDescTable
();
if
(
isEnumerate
())
ol
.
endParamList
();
}
if
(
isEnumerate
())
{
bool
first
=
TRUE
;
MemberList
*
fmdl
=
enumFieldList
();
if
(
fmdl
)
{
{
bool
first
=
TRUE
;
MemberDef
*
fmd
=
fmdl
->
first
();
MemberList
*
fmdl
=
enumFieldList
();
while
(
fmd
)
if
(
fmdl
)
{
{
MemberDef
*
fmd
=
fmdl
->
first
();
if
(
fmd
->
isLinkable
())
while
(
fmd
)
{
{
if
(
f
md
->
isLinkable
()
)
if
(
f
irst
)
{
{
if
(
first
)
{
//ol.newParagraph();
ol
.
startSimpleSect
(
BaseOutputDocInterface
::
EnumValues
,
0
,
0
,
theTranslator
->
trEnumerationValues
()
+
": "
);
ol
.
writeDescItem
();
ol
.
startDescTable
();
}
ol
.
addIndexItem
(
fmd
->
name
(),
cname
);
ol
.
addIndexItem
(
cname
,
fmd
->
name
());
if
(
Config_getBool
(
"GENERATE_HTML"
)
&&
Config_getBool
(
"GENERATE_HTMLHELP"
))
{
HtmlHelp
::
getInstance
()
->
addIndexItem
(
cname
,
fmd
->
name
(),
cfname
,
fmd
->
anchor
());
}
//ol.writeListItem();
ol
.
startDescTableTitle
();
// this enables emphasis!
ol
.
startDoxyAnchor
(
cfname
,
cname
,
fmd
->
anchor
(),
fmd
->
name
());
first
=
FALSE
;
//ol.startEmphasis();
ol
.
docify
(
fmd
->
name
());
//ol.endEmphasis();
ol
.
disableAllBut
(
OutputGenerator
::
Man
);
ol
.
writeString
(
" "
);
ol
.
enableAll
();
ol
.
endDoxyAnchor
(
cfname
,
fmd
->
anchor
());
ol
.
endDescTableTitle
();
//ol.newParagraph();
//ol.newParagraph();
ol
.
startDescTableData
();
ol
.
startSimpleSect
(
BaseOutputDocInterface
::
EnumValues
,
0
,
0
,
theTranslator
->
trEnumerationValues
()
+
": "
);
ol
.
writeDescItem
();
if
(
!
fmd
->
briefDescription
().
isEmpty
())
ol
.
startDescTable
();
{
ol
.
parseDoc
(
fmd
->
briefFile
(),
fmd
->
briefLine
(),
getOuterScope
()
?
getOuterScope
()
:
container
,
fmd
,
fmd
->
briefDescription
(),
TRUE
,
FALSE
);
//ol.newParagraph();
}
if
(
!
fmd
->
briefDescription
().
isEmpty
()
&&
!
fmd
->
documentation
().
isEmpty
())
{
ol
.
newParagraph
();
}
if
(
!
fmd
->
documentation
().
isEmpty
())
{
ol
.
parseDoc
(
fmd
->
docFile
(),
fmd
->
docLine
(),
getOuterScope
()
?
getOuterScope
()
:
container
,
fmd
,
fmd
->
documentation
()
+
"
\n
"
,
TRUE
,
FALSE
);
}
ol
.
endDescTableData
();
}
}
fmd
=
fmdl
->
next
();
}
}
if
(
!
first
)
{
//ol.endItemList();
ol
.
endDescTable
();
ol
.
endSimpleSect
();
ol
.
writeChar
(
'\n'
);
}
}
MemberDef
*
bmd
=
reimplements
();
ol
.
addIndexItem
(
fmd
->
name
(),
cname
);
ClassDef
*
bcd
=
0
;
ol
.
addIndexItem
(
cname
,
fmd
->
name
());
if
(
bmd
&&
(
bcd
=
bmd
->
getClassDef
()))
{
// write class that contains a member that is reimplemented by this one
if
(
bcd
->
isLinkable
())
{
ol
.
disable
(
OutputGenerator
::
RTF
);
ol
.
newParagraph
();
ol
.
enableAll
();
QCString
reimplFromLine
;
if
(
Config_getBool
(
"GENERATE_HTML"
)
&&
Config_getBool
(
"GENERATE_HTMLHELP"
))
if
(
bmd
->
virtualness
()
!=
Pure
&&
bcd
->
compoundType
()
!=
ClassDef
::
Interface
)
{
reimplFromLine
=
theTranslator
->
trReimplementedFromList
(
1
);
}
else
{
reimplFromLine
=
theTranslator
->
trImplementedFromList
(
1
);
}
int
markerPos
=
reimplFromLine
.
find
(
"@0"
);
if
(
markerPos
!=-
1
)
// should always pass this.
{
ol
.
parseText
(
reimplFromLine
.
left
(
markerPos
));
//text left from marker
if
(
bmd
->
isLinkable
())
// replace marker with link
{
{
//Definition *bd=bmd->group;
HtmlHelp
::
getInstance
()
->
addIndexItem
(
cname
,
fmd
->
name
(),
cfname
,
fmd
->
anchor
());
//if (bd==0) bd=bcd;
ol
.
writeObjectLink
(
bmd
->
getReference
(),
bmd
->
getOutputFileBase
(),
bmd
->
anchor
(),
bcd
->
displayName
());
//ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(),
// bmd->anchor(),bcd->name());
if
(
bmd
->
isLinkableInProject
()
)
{
writePageRef
(
ol
,
bmd
->
getOutputFileBase
(),
bmd
->
anchor
());
}
}
}
else
//ol.writeListItem();
ol
.
startDescTableTitle
();
// this enables emphasis!
ol
.
startDoxyAnchor
(
cfname
,
cname
,
fmd
->
anchor
(),
fmd
->
name
());
first
=
FALSE
;
//ol.startEmphasis();
ol
.
docify
(
fmd
->
name
());
//ol.endEmphasis();
ol
.
disableAllBut
(
OutputGenerator
::
Man
);
ol
.
writeString
(
" "
);
ol
.
enableAll
();
ol
.
endDoxyAnchor
(
cfname
,
fmd
->
anchor
());
ol
.
endDescTableTitle
();
//ol.newParagraph();
ol
.
startDescTableData
();
if
(
!
fmd
->
briefDescription
().
isEmpty
())
{
ol
.
parseDoc
(
fmd
->
briefFile
(),
fmd
->
briefLine
(),
getOuterScope
()
?
getOuterScope
()
:
container
,
fmd
,
fmd
->
briefDescription
(),
TRUE
,
FALSE
);
//ol.newParagraph();
}
if
(
!
fmd
->
briefDescription
().
isEmpty
()
&&
!
fmd
->
documentation
().
isEmpty
())
{
{
ol
.
writeObjectLink
(
bcd
->
getReference
(),
bcd
->
getOutputFileBase
(),
ol
.
newParagraph
();
0
,
bcd
->
displayName
());
if
(
bcd
->
isLinkableInProject
()
/* && !Config_getBool("PDF_HYPERLINKS")*/
)
{
writePageRef
(
ol
,
bcd
->
getOutputFileBase
(),
0
);
}
}
}
ol
.
parseText
(
reimplFromLine
.
right
(
if
(
!
fmd
->
documentation
().
isEmpty
())
reimplFromLine
.
length
()
-
markerPos
-
2
));
// text right from marker
{
ol
.
parseDoc
(
fmd
->
docFile
(),
fmd
->
docLine
(),
getOuterScope
()
?
getOuterScope
()
:
container
,
fmd
,
fmd
->
documentation
()
+
"
\n
"
,
TRUE
,
FALSE
);
ol
.
disableAllBut
(
OutputGenerator
::
RTF
);
}
ol
.
newParagraph
();
ol
.
endDescTableData
();
ol
.
enableAll
();
}
else
{
err
(
"Error: translation error: no marker in trReimplementsFromList()
\n
"
);
}
}
fmd
=
fmdl
->
next
();
}
}
//ol.writeString(".");
}
}
if
(
!
first
)
{
//ol.endItemList();
ol
.
endDescTable
();
ol
.
endSimpleSect
();
ol
.
writeChar
(
'\n'
);
}
}
MemberList
*
bml
=
reimplementedBy
();
MemberDef
*
bmd
=
reimplements
();
if
(
bml
)
ClassDef
*
bcd
=
0
;
if
(
bmd
&&
(
bcd
=
bmd
->
getClassDef
()))
{
// write class that contains a member that is reimplemented by this one
if
(
bcd
->
isLinkable
())
{
{
MemberListIterator
mli
(
*
bml
);
ol
.
disable
(
OutputGenerator
::
RTF
);
MemberDef
*
bmd
=
0
;
ol
.
newParagraph
();
uint
count
=
0
;
ol
.
enableAll
();
ClassDef
*
bcd
=
0
;
for
(
mli
.
toFirst
();(
bmd
=
mli
.
current
())
&&
(
bcd
=
bmd
->
getClassDef
());
++
mli
)
QCString
reimplFromLine
;
if
(
bmd
->
virtualness
()
!=
Pure
&&
bcd
->
compoundType
()
!=
ClassDef
::
Interface
)
{
{
// count the members that directly inherit from md and for
reimplFromLine
=
theTranslator
->
trReimplementedFromList
(
1
);
// which the member and class are visible in the docs.
if
(
bmd
->
isLinkable
()
&&
bcd
->
isLinkable
()
)
{
count
++
;
}
}
}
if
(
count
>
0
)
else
{
{
mli
.
toFirst
();
reimplFromLine
=
theTranslator
->
trImplementedFromList
(
1
);
// write the list of classes that overwrite this member
}
ol
.
disable
(
OutputGenerator
::
RTF
);
int
markerPos
=
reimplFromLine
.
find
(
"@0"
);
ol
.
newParagraph
();
if
(
markerPos
!=-
1
)
// should always pass this.
ol
.
enableAll
();
{
ol
.
parseText
(
reimplFromLine
.
left
(
markerPos
));
//text left from marker
QCString
reimplInLine
;
if
(
bmd
->
isLinkable
())
// replace marker with link
if
(
virt
==
Pure
||
(
classDef
&&
classDef
->
compoundType
()
==
ClassDef
::
Interface
))
{
{
reimplInLine
=
theTranslator
->
trImplementedInList
(
count
);
//Definition *bd=bmd->group;
//if (bd==0) bd=bcd;
ol
.
writeObjectLink
(
bmd
->
getReference
(),
bmd
->
getOutputFileBase
(),
bmd
->
anchor
(),
bcd
->
displayName
());
//ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(),
// bmd->anchor(),bcd->name());
if
(
bmd
->
isLinkableInProject
()
)
{
writePageRef
(
ol
,
bmd
->
getOutputFileBase
(),
bmd
->
anchor
());
}
}
}
else
else
{
{
reimplInLine
=
theTranslator
->
trReimplementedInList
(
count
);
ol
.
writeObjectLink
(
bcd
->
getReference
(),
bcd
->
getOutputFileBase
(),
}
0
,
bcd
->
displayName
());
static
QRegExp
marker
(
"@[0-9]+"
);
if
(
bcd
->
isLinkableInProject
()
/* && !Config_getBool("PDF_HYPERLINKS")*/
)
int
index
=
0
,
newIndex
,
matchLen
;
// now replace all markers in reimplInLine with links to the classes
while
((
newIndex
=
marker
.
match
(
reimplInLine
,
index
,
&
matchLen
))
!=-
1
)
{
ol
.
parseText
(
reimplInLine
.
mid
(
index
,
newIndex
-
index
));
bool
ok
;
uint
entryIndex
=
reimplInLine
.
mid
(
newIndex
+
1
,
matchLen
-
1
).
toUInt
(
&
ok
);
//bmd=bml->at(entryIndex);
count
=
0
;
// find the entryIndex-th documented entry in the inheritance list.
for
(
mli
.
toLast
();(
bmd
=
mli
.
current
())
&&
(
bcd
=
bmd
->
getClassDef
());
--
mli
)
{
{
if
(
bmd
->
isLinkable
()
&&
bcd
->
isLinkable
())
writePageRef
(
ol
,
bcd
->
getOutputFileBase
(),
0
);
{
if
(
count
==
entryIndex
)
break
;
count
++
;
}
}
}
}
ol
.
parseText
(
reimplFromLine
.
right
(
reimplFromLine
.
length
()
-
markerPos
-
2
));
// text right from marker
if
(
ok
&&
bcd
&&
bmd
)
// write link for marker
{
//ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(),
// bmd->anchor(),bcd->name());
ol
.
writeObjectLink
(
bmd
->
getReference
(),
bmd
->
getOutputFileBase
(),
bmd
->
anchor
(),
bcd
->
displayName
());
if
(
bmd
->
isLinkableInProject
()
)
{
writePageRef
(
ol
,
bmd
->
getOutputFileBase
(),
bmd
->
anchor
());
}
}
++
mli
;
index
=
newIndex
+
matchLen
;
}
ol
.
parseText
(
reimplInLine
.
right
(
reimplInLine
.
length
()
-
index
));
ol
.
disableAllBut
(
OutputGenerator
::
RTF
);
ol
.
disableAllBut
(
OutputGenerator
::
RTF
);
ol
.
newParagraph
();
ol
.
newParagraph
();
ol
.
enableAll
();
ol
.
enableAll
();
}
}
else
{
err
(
"Error: translation error: no marker in trReimplementsFromList()
\n
"
);
}
}
}
// write the list of examples that use this member
if
(
hasExamples
())
//ol.writeString(".");
}
MemberList
*
bml
=
reimplementedBy
();
if
(
bml
)
{
MemberListIterator
mli
(
*
bml
);
MemberDef
*
bmd
=
0
;
uint
count
=
0
;
ClassDef
*
bcd
=
0
;
for
(
mli
.
toFirst
();(
bmd
=
mli
.
current
())
&&
(
bcd
=
bmd
->
getClassDef
());
++
mli
)
{
{
ol
.
startSimpleSect
(
BaseOutputDocInterface
::
Examples
,
0
,
0
,
theTranslator
->
trExamples
()
+
": "
);
// count the members that directly inherit from md and for
ol
.
writeDescItem
();
// which the member and class are visible in the docs.
writeExample
(
ol
,
getExamples
());
if
(
bmd
->
isLinkable
()
&&
bcd
->
isLinkable
()
)
//ol.endDescItem();
{
ol
.
endSimpleSect
();
count
++
;
}
}
}
// write reference to the source
if
(
count
>
0
)
writeSourceDef
(
ol
,
cname
);
{
writeSourceRefs
(
ol
,
cname
);
mli
.
toFirst
();
writeSourceReffedBy
(
ol
,
cname
);
// write the list of classes that overwrite this member
writeInlineCode
(
ol
,
cname
);
ol
.
disable
(
OutputGenerator
::
RTF
);
ol
.
newParagraph
();
ol
.
enableAll
();
ol
.
disableAllBut
(
OutputGenerator
::
RTF
);
QCString
reimplInLine
;
ol
.
newParagraph
();
if
(
virt
==
Pure
||
(
classDef
&&
classDef
->
compoundType
()
==
ClassDef
::
Interface
))
ol
.
enableAll
();
{
reimplInLine
=
theTranslator
->
trImplementedInList
(
count
);
}
else
{
reimplInLine
=
theTranslator
->
trReimplementedInList
(
count
);
}
static
QRegExp
marker
(
"@[0-9]+"
);
int
index
=
0
,
newIndex
,
matchLen
;
// now replace all markers in reimplInLine with links to the classes
while
((
newIndex
=
marker
.
match
(
reimplInLine
,
index
,
&
matchLen
))
!=-
1
)
{
ol
.
parseText
(
reimplInLine
.
mid
(
index
,
newIndex
-
index
));
bool
ok
;
uint
entryIndex
=
reimplInLine
.
mid
(
newIndex
+
1
,
matchLen
-
1
).
toUInt
(
&
ok
);
//bmd=bml->at(entryIndex);
count
=
0
;
// find the entryIndex-th documented entry in the inheritance list.
for
(
mli
.
toLast
();(
bmd
=
mli
.
current
())
&&
(
bcd
=
bmd
->
getClassDef
());
--
mli
)
{
if
(
bmd
->
isLinkable
()
&&
bcd
->
isLinkable
())
{
if
(
count
==
entryIndex
)
break
;
count
++
;
}
}
ol
.
endIndent
();
if
(
ok
&&
bcd
&&
bmd
)
// write link for marker
// enable LaTeX again
{
//if (Config_getBool("EXTRACT_ALL") && !hasDocs) ol.enable(OutputGenerator::Latex);
//ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(),
ol
.
popGeneratorState
();
// bmd->anchor(),bcd->name());
ol
.
writeObjectLink
(
bmd
->
getReference
(),
bmd
->
getOutputFileBase
(),
bmd
->
anchor
(),
bcd
->
displayName
());
if
(
bmd
->
isLinkableInProject
()
)
{
writePageRef
(
ol
,
bmd
->
getOutputFileBase
(),
bmd
->
anchor
());
}
}
++
mli
;
index
=
newIndex
+
matchLen
;
}
ol
.
parseText
(
reimplInLine
.
right
(
reimplInLine
.
length
()
-
index
));
ol
.
disableAllBut
(
OutputGenerator
::
RTF
);
ol
.
newParagraph
();
ol
.
enableAll
();
}
}
// write the list of examples that use this member
if
(
hasExamples
())
{
ol
.
startSimpleSect
(
BaseOutputDocInterface
::
Examples
,
0
,
0
,
theTranslator
->
trExamples
()
+
": "
);
ol
.
writeDescItem
();
writeExample
(
ol
,
getExamples
());
//ol.endDescItem();
ol
.
endSimpleSect
();
}
// write reference to the source
writeSourceDef
(
ol
,
cname
);
writeSourceRefs
(
ol
,
cname
);
writeSourceReffedBy
(
ol
,
cname
);
writeInlineCode
(
ol
,
cname
);
if
((
m_hasCallGraph
||
Config_getBool
(
"CALL_GRAPH"
))
ol
.
disableAllBut
(
OutputGenerator
::
RTF
);
&&
isFunction
()
&&
Config_getBool
(
"HAVE_DOT"
)
ol
.
newParagraph
();
)
ol
.
enableAll
();
if
((
m_hasCallGraph
||
Config_getBool
(
"CALL_GRAPH"
))
&&
isFunction
()
&&
Config_getBool
(
"HAVE_DOT"
)
)
{
DotCallGraph
callGraph
(
this
,
Config_getInt
(
"MAX_DOT_GRAPH_DEPTH"
));
if
(
!
callGraph
.
isTrivial
())
{
{
DotCallGraph
callGraph
(
this
,
Config_getInt
(
"MAX_DOT_GRAPH_DEPTH"
));
msg
(
"Generating call graph for function %s
\n
"
,
qualifiedName
().
data
());
if
(
!
callGraph
.
isTrivial
())
ol
.
disable
(
OutputGenerator
::
Man
);
{
ol
.
newParagraph
();
msg
(
"Generating call graph for function %s
\n
"
,
qualifiedName
().
data
());
ol
.
startCallGraph
();
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
parseText
(
theTranslator
->
trCallGraph
());
ol
.
newParagraph
();
ol
.
endCallGraph
(
callGraph
);
ol
.
startCallGraph
();
ol
.
enableAll
();
ol
.
parseText
(
theTranslator
->
trCallGraph
());
ol
.
endCallGraph
(
callGraph
);
ol
.
enableAll
();
}
}
}
}
}
ol
.
endIndent
();
// enable LaTeX again
//if (Config_getBool("EXTRACT_ALL") && !hasDocs) ol.enable(OutputGenerator::Latex);
ol
.
popGeneratorState
();
}
}
void
MemberDef
::
warnIfUndocumented
()
void
MemberDef
::
warnIfUndocumented
()
...
@@ -1969,7 +1986,7 @@ void MemberDef::setInitializer(const char *initializer)
...
@@ -1969,7 +1986,7 @@ void MemberDef::setInitializer(const char *initializer)
{
{
init
=
initializer
;
init
=
initializer
;
int
p
=
init
.
length
()
-
1
;
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
);
init
=
init
.
left
(
p
+
1
);
initLines
=
init
.
contains
(
'\n'
);
initLines
=
init
.
contains
(
'\n'
);
}
}
...
@@ -2209,4 +2226,21 @@ bool MemberDef::isObjCMethod() const
...
@@ -2209,4 +2226,21 @@ bool MemberDef::isObjCMethod() const
return
FALSE
;
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 @
cba24284
...
@@ -99,6 +99,7 @@ class MemberDef : public Definition
...
@@ -99,6 +99,7 @@ class MemberDef : public Definition
const
char
*
getGroupFileName
()
const
{
return
groupFileName
;
}
const
char
*
getGroupFileName
()
const
{
return
groupFileName
;
}
int
getGroupStartLine
()
const
{
return
groupStartLine
;
}
int
getGroupStartLine
()
const
{
return
groupStartLine
;
}
bool
getGroupHasDocs
()
const
{
return
groupHasDocs
;
}
bool
getGroupHasDocs
()
const
{
return
groupHasDocs
;
}
QCString
qualifiedName
()
const
;
// direct kind info
// direct kind info
Protection
protection
()
const
{
return
prot
;
}
Protection
protection
()
const
{
return
prot
;
}
...
...
src/outputgen.h
View file @
cba24284
...
@@ -316,7 +316,7 @@ class OutputGenerator : public BaseOutputDocInterface
...
@@ -316,7 +316,7 @@ class OutputGenerator : public BaseOutputDocInterface
virtual
void
insertMemberAlign
()
=
0
;
virtual
void
insertMemberAlign
()
=
0
;
virtual
void
startMemberDoc
(
const
char
*
,
const
char
*
,
virtual
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
=
0
;
const
char
*
,
const
char
*
)
=
0
;
virtual
void
endMemberDoc
()
=
0
;
virtual
void
endMemberDoc
(
bool
)
=
0
;
virtual
void
startDoxyAnchor
(
const
char
*
fName
,
const
char
*
manName
,
virtual
void
startDoxyAnchor
(
const
char
*
fName
,
const
char
*
manName
,
const
char
*
anchor
,
const
char
*
name
)
=
0
;
const
char
*
anchor
,
const
char
*
name
)
=
0
;
virtual
void
endDoxyAnchor
(
const
char
*
fileName
,
const
char
*
anchor
)
=
0
;
virtual
void
endDoxyAnchor
(
const
char
*
fileName
,
const
char
*
anchor
)
=
0
;
...
...
src/outputlist.h
View file @
cba24284
...
@@ -207,8 +207,8 @@ class OutputList : public OutputDocInterface
...
@@ -207,8 +207,8 @@ class OutputList : public OutputDocInterface
void
startMemberDoc
(
const
char
*
clName
,
const
char
*
memName
,
void
startMemberDoc
(
const
char
*
clName
,
const
char
*
memName
,
const
char
*
anchor
,
const
char
*
title
)
const
char
*
anchor
,
const
char
*
title
)
{
forall
(
&
OutputGenerator
::
startMemberDoc
,
clName
,
memName
,
anchor
,
title
);
}
{
forall
(
&
OutputGenerator
::
startMemberDoc
,
clName
,
memName
,
anchor
,
title
);
}
void
endMemberDoc
()
void
endMemberDoc
(
bool
hasArgs
)
{
forall
(
&
OutputGenerator
::
endMemberDoc
);
}
{
forall
(
&
OutputGenerator
::
endMemberDoc
,
hasArgs
);
}
void
startDoxyAnchor
(
const
char
*
fName
,
const
char
*
manName
,
void
startDoxyAnchor
(
const
char
*
fName
,
const
char
*
manName
,
const
char
*
anchor
,
const
char
*
name
)
const
char
*
anchor
,
const
char
*
name
)
{
forall
(
&
OutputGenerator
::
startDoxyAnchor
,
fName
,
manName
,
anchor
,
name
);
}
{
forall
(
&
OutputGenerator
::
startDoxyAnchor
,
fName
,
manName
,
anchor
,
name
);
}
...
...
src/rtfgen.cpp
View file @
cba24284
...
@@ -190,6 +190,8 @@ void RTFGenerator::init()
...
@@ -190,6 +190,8 @@ void RTFGenerator::init()
{
{
loadExtensions
(
rtfExtensionsFile
);
loadExtensions
(
rtfExtensionsFile
);
}
}
createSubDirs
(
d
);
}
}
static
QCString
makeIndexName
(
const
char
*
s
,
int
i
)
static
QCString
makeIndexName
(
const
char
*
s
,
int
i
)
...
@@ -322,6 +324,7 @@ void RTFGenerator::beginRTFSection()
...
@@ -322,6 +324,7 @@ void RTFGenerator::beginRTFSection()
void
RTFGenerator
::
startFile
(
const
char
*
name
,
const
char
*
,
const
char
*
)
void
RTFGenerator
::
startFile
(
const
char
*
name
,
const
char
*
,
const
char
*
)
{
{
QCString
fileName
=
name
;
QCString
fileName
=
name
;
relPath
=
relativePathToRoot
(
fileName
);
if
(
fileName
.
right
(
4
)
!=
".rtf"
)
fileName
+=
".rtf"
;
if
(
fileName
.
right
(
4
)
!=
".rtf"
)
fileName
+=
".rtf"
;
startPlainFile
(
fileName
);
startPlainFile
(
fileName
);
...
@@ -1357,7 +1360,7 @@ void RTFGenerator::startMemberDoc(const char *clname,
...
@@ -1357,7 +1360,7 @@ void RTFGenerator::startMemberDoc(const char *clname,
t
<<
endl
;
t
<<
endl
;
}
}
void
RTFGenerator
::
endMemberDoc
()
void
RTFGenerator
::
endMemberDoc
(
bool
)
{
{
DBG_RTF
(
t
<<
"{
\\
comment endMemberDoc}"
<<
endl
)
DBG_RTF
(
t
<<
"{
\\
comment endMemberDoc}"
<<
endl
)
t
<<
"}"
<<
endl
;
t
<<
"}"
<<
endl
;
...
@@ -2188,7 +2191,7 @@ void RTFGenerator::endDotGraph(DotClassGraph &g)
...
@@ -2188,7 +2191,7 @@ void RTFGenerator::endDotGraph(DotClassGraph &g)
newParagraph
();
newParagraph
();
QCString
fileName
=
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
// display the file
t
<<
"{"
<<
endl
;
t
<<
"{"
<<
endl
;
...
@@ -2210,7 +2213,8 @@ void RTFGenerator::endInclDepGraph(DotInclDepGraph &g)
...
@@ -2210,7 +2213,8 @@ void RTFGenerator::endInclDepGraph(DotInclDepGraph &g)
{
{
newParagraph
();
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
// display the file
t
<<
"{"
<<
endl
;
t
<<
"{"
<<
endl
;
...
@@ -2231,7 +2235,8 @@ void RTFGenerator::endCallGraph(DotCallGraph &g)
...
@@ -2231,7 +2235,8 @@ void RTFGenerator::endCallGraph(DotCallGraph &g)
{
{
newParagraph
();
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
// display the file
t
<<
"{"
<<
endl
;
t
<<
"{"
<<
endl
;
...
...
src/rtfgen.h
View file @
cba24284
...
@@ -134,7 +134,7 @@ class RTFGenerator : public OutputGenerator
...
@@ -134,7 +134,7 @@ class RTFGenerator : public OutputGenerator
void
endDescItem
();
void
endDescItem
();
void
lineBreak
();
void
lineBreak
();
void
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
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
startDoxyAnchor
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
);
void
endDoxyAnchor
(
const
char
*
,
const
char
*
);
void
endDoxyAnchor
(
const
char
*
,
const
char
*
);
void
startCodeAnchor
(
const
char
*
)
{};
void
startCodeAnchor
(
const
char
*
)
{};
...
@@ -282,6 +282,7 @@ class RTFGenerator : public OutputGenerator
...
@@ -282,6 +282,7 @@ class RTFGenerator : public OutputGenerator
int
m_listLevel
;
// // RTF does not really have a addative indent...manually set list level.
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?
bool
m_omitParagraph
;
// should a the next paragraph command be ignored?
int
m_numCols
;
// number of columns in a table
int
m_numCols
;
// number of columns in a table
QCString
relPath
;
void
beginRTFDocument
();
void
beginRTFDocument
();
void
beginRTFChapter
();
void
beginRTFChapter
();
...
...
src/scanner.l
View file @
cba24284
...
@@ -516,7 +516,7 @@ static void splitKnRArg(QCString &oldStyleArgPtr,QCString &oldStyleArgName)
...
@@ -516,7 +516,7 @@ static void splitKnRArg(QCString &oldStyleArgPtr,QCString &oldStyleArgName)
int s=bi2+1;
int s=bi2+1;
oldStyleArgType = current->args.left(s);
oldStyleArgType = current->args.left(s);
int i=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);
oldStyleArgType += current->args.mid(s,i-s);
s=i;
s=i;
while (i<si && isId(current->args.at(i))) i++;
while (i<si && isId(current->args.at(i))) i++;
...
@@ -529,7 +529,7 @@ static void splitKnRArg(QCString &oldStyleArgPtr,QCString &oldStyleArgName)
...
@@ -529,7 +529,7 @@ static void splitKnRArg(QCString &oldStyleArgPtr,QCString &oldStyleArgName)
oldStyleArgType = current->args.left(s);
oldStyleArgType = current->args.left(s);
s++;
s++;
int i=s+1;
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);
oldStyleArgType += current->args.mid(s,i-s);
s=i;
s=i;
while (i<si && isId(current->args.at(i))) i++;
while (i<si && isId(current->args.at(i))) i++;
...
@@ -543,7 +543,7 @@ static void splitKnRArg(QCString &oldStyleArgPtr,QCString &oldStyleArgName)
...
@@ -543,7 +543,7 @@ static void splitKnRArg(QCString &oldStyleArgPtr,QCString &oldStyleArgName)
while (i>=0 && isId(current->args.at(i))) i--;
while (i>=0 && isId(current->args.at(i))) i--;
j=i+1;
j=i+1;
// look for start of *'s
// 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++;
i++;
if (i!=l)
if (i!=l)
{
{
...
@@ -561,7 +561,7 @@ static void splitKnRArg(QCString &oldStyleArgPtr,QCString &oldStyleArgName)
...
@@ -561,7 +561,7 @@ static void splitKnRArg(QCString &oldStyleArgPtr,QCString &oldStyleArgName)
{
{
int l=si,j=0;
int l=si,j=0;
char c;
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)
if (j>0)
{
{
oldStyleArgPtr=current->args.left(j);
oldStyleArgPtr=current->args.left(j);
...
@@ -750,7 +750,6 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -750,7 +750,6 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
%x PageDocArg2
%x PageDocArg2
%x FileDocArg1
%x FileDocArg1
%x FileDocArg2
%x FileDocArg2
%x ExampleDoc
%x ExampleDocArg1
%x ExampleDocArg1
%x EnumDocArg1
%x EnumDocArg1
%x FuncPtr
%x FuncPtr
...
@@ -1067,9 +1066,17 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -1067,9 +1066,17 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<ObjCReturnType>")" {
<ObjCReturnType>")" {
BEGIN( ObjCMethod );
BEGIN( ObjCMethod );
}
}
<ObjCParams>{ID}/":" { // Keyword of parameter
<ObjCParams>{ID}{BN}*/":" { // Keyword of parameter
current->argList->getLast()->attrib=(QCString)"["+yytext+"]";
lineCount();
current->name += yytext;
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
<ObjCParams>{ID}{BN}* { // name of parameter
lineCount();
lineCount();
...
@@ -1085,17 +1092,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -1085,17 +1092,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<ObjCParams>"(" {
<ObjCParams>"(" {
BEGIN( ObjCParamType );
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>[^)]* {
<ObjCParamType>[^)]* {
current->argList->
l
ast()->type=yytext;
current->argList->
getL
ast()->type=yytext;
}
}
<ObjCParamType>")"{B}* {
<ObjCParamType>")"{B}* {
BEGIN( ObjCParams );
BEGIN( ObjCParams );
...
@@ -1107,6 +1105,9 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -1107,6 +1105,9 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
BEGIN( Function );
BEGIN( Function );
}
}
<ObjCMethod,ObjCParams>"{" { // start of a method body
<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('{');
unput('{');
BEGIN( Function );
BEGIN( Function );
}
}
...
@@ -3940,14 +3941,14 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -3940,14 +3941,14 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->groupDocType = Entry::GROUPDOC_NORMAL;
current->groupDocType = Entry::GROUPDOC_NORMAL;
BEGIN( GroupDocArg1 );
BEGIN( GroupDocArg1 );
}
}
<Doc,PageDoc,
ExampleDoc,
JavaDoc>{B}*{CMD}"addtogroup"{B}+ {
<Doc,PageDoc,JavaDoc>{B}*{CMD}"addtogroup"{B}+ {
current->section = Entry::GROUPDOC_SEC;
current->section = Entry::GROUPDOC_SEC;
current->fileName = yyFileName;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->startLine = yyLineNr;
current->groupDocType = Entry::GROUPDOC_ADD;
current->groupDocType = Entry::GROUPDOC_ADD;
BEGIN( GroupDocArg1 );
BEGIN( GroupDocArg1 );
}
}
<Doc,PageDoc,
ExampleDoc,
JavaDoc>{B}*{CMD}"weakgroup"{B}+ {
<Doc,PageDoc,JavaDoc>{B}*{CMD}"weakgroup"{B}+ {
current->section = Entry::GROUPDOC_SEC;
current->section = Entry::GROUPDOC_SEC;
current->fileName = yyFileName;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->startLine = yyLineNr;
...
@@ -4163,7 +4164,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -4163,7 +4164,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
}
}
<ExampleDocArg1>{FILE} {
<ExampleDocArg1>{FILE} {
current->name = stripQuotes(yytext);
current->name = stripQuotes(yytext);
BEGIN(
Exampl
eDoc );
BEGIN(
Pag
eDoc );
}
}
<ClassDoc,Doc,JavaDoc>{B}*{CMD}"relate"[sd]{B}* {
<ClassDoc,Doc,JavaDoc>{B}*{CMD}"relate"[sd]{B}* {
lastDocRelContext = YY_START;
lastDocRelContext = YY_START;
...
@@ -4362,22 +4363,22 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -4362,22 +4363,22 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<PageDoc>{CMD}"refitem".*"\n" {
<PageDoc>{CMD}"refitem".*"\n" {
current->doc+=yytext;
current->doc+=yytext;
}
}
<
ExampleDoc,
ClassDoc,PageDoc,Doc,JavaDoc>{CMD}"section"{B}+ {
<ClassDoc,PageDoc,Doc,JavaDoc>{CMD}"section"{B}+ {
//sectionType=SectionInfo::Section;
//sectionType=SectionInfo::Section;
current->doc+=yytext;
current->doc+=yytext;
BEGIN(SectionLabel);
BEGIN(SectionLabel);
}
}
<
ExampleDoc,
ClassDoc,PageDoc,Doc,JavaDoc>{CMD}"subsection"{B}+ {
<ClassDoc,PageDoc,Doc,JavaDoc>{CMD}"subsection"{B}+ {
//sectionType=SectionInfo::Subsection;
//sectionType=SectionInfo::Subsection;
current->doc+=yytext;
current->doc+=yytext;
BEGIN(SectionLabel);
BEGIN(SectionLabel);
}
}
<
ExampleDoc,
ClassDoc,PageDoc,Doc,JavaDoc>{CMD}"subsubsection"{B}+ {
<ClassDoc,PageDoc,Doc,JavaDoc>{CMD}"subsubsection"{B}+ {
//sectionType=SectionInfo::Subsubsection;
//sectionType=SectionInfo::Subsubsection;
current->doc+=yytext;
current->doc+=yytext;
BEGIN(SectionLabel);
BEGIN(SectionLabel);
}
}
<
ExampleDoc,
ClassDoc,PageDoc,Doc,JavaDoc>{CMD}"paragraph"{B}+ {
<ClassDoc,PageDoc,Doc,JavaDoc>{CMD}"paragraph"{B}+ {
//sectionType=SectionInfo::Paragraph;
//sectionType=SectionInfo::Paragraph;
current->doc+=yytext;
current->doc+=yytext;
BEGIN(SectionLabel);
BEGIN(SectionLabel);
...
@@ -4418,7 +4419,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -4418,7 +4419,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->brief.resize(0);
current->brief.resize(0);
BEGIN(lastDocContext);
BEGIN(lastDocContext);
}
}
<
ExampleDoc,
Doc,PageDoc,JavaDoc,ClassDoc>{CMD}"anchor"{B}+ {
<Doc,PageDoc,JavaDoc,ClassDoc>{CMD}"anchor"{B}+ {
lastAnchorContext = YY_START;
lastAnchorContext = YY_START;
//sectionType=SectionInfo::Anchor;
//sectionType=SectionInfo::Anchor;
current->doc+=yytext;
current->doc+=yytext;
...
@@ -4640,9 +4641,9 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -4640,9 +4641,9 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
sectionTitle+=yytext;
sectionTitle+=yytext;
current->doc+=yytext;
current->doc+=yytext;
}
}
<
ExampleDoc,
PageDoc,ClassDoc>"\n" { yyLineNr++ ; current->doc+=yytext; }
<PageDoc,ClassDoc>"\n" { yyLineNr++ ; current->doc+=yytext; }
<
ExampleDoc,
PageDoc,ClassDoc>[a-z_A-Z0-9 \t]+ { current->doc += yytext; }
<PageDoc,ClassDoc>[a-z_A-Z0-9 \t]+ { current->doc += yytext; }
<
ExampleDoc,
PageDoc>{CMD}"ingroup"{B}+ {
<PageDoc>{CMD}"ingroup"{B}+ {
lastGroupContext = YY_START;
lastGroupContext = YY_START;
lineCount();
lineCount();
BEGIN( GroupName );
BEGIN( GroupName );
...
@@ -4663,20 +4664,20 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -4663,20 +4664,20 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
endGroup();
endGroup();
memberGroupHeader.resize(0);
memberGroupHeader.resize(0);
}
}
<
ExampleDoc,
PageDoc,ClassDoc>. { current->doc += yytext; }
<PageDoc,ClassDoc>. { current->doc += yytext; }
<Doc,JavaDoc,LineDoc,
ExampleDoc,
PageDoc,ClassDoc>^{B}*"//"
<Doc,JavaDoc,LineDoc,PageDoc,ClassDoc>^{B}*"//"
<Doc,
ExampleDoc,
PageDoc,ClassDoc>"//" { current->doc += yytext; }
<Doc,PageDoc,ClassDoc>"//" { current->doc += yytext; }
<LineDoc,JavaDoc,ClassDocBrief>"//" { current->brief += 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;
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;
lastFormulaContext = YY_START;
formulaText="$";
formulaText="$";
insideFormula=TRUE;
insideFormula=TRUE;
BEGIN(ReadFormulaShort);
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;
lastFormulaContext = YY_START;
formulaText="\\[";
formulaText="\\[";
insideFormula=TRUE;
insideFormula=TRUE;
...
@@ -4742,7 +4743,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -4742,7 +4743,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
}
}
<ReadFormulaLong>\n { formulaText+=*yytext; yyLineNr++; }
<ReadFormulaLong>\n { formulaText+=*yytext; yyLineNr++; }
<ReadFormulaLong,ReadFormulaShort>. { formulaText+=*yytext; }
<ReadFormulaLong,ReadFormulaShort>. { formulaText+=*yytext; }
<
ExampleDoc,
PageDoc,ClassDocBrief,ClassDoc,ReadFormulaShort,ReadFormulaLong>{B}*"*/" {
<PageDoc,ClassDocBrief,ClassDoc,ReadFormulaShort,ReadFormulaLong>{B}*"*/" {
checkDocs();
checkDocs();
//printf("current->section=%x\n",current->section);
//printf("current->section=%x\n",current->section);
if (YY_START==SkipCode) // premature end of code block
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_;]
...
@@ -4814,11 +4815,11 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<PageDocTitle>"</"{TITLE}">" { BEGIN( PageDoc ); }
<PageDocTitle>"</"{TITLE}">" { BEGIN( PageDoc ); }
/* escaped versions of the conditional commands (for putting them in the docs) */
/* 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>{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>{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>{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>{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}"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}"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}"ifnot"/[^a-z_A-Z0-9] { current->brief+=yytext; }
<LineDoc,JavaDoc>{CMD}{CMD}"elseif"/[^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_;]
...
@@ -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; }
<LineDoc,JavaDoc>{CMD}{CMD}"endif"/[^a-z_A-Z0-9] { current->brief+=yytext; }
/* conditional commands */
/* 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;
lastIfContext = YY_START;
BEGIN(IfGuard);
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;
lastIfContext = YY_START;
BEGIN(IfNotGuard);
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 {
<IfGuard>\n {
warn(yyFileName,yyLineNr,"Missing guard for if statement!");
warn(yyFileName,yyLineNr,"Missing guard for if statement!");
yyLineNr++;
yyLineNr++;
...
@@ -4897,17 +4898,17 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -4897,17 +4898,17 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
yyLineNr++;
yyLineNr++;
}
}
<SkipSection>"//"|"*/"
<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
// previous section enabled => skip now
depthIf=1;
depthIf=1;
BEGIN(SkipSection);
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
// section was enabled => skip now
depthIf=1;
depthIf=1;
BEGIN(SkipSection);
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
// section enabled => absorb endif
}
}
...
@@ -5222,7 +5223,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -5222,7 +5223,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->doc+="\\internal";
current->doc+="\\internal";
}
}
}
}
<Doc,JavaDoc,
ExampleDoc,
PageDoc,ClassDoc,AfterDoc>{CMD}"internal" {
<Doc,JavaDoc,PageDoc,ClassDoc,AfterDoc>{CMD}"internal" {
if (!Config_getBool("INTERNAL_DOCS"))
if (!Config_getBool("INTERNAL_DOCS"))
{
{
lastInternalDocContext = YY_START;
lastInternalDocContext = YY_START;
...
@@ -5294,10 +5295,10 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -5294,10 +5295,10 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
unput('/');unput('*');
unput('/');unput('*');
BEGIN( tmpDocType );
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;
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;
current->doc += yytext;
yyLineNr++;
yyLineNr++;
}
}
...
@@ -5307,12 +5308,12 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -5307,12 +5308,12 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<ClassDocBrief,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+[ \t]*"."{B}*\n {
<ClassDocBrief,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+[ \t]*"."{B}*\n {
current->brief += "."; yyLineNr++;
current->brief += "."; yyLineNr++;
}
}
<Doc,JavaDoc,ClassDoc,PageDoc,
ExampleDoc,
ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+/[^/]
<Doc,JavaDoc,ClassDoc,PageDoc,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}*)?)"*"+{B}+ {
current->doc+=' ';
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;
current->doc+=yytext;
}
}
/*
/*
...
@@ -5328,13 +5329,13 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -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)
if (YY_START==CopyArgComment)
fullArgString+=yytext;
fullArgString+=yytext;
else
else
current->doc+=yytext;
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;
bool handled=FALSE;
if ( useOverrideCommands)
if ( useOverrideCommands)
{
{
...
@@ -5422,7 +5423,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -5422,7 +5423,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->brief+=yytext;
current->brief+=yytext;
//}
//}
}
}
<DefLineDoc,LineDoc,ClassDoc,PageDoc,
ExampleDoc,
Doc>"/*"|"//" { current->doc += yytext; }
<DefLineDoc,LineDoc,ClassDoc,PageDoc,Doc>"/*"|"//" { current->doc += yytext; }
<SkipCxxComment>.*/\n {
<SkipCxxComment>.*/\n {
BEGIN( lastCContext ) ;
BEGIN( lastCContext ) ;
}
}
...
...
src/util.cpp
View file @
cba24284
...
@@ -1127,7 +1127,7 @@ static bool findOperator(const QCString &s,int i)
...
@@ -1127,7 +1127,7 @@ static bool findOperator(const QCString &s,int i)
while
(
b
<
i
)
// check if there are only spaces inbetween
while
(
b
<
i
)
// check if there are only spaces inbetween
// the operator and the >
// the operator and the >
{
{
if
(
!
isspace
(
s
.
at
(
b
)))
return
FALSE
;
if
(
!
isspace
(
(
uchar
)
s
.
at
(
b
)))
return
FALSE
;
b
++
;
b
++
;
}
}
return
TRUE
;
return
TRUE
;
...
@@ -1147,20 +1147,20 @@ QCString removeRedundantWhiteSpace(const QCString &s)
...
@@ -1147,20 +1147,20 @@ QCString removeRedundantWhiteSpace(const QCString &s)
char
c
=
s
.
at
(
i
);
char
c
=
s
.
at
(
i
);
if
(
csp
<
6
&&
c
==
constScope
[
csp
])
csp
++
;
else
csp
=
0
;
if
(
csp
<
6
&&
c
==
constScope
[
csp
])
csp
++
;
else
csp
=
0
;
if
(
i
<
l
-
2
&&
c
==
'<'
&&
// current char is a <
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"
(
i
<
8
||
!
findOperator
(
s
,
i
))
// string in front is not "operator"
)
)
{
{
result
+=
"< "
;
// insert extra space for layouting (nested) templates
result
+=
"< "
;
// insert extra space for layouting (nested) templates
}
}
else
if
(
i
>
0
&&
c
==
'>'
&&
// current char is a >
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"
(
i
<
8
||
!
findOperator
(
s
,
i
))
// string in front is not "operator"
)
)
{
{
result
+=
" >"
;
// insert extra space for layouting (nested) templates
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
-
1
&&
isId
(
s
.
at
(
i
+
1
)))
||
(
i
<
l
-
2
&&
s
.
at
(
i
+
1
)
==
'$'
&&
isId
(
s
.
at
(
i
+
2
)))
// for PHP
||
(
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
||
(
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)
...
@@ -1186,7 +1186,7 @@ QCString removeRedundantWhiteSpace(const QCString &s)
result
+=
" :"
;
result
+=
" :"
;
csp
=
0
;
csp
=
0
;
}
}
else
if
(
!
isspace
(
c
)
||
else
if
(
!
isspace
(
(
uchar
)
c
)
||
(
i
>
0
&&
i
<
l
-
1
&&
(
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
))
||
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
)))
&&
(
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,
...
@@ -2247,7 +2247,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
}
}
else
if
(
dstPos
<
dstAType
.
length
())
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
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,
...
@@ -2274,7 +2274,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
}
}
else
if
(
srcPos
<
srcAType
.
length
())
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
if
(
!
srcA
->
name
.
isEmpty
())
// src has its name separated from its type
{
{
...
@@ -2646,7 +2646,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
...
@@ -2646,7 +2646,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
{
{
delete
argList
;
argList
=
0
;
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
// no exact match found, but if args="()" an arbitrary member will do
{
{
//printf(" >Searching for arbitrary member\n");
//printf(" >Searching for arbitrary member\n");
...
@@ -2746,7 +2746,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
...
@@ -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
// no exact match found, but if args="()" an arbitrary
// member will do
// member will do
{
{
...
@@ -2812,7 +2812,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
...
@@ -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
// no exact match found, but if args="()" an arbitrary
// member will do
// member will do
...
@@ -3548,11 +3548,12 @@ QCString escapeCharsInString(const char *name,bool allowDots)
...
@@ -3548,11 +3548,12 @@ QCString escapeCharsInString(const char *name,bool allowDots)
}
}
/*! This function determines the file name on disk of an item
/*! 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.
* arguments, so special characters need to be escaped.
*/
*/
QCString
convertNameToFile
(
const
char
*
name
,
bool
allowDots
)
QCString
convertNameToFile
(
const
char
*
name
,
bool
allowDots
)
{
{
QCString
result
;
if
(
Config_getBool
(
"SHORT_NAMES"
))
if
(
Config_getBool
(
"SHORT_NAMES"
))
{
{
static
QDict
<
void
>
usedNames
(
10007
);
static
QDict
<
void
>
usedNames
(
10007
);
...
@@ -3569,13 +3570,75 @@ QCString convertNameToFile(const char *name,bool allowDots)
...
@@ -3569,13 +3570,75 @@ QCString convertNameToFile(const char *name,bool allowDots)
{
{
num
=
*
(
int
*
)
&
value
;
num
=
*
(
int
*
)
&
value
;
}
}
QCString
result
;
result
.
sprintf
(
"a%05d"
,
num
);
result
.
sprintf
(
"a%05d"
,
num
);
return
result
;
}
}
else
// long names
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)
...
@@ -4714,3 +4777,13 @@ void replaceNamespaceAliases(QCString &scope,int i)
//printf("replaceNamespaceAliases() result=%s\n",scope.data());
//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 @
cba24284
...
@@ -49,6 +49,7 @@ class MemberNameInfoSDict;
...
@@ -49,6 +49,7 @@ class MemberNameInfoSDict;
struct
ListItemInfo
;
struct
ListItemInfo
;
class
PageDef
;
class
PageDef
;
struct
SectionInfo
;
struct
SectionInfo
;
class
QDir
;
//--------------------------------------------------------------------
//--------------------------------------------------------------------
...
@@ -213,6 +214,11 @@ int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item);
...
@@ -213,6 +214,11 @@ int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item);
int
isAccessibleFrom
(
Definition
*
scope
,
FileDef
*
fileScope
,
Definition
*
item
,
int
isAccessibleFrom
(
Definition
*
scope
,
FileDef
*
fileScope
,
Definition
*
item
,
const
QCString
&
explicitScopePart
);
const
QCString
&
explicitScopePart
);
int
computeQualifiedIndex
(
const
QString
&
name
);
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
#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