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
ad65c6e2
Commit
ad65c6e2
authored
May 30, 2005
by
dimitri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.4.3-20050530
parent
44904635
Changes
25
Show whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
335 additions
and
510 deletions
+335
-510
Doxyfile
Doxyfile
+13
-2
INSTALL
INSTALL
+2
-2
Makefile.in
Makefile.in
+3
-3
README
README
+2
-2
VERSION
VERSION
+1
-1
classdef.cpp
src/classdef.cpp
+4
-9
commentscan.l
src/commentscan.l
+21
-10
definition.cpp
src/definition.cpp
+1
-1
docparser.cpp
src/docparser.cpp
+13
-1
doctokenizer.l
src/doctokenizer.l
+2
-2
dot.cpp
src/dot.cpp
+3
-169
doxygen.cpp
src/doxygen.cpp
+17
-186
doxytag.l
src/doxytag.l
+59
-41
filedef.cpp
src/filedef.cpp
+8
-4
groupdef.cpp
src/groupdef.cpp
+0
-4
htmlgen.cpp
src/htmlgen.cpp
+7
-2
index.cpp
src/index.cpp
+1
-1
index.h
src/index.h
+1
-1
memberlist.cpp
src/memberlist.cpp
+2
-2
pre.l
src/pre.l
+2
-2
rtfdocvisitor.cpp
src/rtfdocvisitor.cpp
+1
-1
scanner.l
src/scanner.l
+1
-2
util.cpp
src/util.cpp
+151
-52
util.h
src/util.h
+3
-1
xmlgen.cpp
src/xmlgen.cpp
+17
-9
No files found.
Doxyfile
View file @
ad65c6e2
# Doxyfile 1.
3.7
# Doxyfile 1.
4.3
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# Project related configuration options
# Project related configuration options
...
@@ -23,6 +23,7 @@ MULTILINE_CPP_IS_BRIEF = NO
...
@@ -23,6 +23,7 @@ MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = NO
DETAILS_AT_TOP = NO
INHERIT_DOCS = YES
INHERIT_DOCS = YES
DISTRIBUTE_GROUP_DOC = NO
DISTRIBUTE_GROUP_DOC = NO
SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 8
TAB_SIZE = 8
ALIASES =
ALIASES =
OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_FOR_C = NO
...
@@ -55,6 +56,8 @@ GENERATE_DEPRECATEDLIST= YES
...
@@ -55,6 +56,8 @@ GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS =
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = YES
SHOW_USED_FILES = YES
SHOW_DIRECTORIES = YES
FILE_VERSION_FILTER =
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
...
@@ -62,6 +65,7 @@ QUIET = NO
...
@@ -62,6 +65,7 @@ QUIET = NO
WARNINGS = YES
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = NO
WARN_FORMAT = "$file:$line: $text"
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE =
WARN_LOGFILE =
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
...
@@ -87,7 +91,8 @@ EXCLUDE = src/code.cpp \
...
@@ -87,7 +91,8 @@ EXCLUDE = src/code.cpp \
src/suffixtree.h \
src/suffixtree.h \
src/searchindex.cpp \
src/searchindex.cpp \
src/searchindex.h \
src/searchindex.h \
src/commentcnv.cpp
src/commentcnv.cpp \
src/commentscan.cpp
EXCLUDE_SYMLINKS = NO
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATH =
...
@@ -95,6 +100,7 @@ EXAMPLE_PATTERNS =
...
@@ -95,6 +100,7 @@ EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
IMAGE_PATH =
INPUT_FILTER =
INPUT_FILTER =
FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# configuration options related to source browsing
# configuration options related to source browsing
...
@@ -104,6 +110,7 @@ INLINE_SOURCES = NO
...
@@ -104,6 +110,7 @@ INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = YES
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
REFERENCES_RELATION = YES
USE_HTAGS = NO
VERBATIM_HEADERS = YES
VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
# configuration options related to the alphabetical class index
...
@@ -209,18 +216,22 @@ HIDE_UNDOC_RELATIONS = YES
...
@@ -209,18 +216,22 @@ HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = YES
HAVE_DOT = YES
CLASS_GRAPH = YES
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
UML_LOOK = NO
UML_LOOK = NO
TEMPLATE_RELATIONS = YES
TEMPLATE_RELATIONS = YES
INCLUDE_GRAPH = YES
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = NO
INCLUDED_BY_GRAPH = NO
CALL_GRAPH = NO
CALL_GRAPH = NO
GRAPHICAL_HIERARCHY = YES
GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = png
DOT_IMAGE_FORMAT = png
DOT_PATH =
DOT_PATH =
DOTFILE_DIRS =
DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_HEIGHT = 1024
MAX_DOT_GRAPH_HEIGHT = 1024
MAX_DOT_GRAPH_DEPTH = 0
MAX_DOT_GRAPH_DEPTH = 0
DOT_TRANSPARENT = NO
DOT_MULTI_TARGETS = NO
GENERATE_LEGEND = YES
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
...
...
INSTALL
View file @
ad65c6e2
DOXYGEN Version 1.4.3
DOXYGEN Version 1.4.3
-20050530
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 (
16
May 2005)
Dimitri van Heesch (
30
May 2005)
Makefile.in
View file @
ad65c6e2
...
@@ -53,9 +53,9 @@ install: doxywizard_install
...
@@ -53,9 +53,9 @@ install: doxywizard_install
$(INSTTOOL)
-m
755 bin/doxygen
$(INSTALL)
/bin
$(INSTTOOL)
-m
755 bin/doxygen
$(INSTALL)
/bin
$(INSTTOOL)
-m
755 bin/doxytag
$(INSTALL)
/bin
$(INSTTOOL)
-m
755 bin/doxytag
$(INSTALL)
/bin
$(INSTTOOL)
-d
$(INSTALL)
/
$(MAN1DIR)
$(INSTTOOL)
-d
$(INSTALL)
/
$(MAN1DIR)
cat
doc/doxygen.1 |
sed
-e
"s/DATE/
\
$
(DATE)/g"
-e
"s/VERSION/
$(VERSION)
/g"
>
$(INSTALL)
/
$(MAN1DIR)
/doxygen.1
;
\
cat
doc/doxygen.1 |
sed
-e
"s/DATE/
$(DATE)
/g"
-e
"s/VERSION/
$(VERSION)
/g"
>
$(INSTALL)
/
$(MAN1DIR)
/doxygen.1
;
\
cat
doc/doxytag.1 |
sed
-e
"s/DATE/
\
$
(DATE)/g"
-e
"s/VERSION/
$(VERSION)
/g"
>
$(INSTALL)
/
$(MAN1DIR)
/doxytag.1
;
\
cat
doc/doxytag.1 |
sed
-e
"s/DATE/
$(DATE)
/g"
-e
"s/VERSION/
$(VERSION)
/g"
>
$(INSTALL)
/
$(MAN1DIR)
/doxytag.1
;
\
cat
doc/doxywizard.1 |
sed
-e
"s/DATE/
\
$
(DATE)/g"
-e
"s/VERSION/
$(VERSION)
/g"
>
$(INSTALL)
/
$(MAN1DIR)
/doxywizard.1
;
cat
doc/doxywizard.1 |
sed
-e
"s/DATE/
$(DATE)
/g"
-e
"s/VERSION/
$(VERSION)
/g"
>
$(INSTALL)
/
$(MAN1DIR)
/doxywizard.1
;
install_docs
:
install_docs
:
$(INSTTOOL)
-d
$(DOCDIR)
$(INSTTOOL)
-d
$(DOCDIR)
...
...
README
View file @
ad65c6e2
DOXYGEN Version 1.4.3
DOXYGEN Version 1.4.3
_20050530
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) (
16
May 2005)
Dimitri van Heesch (dimitri@stack.nl) (
30
May 2005)
VERSION
View file @
ad65c6e2
1.4.3
1.4.3
-20050530
src/classdef.cpp
View file @
ad65c6e2
...
@@ -1037,13 +1037,13 @@ void ClassDef::writeDocumentation(OutputList &ol)
...
@@ -1037,13 +1037,13 @@ void ClassDef::writeDocumentation(OutputList &ol)
{
{
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
writeString
(
"<!-- doxytag: class=
<
"
);
ol
.
writeString
(
"<!-- doxytag: class=
\"
"
);
ol
.
docify
(
name
());
ol
.
docify
(
name
());
ol
.
writeString
(
"
>
-->"
);
ol
.
writeString
(
"
\"
-->"
);
if
(
m_inherits
->
count
()
>
0
)
if
(
m_inherits
->
count
()
>
0
)
{
{
BaseClassListIterator
bli
(
*
m_inherits
);
BaseClassListIterator
bli
(
*
m_inherits
);
ol
.
writeString
(
"<!-- doxytag: inherits=
<
"
);
ol
.
writeString
(
"<!-- doxytag: inherits=
\"
"
);
BaseClassDef
*
bcd
=
0
;
BaseClassDef
*
bcd
=
0
;
bool
first
=
TRUE
;
bool
first
=
TRUE
;
for
(
bli
.
toFirst
();(
bcd
=
bli
.
current
());
++
bli
)
for
(
bli
.
toFirst
();(
bcd
=
bli
.
current
());
++
bli
)
...
@@ -1052,7 +1052,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
...
@@ -1052,7 +1052,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol
.
docify
(
bcd
->
classDef
->
name
());
ol
.
docify
(
bcd
->
classDef
->
name
());
first
=
FALSE
;
first
=
FALSE
;
}
}
ol
.
writeString
(
"
>
-->"
);
ol
.
writeString
(
"
\"
-->"
);
}
}
ol
.
popGeneratorState
();
ol
.
popGeneratorState
();
}
}
...
@@ -2168,16 +2168,11 @@ void ClassDef::mergeMembers()
...
@@ -2168,16 +2168,11 @@ void ClassDef::mergeMembers()
if
(
srcCd
==
dstCd
||
dstCd
->
isBaseClass
(
srcCd
,
TRUE
))
if
(
srcCd
==
dstCd
||
dstCd
->
isBaseClass
(
srcCd
,
TRUE
))
// member is in the same or a base class
// member is in the same or a base class
{
{
#ifdef NEWMATCH
found
=
matchArguments2
(
found
=
matchArguments2
(
srcMd
->
getOuterScope
(),
srcMd
->
getFileDef
(),
srcMd
->
argumentList
(),
srcMd
->
getOuterScope
(),
srcMd
->
getFileDef
(),
srcMd
->
argumentList
(),
dstMd
->
getOuterScope
(),
dstMd
->
getFileDef
(),
dstMd
->
argumentList
(),
dstMd
->
getOuterScope
(),
dstMd
->
getFileDef
(),
dstMd
->
argumentList
(),
TRUE
TRUE
);
);
#else
found
=
matchArguments
(
srcMd
->
argumentList
(),
dstMd
->
argumentList
());
#endif
//printf(" Yes, matching (%s<->%s): %d\n",
//printf(" Yes, matching (%s<->%s): %d\n",
// argListToString(srcMd->argumentList()).data(),
// argListToString(srcMd->argumentList()).data(),
// argListToString(dstMd->argumentList()).data(),
// argListToString(dstMd->argumentList()).data(),
...
...
src/commentscan.l
View file @
ad65c6e2
...
@@ -327,6 +327,7 @@ static Protection protection;
...
@@ -327,6 +327,7 @@ static Protection protection;
static bool xrefAppendFlag;
static bool xrefAppendFlag;
static bool inGroupParamFound;
static bool inGroupParamFound;
static int braceCount;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
...
@@ -855,14 +856,11 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
...
@@ -855,14 +856,11 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
addOutput(yytext[2]);
addOutput(yytext[2]);
}
}
<Comment>(\n|\\_linebr)({B}*(\n|\\_linebr))+ { // at least one blank line (or blank line command)
<Comment>(\n|\\_linebr)({B}*(\n|\\_linebr))+ { // at least one blank line (or blank line command)
if (inContext==OutputBrief)
if (inContext!=OutputBrief)
{
setOutput(OutputDoc);
}
else
{
{
addOutput(yytext);
addOutput(yytext);
}
}
setOutput(OutputDoc);
lineCount();
lineCount();
}
}
<Comment>"." { // potential end of a JavaDoc style comment
<Comment>"." { // potential end of a JavaDoc style comment
...
@@ -1557,17 +1555,29 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
...
@@ -1557,17 +1555,29 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
/* ----- handle argument of fn command ------- */
/* ----- handle argument of fn command ------- */
<FnParam>{DOCNL} { // end of argument
<FnParam>{DOCNL} { // end of argument
if (braceCount==0)
{
if (*yytext=='\n') yyLineNr++;
if (*yytext=='\n') yyLineNr++;
addOutput('\n');
addOutput('\n');
//printf("functionProto=%s\n",functionProto.data());
langParser->parsePrototype(functionProto);
langParser->parsePrototype(functionProto);
BEGIN( Comment );
BEGIN( Comment );
}
}
}
<FnParam>{LC} { // line continuation
<FnParam>{LC} { // line continuation
yyLineNr++;
yyLineNr++;
functionProto+=' ';
functionProto+=' ';
}
}
<FnParam>[^@\\\n]+ { // non-special characters
<FnParam>[^@\\\n()]+ { // non-special characters
functionProto+=yytext;
}
<FnParam>"(" {
functionProto+=yytext;
braceCount++;
}
<FnParam>")" {
functionProto+=yytext;
functionProto+=yytext;
braceCount--;
}
}
<FnParam>. { // add other stuff
<FnParam>. { // add other stuff
functionProto+=*yytext;
functionProto+=*yytext;
...
@@ -1655,6 +1665,7 @@ static void handleFn(const QCString &)
...
@@ -1655,6 +1665,7 @@ static void handleFn(const QCString &)
{
{
makeStructuralIndicator(Entry::MEMBERDOC_SEC);
makeStructuralIndicator(Entry::MEMBERDOC_SEC);
functionProto.resize(0);
functionProto.resize(0);
braceCount=0;
BEGIN(FnParam);
BEGIN(FnParam);
}
}
...
...
src/definition.cpp
View file @
ad65c6e2
...
@@ -253,7 +253,7 @@ static bool readCodeFragment(const char *fileName,
...
@@ -253,7 +253,7 @@ static bool readCodeFragment(const char *fileName,
{
{
//printf("readCodeFragment(%s,%d,%d)\n",fileName,startLine,endLine);
//printf("readCodeFragment(%s,%d,%d)\n",fileName,startLine,endLine);
if
(
fileName
==
0
||
fileName
[
0
]
==
0
)
return
FALSE
;
// not a valid file name
if
(
fileName
==
0
||
fileName
[
0
]
==
0
)
return
FALSE
;
// not a valid file name
QCString
cmd
=
"
\"
"
+
getFileFilter
(
fileName
)
+
"
\
"
\"
"
+
fileName
+
"
\"
"
;
QCString
cmd
=
getFileFilter
(
fileName
)
+
"
\"
"
+
fileName
+
"
\"
"
;
FILE
*
f
=
Config_getBool
(
"FILTER_SOURCE_FILES"
)
?
popen
(
cmd
,
"r"
)
:
fopen
(
fileName
,
"r"
);
FILE
*
f
=
Config_getBool
(
"FILTER_SOURCE_FILES"
)
?
popen
(
cmd
,
"r"
)
:
fopen
(
fileName
,
"r"
);
bool
found
=
FALSE
;
bool
found
=
FALSE
;
if
(
f
)
if
(
f
)
...
...
src/docparser.cpp
View file @
ad65c6e2
...
@@ -555,7 +555,7 @@ static bool findDocsForMemberOrCompound(const char *commandName,
...
@@ -555,7 +555,7 @@ static bool findDocsForMemberOrCompound(const char *commandName,
int
funcStart
=
cmdArg
.
find
(
'('
);
int
funcStart
=
cmdArg
.
find
(
'('
);
if
(
funcStart
==-
1
)
funcStart
=
l
;
if
(
funcStart
==-
1
)
funcStart
=
l
;
QString
name
=
cmdArg
.
left
(
funcStart
);
QString
name
=
removeRedundantWhiteSpace
(
cmdArg
.
left
(
funcStart
).
latin1
()
);
QString
args
=
cmdArg
.
right
(
l
-
funcStart
);
QString
args
=
cmdArg
.
right
(
l
-
funcStart
);
// try if the link is to a member
// try if the link is to a member
...
@@ -2684,6 +2684,18 @@ int DocHtmlCell::parse()
...
@@ -2684,6 +2684,18 @@ int DocHtmlCell::parse()
if
(
isFirst
)
{
par
->
markFirst
();
isFirst
=
FALSE
;
}
if
(
isFirst
)
{
par
->
markFirst
();
isFirst
=
FALSE
;
}
m_children
.
append
(
par
);
m_children
.
append
(
par
);
retval
=
par
->
parse
();
retval
=
par
->
parse
();
if
(
retval
==
TK_HTMLTAG
)
{
int
tagId
=
HtmlTagMapper
::
map
(
g_token
->
name
);
if
(
tagId
==
HTML_TD
&&
g_token
->
endTag
)
// found </dt> tag
{
retval
=
TK_NEWPARA
;
// ignore the tag
}
else
if
(
tagId
==
HTML_TH
&&
g_token
->
endTag
)
// found </th> tag
{
retval
=
TK_NEWPARA
;
// ignore the tag
}
}
}
}
while
(
retval
==
TK_NEWPARA
);
while
(
retval
==
TK_NEWPARA
);
if
(
par
)
par
->
markLast
();
if
(
par
)
par
->
markLast
();
...
...
src/doctokenizer.l
View file @
ad65c6e2
...
@@ -297,7 +297,7 @@ FILESCHAR [a-z_A-Z0-9\\:\\\/\-\+]
...
@@ -297,7 +297,7 @@ FILESCHAR [a-z_A-Z0-9\\:\\\/\-\+]
FILEECHAR [a-z_A-Z0-9\-\+]
FILEECHAR [a-z_A-Z0-9\-\+]
HFILEMASK ("."{FILESCHAR}*{FILEECHAR}+)*
HFILEMASK ("."{FILESCHAR}*{FILEECHAR}+)*
FILEMASK ({FILESCHAR}*{FILEECHAR}+("."{FILESCHAR}*{FILEECHAR}+)*)|{HFILEMASK}
FILEMASK ({FILESCHAR}*{FILEECHAR}+("."{FILESCHAR}*{FILEECHAR}+)*)|{HFILEMASK}
LINKMASK [^ \t\n\r\\@<&${}]+("("[^\n)]*")")?({BLANK}*("const"|"volatile"))?
LINKMASK [^ \t\n\r\\@<&${}]+("("[^\n)]*")")?({BLANK}*("const"|"volatile")
{BLANK}+
)?
SPCMD1 {CMD}[a-z_A-Z0-9]+
SPCMD1 {CMD}[a-z_A-Z0-9]+
SPCMD2 {CMD}[\\@<>&$#%~]
SPCMD2 {CMD}[\\@<>&$#%~]
SPCMD3 {CMD}form#[0-9]+
SPCMD3 {CMD}form#[0-9]+
...
@@ -316,7 +316,7 @@ OPNEW {BLANK}+"new"({BLANK}*"[]")?
...
@@ -316,7 +316,7 @@ OPNEW {BLANK}+"new"({BLANK}*"[]")?
OPDEL {BLANK}+"delete"({BLANK}*"[]")?
OPDEL {BLANK}+"delete"({BLANK}*"[]")?
OPNORM {OPNEW}|{OPDEL}|"+"|"-"|"*"|"/"|"%"|"^"|"&"|"|"|"~"|"!"|"="|"<"|">"|"+="|"-="|"*="|"/="|"%="|"^="|"&="|"|="|"<<"|">>"|"<<="|">>="|"=="|"!="|"<="|">="|"&&"|"||"|"++"|"--"|","|"->*"|"->"|"[]"|"()"
OPNORM {OPNEW}|{OPDEL}|"+"|"-"|"*"|"/"|"%"|"^"|"&"|"|"|"~"|"!"|"="|"<"|">"|"+="|"-="|"*="|"/="|"%="|"^="|"&="|"|="|"<<"|">>"|"<<="|">>="|"=="|"!="|"<="|">="|"&&"|"||"|"++"|"--"|","|"->*"|"->"|"[]"|"()"
OPCAST {BLANK}+[^(\r\n.,]+
OPCAST {BLANK}+[^(\r\n.,]+
OPMASK ({BLANK}*{OPNORM}{FUNCARG})|({OPCAST}{FUNCARG})
OPMASK ({BLANK}*{OPNORM}{FUNCARG}
?
)|({OPCAST}{FUNCARG})
LNKWORD1 ("::"|"#")?{SCOPEMASK}
LNKWORD1 ("::"|"#")?{SCOPEMASK}
CVSPEC {BLANK}*("const"|"volatile")
CVSPEC {BLANK}*("const"|"volatile")
LNKWORD2 {SCOPEPRE}*"operator"{OPMASK}
LNKWORD2 {SCOPEPRE}*"operator"{OPMASK}
...
...
src/dot.cpp
View file @
ad65c6e2
...
@@ -566,6 +566,7 @@ static QCString convertLabel(const QCString &l)
...
@@ -566,6 +566,7 @@ static QCString convertLabel(const QCString &l)
switch
(
c
)
switch
(
c
)
{
{
case
'\\'
:
result
+=
"
\\\\
"
;
break
;
case
'\\'
:
result
+=
"
\\\\
"
;
break
;
case
'\n'
:
result
+=
"
\\
n"
;
break
;
case
'<'
:
result
+=
"
\\
<"
;
break
;
case
'<'
:
result
+=
"
\\
<"
;
break
;
case
'>'
:
result
+=
"
\\
>"
;
break
;
case
'>'
:
result
+=
"
\\
>"
;
break
;
case
'|'
:
result
+=
"
\\
|"
;
break
;
case
'|'
:
result
+=
"
\\
|"
;
break
;
...
@@ -1126,14 +1127,6 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
...
@@ -1126,14 +1127,6 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
return
;
return
;
}
}
//QCString dotArgs(maxCmdLine);
//dotArgs.sprintf("\"%s\" -T%s -o \"%s\" -Timap -o \"%s\"",
// dotName.data(), imgExt.data(), imgName.data(), mapName.data());
//if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
//{
// err("Problems running dot. Check your installation!\n");
// return;
//}
checkDotResult
(
imgName
);
checkDotResult
(
imgName
);
if
(
Config_getBool
(
"DOT_CLEANUP"
))
thisDir
.
remove
(
dotName
);
if
(
Config_getBool
(
"DOT_CLEANUP"
))
thisDir
.
remove
(
dotName
);
}
}
...
@@ -1446,7 +1439,7 @@ void DotClassGraph::buildGraph(ClassDef *cd,DotNode *n,int distance,bool base)
...
@@ -1446,7 +1439,7 @@ void DotClassGraph::buildGraph(ClassDef *cd,DotNode *n,int distance,bool base)
}
}
else
else
{
{
label
+=
QCString
(
"
\
\
n"
)
+
s
;
label
+=
QCString
(
"
\n
"
)
+
s
;
}
}
}
}
addClass
(
ucd
->
classDef
,
n
,
EdgeInfo
::
Purple
,
label
,
distance
,
0
,
addClass
(
ucd
->
classDef
,
n
,
EdgeInfo
::
Purple
,
label
,
distance
,
0
,
...
@@ -1689,15 +1682,6 @@ static bool findMaximalDotGraph(DotNode *root,
...
@@ -1689,15 +1682,6 @@ static bool findMaximalDotGraph(DotNode *root,
return
FALSE
;
return
FALSE
;
}
}
//QCString dotArgs(maxCmdLine);
//// create annotated dot file
//dotArgs.sprintf("-Tdot \"%s.dot\" -o \"%s_tmp.dot\"",baseName.data(),baseName.data());
//if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
// {
// err("Problems running dot. Check your installation!\n");
// return FALSE;
//}
// extract bounding box from the result
// extract bounding box from the result
readBoundingBoxDot
(
baseName
+
"_tmp.dot"
,
&
width
,
&
height
);
readBoundingBoxDot
(
baseName
+
"_tmp.dot"
,
&
width
,
&
height
);
width
=
width
*
96
/
72
;
// 96 pixels/inch, 72 points/inch
width
=
width
*
96
/
72
;
// 96 pixels/inch, 72 points/inch
...
@@ -1842,20 +1826,6 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
...
@@ -1842,20 +1826,6 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
return
baseName
;
return
baseName
;
}
}
//dotArgs.sprintf("\"%s.dot\" -T%s -o \"%s\"",
// baseName.data(),imgExt.data(),imgName.data());
//if (generateImageMap)
//{
// // run dot also to create an image map
// dotArgs+=QCString(maxCmdLine).sprintf(" -Timap -o \"%s.map\"",
// baseName.data());
//}
//if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
//{
// err("Error: Problems running dot. Check your installation!\n");
// QDir::setCurrent(oldDir);
// return baseName;
//}
checkDotResult
(
imgName
);
checkDotResult
(
imgName
);
}
}
else
if
(
format
==
EPS
)
// run dot to create a .eps image
else
if
(
format
==
EPS
)
// run dot to create a .eps image
...
@@ -1868,14 +1838,6 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
...
@@ -1868,14 +1838,6 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
return
baseName
;
return
baseName
;
}
}
//QCString dotArgs(maxCmdLine);
//dotArgs.sprintf("-Tps \"%s.dot\" -o \"%s.eps\"",baseName.data(),baseName.data());
//if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
//{
// err("Error: Problems running dot. Check your installation!\n");
// QDir::setCurrent(oldDir);
// return baseName;
//}
if
(
Config_getBool
(
"USE_PDFLATEX"
))
if
(
Config_getBool
(
"USE_PDFLATEX"
))
{
{
QCString
epstopdfArgs
(
maxCmdLine
);
QCString
epstopdfArgs
(
maxCmdLine
);
...
@@ -2122,20 +2084,6 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
...
@@ -2122,20 +2084,6 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
QDir
::
setCurrent
(
oldDir
);
QDir
::
setCurrent
(
oldDir
);
return
baseName
;
return
baseName
;
}
}
//dotArgs.sprintf("\"%s.dot\" -T%s -o \"%s\"",
// baseName.data(),imgExt.data(),imgName.data());
//if (generateImageMap)
//{
// // run dot also to create an image map
// dotArgs+=QCString(maxCmdLine).sprintf(" -Timap -o \"%s.map\"",
// baseName.data());
//}
//if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
//{
// err("Problems running dot. Check your installation!\n");
// QDir::setCurrent(oldDir);
// return baseName;
//}
checkDotResult
(
imgName
);
checkDotResult
(
imgName
);
}
}
else
if
(
format
==
EPS
)
else
if
(
format
==
EPS
)
...
@@ -2148,15 +2096,6 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
...
@@ -2148,15 +2096,6 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
QDir
::
setCurrent
(
oldDir
);
QDir
::
setCurrent
(
oldDir
);
return
baseName
;
return
baseName
;
}
}
//QCString dotArgs(maxCmdLine);
//dotArgs.sprintf("-Tps \"%s.dot\" -o \"%s.eps\"",
// baseName.data(),baseName.data());
//if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
//{
// err("Problems running dot. Check your installation!\n");
// QDir::setCurrent(oldDir);
// return baseName;
//}
if
(
Config_getBool
(
"USE_PDFLATEX"
))
if
(
Config_getBool
(
"USE_PDFLATEX"
))
{
{
QCString
epstopdfArgs
(
maxCmdLine
);
QCString
epstopdfArgs
(
maxCmdLine
);
...
@@ -2323,20 +2262,6 @@ QCString DotCallGraph::writeGraph(QTextStream &out, GraphOutputFormat format,
...
@@ -2323,20 +2262,6 @@ QCString DotCallGraph::writeGraph(QTextStream &out, GraphOutputFormat format,
QDir
::
setCurrent
(
oldDir
);
QDir
::
setCurrent
(
oldDir
);
return
baseName
;
return
baseName
;
}
}
//dotArgs.sprintf("\"%s.dot\" -T%s -o \"%s\"",
// baseName.data(),imgExt.data(),imgName.data());
//if (generateImageMap)
//{
// // run dot also to create an image map
// dotArgs+=QCString(maxCmdLine).sprintf(" -Timap -o \"%s.map\"",
// baseName.data());
//}
//if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
//{
// err("Problems running dot. Check your installation!\n");
// QDir::setCurrent(oldDir);
// return baseName;
//}
checkDotResult
(
imgName
);
checkDotResult
(
imgName
);
}
}
else
if
(
format
==
EPS
)
else
if
(
format
==
EPS
)
...
@@ -2349,15 +2274,6 @@ QCString DotCallGraph::writeGraph(QTextStream &out, GraphOutputFormat format,
...
@@ -2349,15 +2274,6 @@ QCString DotCallGraph::writeGraph(QTextStream &out, GraphOutputFormat format,
QDir
::
setCurrent
(
oldDir
);
QDir
::
setCurrent
(
oldDir
);
return
baseName
;
return
baseName
;
}
}
//QCString dotArgs(maxCmdLine);
//dotArgs.sprintf("-Tps \"%s.dot\" -o \"%s.eps\"",
// baseName.data(),baseName.data());
//if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
//{
// err("Problems running dot. Check your installation!\n");
// QDir::setCurrent(oldDir);
// return baseName;
//}
if
(
Config_getBool
(
"USE_PDFLATEX"
))
if
(
Config_getBool
(
"USE_PDFLATEX"
))
{
{
QCString
epstopdfArgs
(
maxCmdLine
);
QCString
epstopdfArgs
(
maxCmdLine
);
...
@@ -2530,20 +2446,6 @@ QCString DotDirDeps::writeGraph(QTextStream &out,
...
@@ -2530,20 +2446,6 @@ QCString DotDirDeps::writeGraph(QTextStream &out,
QDir
::
setCurrent
(
oldDir
);
QDir
::
setCurrent
(
oldDir
);
return
baseName
;
return
baseName
;
}
}
//dotArgs.sprintf("\"%s.dot\" -T%s -o \"%s\"",
// baseName.data(),imgExt.data(),imgName.data());
//if (generateImageMap)
//{
// // run dot also to create an image map
// dotArgs+=QCString(maxCmdLine).sprintf(" -Timap -o \"%s.map\"",
// baseName.data());
//}
//if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
//{
// err("Problems running dot. Check your installation!\n");
// QDir::setCurrent(oldDir);
// return baseName;
//}
checkDotResult
(
imgName
);
checkDotResult
(
imgName
);
}
}
else
if
(
format
==
EPS
)
else
if
(
format
==
EPS
)
...
@@ -2556,15 +2458,6 @@ QCString DotDirDeps::writeGraph(QTextStream &out,
...
@@ -2556,15 +2458,6 @@ QCString DotDirDeps::writeGraph(QTextStream &out,
QDir
::
setCurrent
(
oldDir
);
QDir
::
setCurrent
(
oldDir
);
return
baseName
;
return
baseName
;
}
}
//QCString dotArgs(maxCmdLine);
//dotArgs.sprintf("-Tps \"%s.dot\" -o \"%s.eps\"",
// baseName.data(),baseName.data());
//if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
//{
// err("Problems running dot. Check your installation!\n");
// QDir::setCurrent(oldDir);
// return baseName;
//}
if
(
Config_getBool
(
"USE_PDFLATEX"
))
if
(
Config_getBool
(
"USE_PDFLATEX"
))
{
{
QCString
epstopdfArgs
(
maxCmdLine
);
QCString
epstopdfArgs
(
maxCmdLine
);
...
@@ -2690,14 +2583,6 @@ void generateGraphLegend(const char *path)
...
@@ -2690,14 +2583,6 @@ void generateGraphLegend(const char *path)
QDir
::
setCurrent
(
oldDir
);
QDir
::
setCurrent
(
oldDir
);
return
;
return
;
}
}
//QCString dotArgs(maxCmdLine);
//dotArgs.sprintf("-T%s graph_legend.dot -o %s",imgExt.data(),imgName.data());
//if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
//{
// err("Problems running dot. Check your installation!\n");
// QDir::setCurrent(oldDir);
// return;
//}
checkDotResult
(
imgName
);
checkDotResult
(
imgName
);
QDir
::
setCurrent
(
oldDir
);
QDir
::
setCurrent
(
oldDir
);
}
}
...
@@ -2743,24 +2628,6 @@ void writeDotGraphFromFile(const char *inFile,const char *outDir,
...
@@ -2743,24 +2628,6 @@ void writeDotGraphFromFile(const char *inFile,const char *outDir,
QDir
::
setCurrent
(
oldDir
);
QDir
::
setCurrent
(
oldDir
);
return
;
return
;
}
}
//QCString dotArgs(maxCmdLine);
//if (format==BITMAP)
//{
// dotArgs.sprintf("-T%s \"%s\" -o \"%s\"",
// imgExt.data(),
// inFile,
// imgName.data());
//}
//else // format==EPS
//{
// dotArgs.sprintf("-Tps \"%s\" -o \"%s.eps\"",inFile,outFile);
//}
//QCString dotExe = Config_getString("DOT_PATH")+"dot";
////printf("Running: %s %s\n",dotExe.data(),dotArgs.data());
//if (iSystem(dotExe,dotArgs)!=0)
//{
// err("Problems running dot. Check your installation!\n");
//}
// Added by Nils Strom
// Added by Nils Strom
if
(
(
format
==
EPS
)
&&
(
Config_getBool
(
"USE_PDFLATEX"
))
)
if
(
(
format
==
EPS
)
&&
(
Config_getBool
(
"USE_PDFLATEX"
))
)
{
{
...
@@ -2805,16 +2672,6 @@ QString getDotImageMapFromFile(const QString& inFile, const QString& outDir,
...
@@ -2805,16 +2672,6 @@ QString getDotImageMapFromFile(const QString& inFile, const QString& outDir,
return
""
;
return
""
;
}
}
//QCString dotArgs(maxCmdLine);
//dotArgs.sprintf("-Timap \"%s\" -o \"%s\"", inFile.data(), outFile.data());
//QCString dotExe = Config_getString("DOT_PATH") + "dot";
////printf("Running: %s %s\n",dotExe.data(),dotArgs.data());
//if (iSystem(dotExe,dotArgs)!=0)
//{
// err("Problems running dot. Check your installation!\n");
// QDir::setCurrent(oldDir);
// return "";
//}
QString
result
;
QString
result
;
QTextOStream
tmpout
(
&
result
);
QTextOStream
tmpout
(
&
result
);
convertMapFile
(
tmpout
,
outFile
,
relPath
,
TRUE
);
convertMapFile
(
tmpout
,
outFile
,
relPath
,
TRUE
);
...
@@ -3091,21 +2948,6 @@ QCString DotGroupCollaboration::writeGraph( QTextStream &t, GraphOutputFormat fo
...
@@ -3091,21 +2948,6 @@ QCString DotGroupCollaboration::writeGraph( QTextStream &t, GraphOutputFormat fo
QDir
::
setCurrent
(
oldDir
);
QDir
::
setCurrent
(
oldDir
);
return
baseName
;
return
baseName
;
}
}
//dotArgs.sprintf("\"%s.dot\" -T%s -o \"%s\"",
// baseName.data(), imgExt.data(), imgName.data());
//
//if (writeImageMap)
//{
// // run dot also to create an image map
// dotArgs+=" -Timap -o \""+mapName+"\"";
//}
//
//if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
//{
// err("Error: Problems running dot. Check your installation!\n");
// QDir::setCurrent(oldDir);
// return baseName;
//}
if
(
writeImageMap
)
if
(
writeImageMap
)
{
{
...
@@ -3128,15 +2970,7 @@ QCString DotGroupCollaboration::writeGraph( QTextStream &t, GraphOutputFormat fo
...
@@ -3128,15 +2970,7 @@ QCString DotGroupCollaboration::writeGraph( QTextStream &t, GraphOutputFormat fo
QDir
::
setCurrent
(
oldDir
);
QDir
::
setCurrent
(
oldDir
);
return
baseName
;
return
baseName
;
}
}
//QCString dotArgs(maxCmdLine);
//dotArgs.sprintf("-Tps \"%s.dot\" -o \"%s.eps\"",
// baseName.data(),baseName.data());
//if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
//{
// err("Error: Problems running dot. Check your installation!\n");
// QDir::setCurrent(oldDir);
// return baseName;
//}
if
(
Config_getBool
(
"USE_PDFLATEX"
))
if
(
Config_getBool
(
"USE_PDFLATEX"
))
{
{
QCString
epstopdfArgs
(
maxCmdLine
);
QCString
epstopdfArgs
(
maxCmdLine
);
...
...
src/doxygen.cpp
View file @
ad65c6e2
...
@@ -900,7 +900,7 @@ Definition *buildScopeFromQualifiedName(const QCString name,int level)
...
@@ -900,7 +900,7 @@ Definition *buildScopeFromQualifiedName(const QCString name,int level)
// introduce bogus namespace
// introduce bogus namespace
//printf("adding dummy namespace %s to %s\n",nsName.data(),prevScope->name().data());
//printf("adding dummy namespace %s to %s\n",nsName.data(),prevScope->name().data());
nd
=
new
NamespaceDef
(
nd
=
new
NamespaceDef
(
"
<generated>
"
,
1
,
fullScope
);
"
[generated]
"
,
1
,
fullScope
);
// add namespace to the list
// add namespace to the list
Doxygen
::
namespaceSDict
.
inSort
(
fullScope
,
nd
);
Doxygen
::
namespaceSDict
.
inSort
(
fullScope
,
nd
);
...
@@ -1950,7 +1950,6 @@ static void buildVarList(Entry *root)
...
@@ -1950,7 +1950,6 @@ static void buildVarList(Entry *root)
else
else
mtype
=
MemberDef
::
Variable
;
mtype
=
MemberDef
::
Variable
;
QCString
classScope
=
stripAnonymousNamespaceScope
(
scope
);
QCString
classScope
=
stripAnonymousNamespaceScope
(
scope
);
classScope
=
stripTemplateSpecifiersFromScope
(
classScope
,
FALSE
);
classScope
=
stripTemplateSpecifiersFromScope
(
classScope
,
FALSE
);
QCString
annScopePrefix
=
scope
.
left
(
scope
.
length
()
-
classScope
.
length
());
QCString
annScopePrefix
=
scope
.
left
(
scope
.
length
()
-
classScope
.
length
());
...
@@ -2315,23 +2314,14 @@ static void buildFunctionList(Entry *root)
...
@@ -2315,23 +2314,14 @@ static void buildFunctionList(Entry *root)
QCString
nsName
,
rnsName
;
QCString
nsName
,
rnsName
;
if
(
mnd
)
nsName
=
mnd
->
name
().
copy
();
if
(
mnd
)
nsName
=
mnd
->
name
().
copy
();
if
(
rnd
)
rnsName
=
rnd
->
name
().
copy
();
if
(
rnd
)
rnsName
=
rnd
->
name
().
copy
();
#ifdef NEWMATCH
bool
ambig
;
bool
ambig
;
FileDef
*
rfd
=
findFileDef
(
Doxygen
::
inputNameDict
,
root
->
fileName
,
ambig
);
FileDef
*
rfd
=
findFileDef
(
Doxygen
::
inputNameDict
,
root
->
fileName
,
ambig
);
#else
NamespaceSDict
*
unl
=
mfd
?
mfd
->
getUsedNamespaces
()
:
0
;
SDict
<
Definition
>
*
ucl
=
mfd
?
mfd
->
getUsedClasses
()
:
0
;
#endif
//printf("matching arguments for %s%s %s%s\n",
//printf("matching arguments for %s%s %s%s\n",
// md->name().data(),md->argsString(),rname.data(),argListToString(root->argList).data());
// md->name().data(),md->argsString(),rname.data(),argListToString(root->argList).data());
if
(
if
(
#ifdef NEWMATCH
matchArguments2
(
md
->
getOuterScope
(),
mfd
,
md
->
argumentList
(),
matchArguments2
(
md
->
getOuterScope
(),
mfd
,
md
->
argumentList
(),
rnd
?
rnd
:
Doxygen
::
globalScope
,
rfd
,
root
->
argList
,
rnd
?
rnd
:
Doxygen
::
globalScope
,
rfd
,
root
->
argList
,
FALSE
)
FALSE
)
#else
matchArguments
(
md
->
argumentList
(),
root
->
argList
,
0
,
nsName
,
FALSE
,
unl
,
ucl
)
#endif
)
)
{
{
GroupDef
*
gd
=
0
;
GroupDef
*
gd
=
0
;
...
@@ -2604,23 +2594,12 @@ static void findFriends()
...
@@ -2604,23 +2594,12 @@ static void findFriends()
//printf("Checking for matching arguments
//printf("Checking for matching arguments
// mmd->isRelated()=%d mmd->isFriend()=%d mmd->isFunction()=%d\n",
// mmd->isRelated()=%d mmd->isFriend()=%d mmd->isFunction()=%d\n",
// mmd->isRelated(),mmd->isFriend(),mmd->isFunction());
// mmd->isRelated(),mmd->isFriend(),mmd->isFunction());
#ifndef NEWMATCH
NamespaceDef
*
nd
=
mmd
->
getNamespaceDef
();
#endif
if
((
mmd
->
isFriend
()
||
(
mmd
->
isRelated
()
&&
mmd
->
isFunction
()))
&&
if
((
mmd
->
isFriend
()
||
(
mmd
->
isRelated
()
&&
mmd
->
isFunction
()))
&&
#ifdef NEWMATCH
matchArguments2
(
mmd
->
getOuterScope
(),
mmd
->
getFileDef
(),
mmd
->
argumentList
(),
matchArguments2
(
mmd
->
getOuterScope
(),
mmd
->
getFileDef
(),
mmd
->
argumentList
(),
fmd
->
getOuterScope
(),
fmd
->
getFileDef
(),
fmd
->
argumentList
(),
fmd
->
getOuterScope
(),
fmd
->
getFileDef
(),
fmd
->
argumentList
(),
TRUE
TRUE
)
)
#else
matchArguments
(
mmd
->
argumentList
(),
fmd
->
argumentList
(),
mmd
->
getClassDef
()
->
name
(),
nd
?
nd
->
name
().
data
()
:
0
)
#endif
)
// if the member is related and the arguments match then the
)
// if the member is related and the arguments match then the
// function is actually a friend.
// function is actually a friend.
{
{
...
@@ -2733,14 +2712,10 @@ static void transferFunctionDocumentation()
...
@@ -2733,14 +2712,10 @@ static void transferFunctionDocumentation()
// mdef, mdef ? mdef->name().data() : "",
// mdef, mdef ? mdef->name().data() : "",
// mdec, mdec ? mdec->name().data() : "");
// mdec, mdec ? mdec->name().data() : "");
if
(
mdef
&&
mdec
&&
if
(
mdef
&&
mdec
&&
#ifdef NEWMATCH
matchArguments2
(
mdef
->
getOuterScope
(),
mdef
->
getFileDef
(),
mdef
->
argumentList
(),
matchArguments2
(
mdef
->
getOuterScope
(),
mdef
->
getFileDef
(),
mdef
->
argumentList
(),
mdec
->
getOuterScope
(),
mdec
->
getFileDef
(),
mdec
->
argumentList
(),
mdec
->
getOuterScope
(),
mdec
->
getFileDef
(),
mdec
->
argumentList
(),
TRUE
TRUE
)
)
#else
matchArguments
(
mdef
->
argumentList
(),
mdec
->
argumentList
())
#endif
)
/* match found */
)
/* match found */
{
{
//printf("Found member %s: definition in %s (doc=`%s') and declaration in %s (doc=`%s')\n",
//printf("Found member %s: definition in %s (doc=`%s') and declaration in %s (doc=`%s')\n",
...
@@ -2875,14 +2850,10 @@ static void transferFunctionReferences()
...
@@ -2875,14 +2850,10 @@ static void transferFunctionReferences()
mdef
=
md
;
mdef
=
md
;
}
}
if
(
mdef
&&
mdec
&&
if
(
mdef
&&
mdec
&&
#ifdef NEWMATCH
matchArguments2
(
mdef
->
getOuterScope
(),
mdef
->
getFileDef
(),
mdef
->
argumentList
(),
matchArguments2
(
mdef
->
getOuterScope
(),
mdef
->
getFileDef
(),
mdef
->
argumentList
(),
mdec
->
getOuterScope
(),
mdec
->
getFileDef
(),
mdec
->
argumentList
(),
mdec
->
getOuterScope
(),
mdec
->
getFileDef
(),
mdec
->
argumentList
(),
TRUE
TRUE
)
)
#else
matchArguments
(
mdef
->
argumentList
(),
mdec
->
argumentList
())
#endif
)
/* match found */
)
/* match found */
{
{
MemberSDict
*
defDict
=
mdef
->
getReferencesMembers
();
MemberSDict
*
defDict
=
mdef
->
getReferencesMembers
();
...
@@ -2968,14 +2939,10 @@ static void transferRelatedFunctionDocumentation()
...
@@ -2968,14 +2939,10 @@ static void transferRelatedFunctionDocumentation()
{
{
//printf(" Member found: related=`%d'\n",rmd->isRelated());
//printf(" Member found: related=`%d'\n",rmd->isRelated());
if
(
rmd
->
isRelated
()
&&
// related function
if
(
rmd
->
isRelated
()
&&
// related function
#ifdef NEWMATCH
matchArguments2
(
md
->
getOuterScope
(),
md
->
getFileDef
(),
md
->
argumentList
(),
matchArguments2
(
md
->
getOuterScope
(),
md
->
getFileDef
(),
md
->
argumentList
(),
rmd
->
getOuterScope
(),
rmd
->
getFileDef
(),
rmd
->
argumentList
(),
rmd
->
getOuterScope
(),
rmd
->
getFileDef
(),
rmd
->
argumentList
(),
TRUE
TRUE
)
)
#else
matchArguments
(
md
->
argumentList
(),
rmd
->
argumentList
())
// match argument lists
#endif
)
)
{
{
//printf(" Found related member `%s'\n",md->name().data());
//printf(" Found related member `%s'\n",md->name().data());
...
@@ -4015,9 +3982,6 @@ static void addMemberDocs(Entry *root,
...
@@ -4015,9 +3982,6 @@ static void addMemberDocs(Entry *root,
ArgumentList
*
al
,
ArgumentList
*
al
,
bool
over_load
,
bool
over_load
,
NamespaceSDict
*
NamespaceSDict
*
#ifndef NEWMATCH
nl
#endif
)
)
{
{
//printf("addMemberDocs: `%s'::`%s' `%s' funcDecl=`%s' memSpec=%d\n",
//printf("addMemberDocs: `%s'::`%s' `%s' funcDecl=`%s' memSpec=%d\n",
...
@@ -4040,10 +4004,8 @@ static void addMemberDocs(Entry *root,
...
@@ -4040,10 +4004,8 @@ static void addMemberDocs(Entry *root,
bool
ambig
;
bool
ambig
;
FileDef
*
rfd
=
findFileDef
(
Doxygen
::
inputNameDict
,
root
->
fileName
,
ambig
);
FileDef
*
rfd
=
findFileDef
(
Doxygen
::
inputNameDict
,
root
->
fileName
,
ambig
);
#ifdef NEWMATCH
// TODO determine scope based on root not md
// TODO determine scope based on root not md
Definition
*
rscope
=
md
->
getOuterScope
();
Definition
*
rscope
=
md
->
getOuterScope
();
#endif
if
(
al
)
if
(
al
)
{
{
...
@@ -4053,19 +4015,10 @@ static void addMemberDocs(Entry *root,
...
@@ -4053,19 +4015,10 @@ static void addMemberDocs(Entry *root,
else
else
{
{
if
(
if
(
#ifdef NEWMATCH
matchArguments2
(
md
->
getOuterScope
(),
md
->
getFileDef
(),
md
->
argumentList
(),
matchArguments2
(
md
->
getOuterScope
(),
md
->
getFileDef
(),
md
->
argumentList
(),
rscope
,
rfd
,
root
->
argList
,
rscope
,
rfd
,
root
->
argList
,
TRUE
TRUE
)
)
#else
matchArguments
(
md
->
argumentList
(),
root
->
argList
,
cd
?
cd
->
name
().
data
()
:
0
,
nd
?
nd
->
name
().
data
()
:
0
,
TRUE
,
nl
)
#endif
)
)
{
{
//printf("merging arguments (2)\n");
//printf("merging arguments (2)\n");
...
@@ -4233,7 +4186,7 @@ static bool findGlobalMember(Entry *root,
...
@@ -4233,7 +4186,7 @@ static bool findGlobalMember(Entry *root,
FileDef
*
fd
=
findFileDef
(
Doxygen
::
inputNameDict
,
root
->
fileName
,
ambig
);
FileDef
*
fd
=
findFileDef
(
Doxygen
::
inputNameDict
,
root
->
fileName
,
ambig
);
//printf("File %s\n",fd ? fd->name().data() : "<none>");
//printf("File %s\n",fd ? fd->name().data() : "<none>");
NamespaceSDict
*
nl
=
fd
?
fd
->
getUsedNamespaces
()
:
0
;
NamespaceSDict
*
nl
=
fd
?
fd
->
getUsedNamespaces
()
:
0
;
SDict
<
Definition
>
*
cl
=
fd
?
fd
->
getUsedClasses
()
:
0
;
//
SDict<Definition> *cl = fd ? fd->getUsedClasses() : 0;
//printf("NamespaceList %p\n",nl);
//printf("NamespaceList %p\n",nl);
// search in the list of namespaces that are imported via a
// search in the list of namespaces that are imported via a
...
@@ -4249,21 +4202,15 @@ static bool findGlobalMember(Entry *root,
...
@@ -4249,21 +4202,15 @@ static bool findGlobalMember(Entry *root,
md
->
name
().
data
(),
namespaceName
.
data
());
md
->
name
().
data
(),
namespaceName
.
data
());
QCString
nsName
=
nd
?
nd
->
name
().
data
()
:
""
;
QCString
nsName
=
nd
?
nd
->
name
().
data
()
:
""
;
#ifdef NEW_MATCH
NamespaceDef
*
rnd
=
0
;
NamespaceDef
*
rnd
=
0
;
if
(
!
namespaceName
.
isEmpty
())
rnd
=
Doxygen
::
namespaceSDict
[
namespaceName
];
if
(
!
namespaceName
.
isEmpty
())
rnd
=
Doxygen
::
namespaceSDict
[
namespaceName
];
#endif
bool
matching
=
bool
matching
=
(
md
->
argumentList
()
==
0
&&
root
->
argList
->
count
()
==
0
)
||
(
md
->
argumentList
()
==
0
&&
root
->
argList
->
count
()
==
0
)
||
md
->
isVariable
()
||
md
->
isTypedef
()
||
/* in case of function pointers */
md
->
isVariable
()
||
md
->
isTypedef
()
||
/* in case of function pointers */
#ifdef NEW_MATCH
matchArguments2
(
md
->
getOuterScope
(),
md
->
getFileDef
(),
md
->
argumentList
(),
matchArguments2
(
md
->
getOuterScope
(),
md
->
getFileDef
(),
md
->
argumentList
(),
rnd
?
rnd
:
Doxygen
::
globalScope
,
fd
,
root
->
argList
,
rnd
?
rnd
:
Doxygen
::
globalScope
,
fd
,
root
->
argList
,
FALSE
);
FALSE
);
#else
matchArguments
(
md
->
argumentList
(),
root
->
argList
,
0
,
nsName
,
FALSE
,
nl
,
cl
);
#endif
// for static members we also check if the comment block was found in
// for static members we also check if the comment block was found in
// the same file. This is needed because static members with the same
// the same file. This is needed because static members with the same
...
@@ -4287,7 +4234,7 @@ static bool findGlobalMember(Entry *root,
...
@@ -4287,7 +4234,7 @@ static bool findGlobalMember(Entry *root,
if
(
!
found
&&
!
root
->
relatesDup
)
// no match
if
(
!
found
&&
!
root
->
relatesDup
)
// no match
{
{
QCString
fullFuncDecl
=
decl
;
QCString
fullFuncDecl
=
decl
;
if
(
root
->
argList
)
fullFuncDecl
+=
argListToString
(
root
->
argList
);
if
(
root
->
argList
)
fullFuncDecl
+=
argListToString
(
root
->
argList
,
TRUE
);
warn
(
root
->
fileName
,
root
->
startLine
,
warn
(
root
->
fileName
,
root
->
startLine
,
"Warning: no matching file member found for
\n
%s"
,
fullFuncDecl
.
data
());
"Warning: no matching file member found for
\n
%s"
,
fullFuncDecl
.
data
());
if
(
mn
->
count
()
>
0
)
if
(
mn
->
count
()
>
0
)
...
@@ -4590,10 +4537,14 @@ static void findMember(Entry *root,
...
@@ -4590,10 +4537,14 @@ static void findMember(Entry *root,
{
{
scopeName
=
namespaceName
;
scopeName
=
namespaceName
;
}
}
else
else
if
(
!
getClass
(
className
))
// class name only exists in a namespace
{
{
scopeName
=
namespaceName
+
"::"
+
className
;
scopeName
=
namespaceName
+
"::"
+
className
;
}
}
else
{
scopeName
=
className
;
}
}
}
else
if
(
!
className
.
isEmpty
())
else
if
(
!
className
.
isEmpty
())
{
{
...
@@ -4671,9 +4622,6 @@ static void findMember(Entry *root,
...
@@ -4671,9 +4622,6 @@ static void findMember(Entry *root,
}
}
}
}
QCString
fullFuncDecl
=
funcDecl
.
copy
();
if
(
isFunc
)
fullFuncDecl
+=
argListToString
(
root
->
argList
);
if
(
funcType
==
"template class"
&&
!
funcTempList
.
isEmpty
())
if
(
funcType
==
"template class"
&&
!
funcTempList
.
isEmpty
())
return
;
// ignore explicit template instantiations
return
;
// ignore explicit template instantiations
...
@@ -4809,12 +4757,10 @@ static void findMember(Entry *root,
...
@@ -4809,12 +4757,10 @@ static void findMember(Entry *root,
Debug
::
print
(
Debug
::
FindMembers
,
0
,
Debug
::
print
(
Debug
::
FindMembers
,
0
,
"5. matching `%s'<=>`%s' className=%s namespaceName=%s
\n
"
,
"5. matching `%s'<=>`%s' className=%s namespaceName=%s
\n
"
,
argListToString
(
argList
).
data
(),
argListToString
(
root
->
argList
).
data
(),
argListToString
(
argList
,
TRUE
).
data
(),
argListToString
(
root
->
argList
,
TRUE
).
data
(),
className
.
data
(),
namespaceName
.
data
()
className
.
data
(),
namespaceName
.
data
()
);
);
#ifdef NEWMATCH
bool
matching
=
bool
matching
=
md
->
isVariable
()
||
md
->
isTypedef
()
||
// needed for function pointers
md
->
isVariable
()
||
md
->
isTypedef
()
||
// needed for function pointers
(
md
->
argumentList
()
==
0
&&
root
->
argList
->
count
()
==
0
)
||
(
md
->
argumentList
()
==
0
&&
root
->
argList
->
count
()
==
0
)
||
...
@@ -4846,113 +4792,6 @@ static void findMember(Entry *root,
...
@@ -4846,113 +4792,6 @@ static void findMember(Entry *root,
count
++
;
count
++
;
memFound
=
TRUE
;
memFound
=
TRUE
;
}
}
#else // old matching routine
// TODO: match loop for all possible scopes
// list of namespaces using in the file/namespace that this
// member definition is part of
NamespaceSDict
*
nl
=
new
NamespaceSDict
;
if
(
nd
)
{
NamespaceSDict
*
nnl
=
nd
->
getUsedNamespaces
();
if
(
nnl
)
{
NamespaceDef
*
nnd
;
NamespaceSDict
::
Iterator
nsdi
(
*
nnl
);
for
(
nsdi
.
toFirst
();(
nnd
=
nsdi
.
current
());
++
nsdi
)
{
Debug
::
print
(
Debug
::
FindMembers
,
0
,
" adding used namespace %s
\n
"
,
nnd
->
qualifiedName
().
data
());
nl
->
append
(
nnd
->
qualifiedName
(),
nnd
);
}
}
}
if
(
fd
)
{
NamespaceSDict
*
fnl
=
fd
->
getUsedNamespaces
();
if
(
fnl
)
{
NamespaceDef
*
fnd
;
NamespaceSDict
::
Iterator
nsdi
(
*
fnl
);
for
(
nsdi
.
toFirst
();(
fnd
=
nsdi
.
current
());
++
nsdi
)
{
Debug
::
print
(
Debug
::
FindMembers
,
0
,
" adding used namespace %s
\n
"
,
fnd
->
qualifiedName
().
data
());
nl
->
append
(
fnd
->
qualifiedName
(),
fnd
);
}
}
}
SDict
<
Definition
>
*
cl
=
new
SDict
<
Definition
>
(
17
);
if
(
nd
)
{
SDict
<
Definition
>
*
ncl
=
nd
->
getUsedClasses
();
if
(
ncl
)
{
SDict
<
Definition
>::
Iterator
csdi
(
*
ncl
);
Definition
*
ncd
;
for
(
csdi
.
toFirst
();(
ncd
=
csdi
.
current
());
++
csdi
)
{
Debug
::
print
(
Debug
::
FindMembers
,
0
,
" adding used class %s
\n
"
,
ncd
->
qualifiedName
().
data
());
cl
->
append
(
ncd
->
qualifiedName
(),
ncd
);
}
}
}
if
(
fd
)
{
SDict
<
Definition
>
*
fcl
=
fd
->
getUsedClasses
();
if
(
fcl
)
{
SDict
<
Definition
>::
Iterator
csdi
(
*
fcl
);
Definition
*
fcd
;
for
(
csdi
.
toFirst
();(
fcd
=
csdi
.
current
());
++
csdi
)
{
Debug
::
print
(
Debug
::
FindMembers
,
0
,
" adding used class %s
\n
"
,
fcd
->
qualifiedName
().
data
());
cl
->
append
(
fcd
->
qualifiedName
(),
fcd
);
}
}
}
bool
matching
=
md
->
isVariable
()
||
md
->
isTypedef
()
||
// needed for function pointers
(
md
->
argumentList
()
==
0
&&
root
->
argList
->
count
()
==
0
)
||
matchArguments
(
argList
,
root
->
argList
,
className
,
namespaceName
,
TRUE
,
nl
,
cl
);
Debug
::
print
(
Debug
::
FindMembers
,
0
,
"6. match results = %d
\n
"
,
matching
);
if
(
substDone
)
// found a new argument list
{
//printf("root->tArgList=`%s'\n",argListToString(root->tArgList).data());
if
(
matching
)
// replace member's argument list
{
//printf("Setting scope template argument of member %s to %s\n",
// md->name().data(), argListToString(root->tArgList).data()
// );
//printf("Setting member template argument of member %s to %s\n",
// md->name().data(), argListToString(root->mtArgList).data()
// );
md
->
setDefinitionTemplateParameterLists
(
root
->
tArgLists
);
md
->
setArgumentList
(
argList
);
}
else
// no match -> delete argument list
{
delete
argList
;
}
}
if
(
matching
)
{
//printf("addMemberDocs root->inLine=%d md->isInline()=%d\n",
// root->inLine,md->isInline());
addMemberDocs
(
root
,
md
,
funcDecl
,
0
,
overloaded
,
nl
);
count
++
;
memFound
=
TRUE
;
}
delete
cl
;
delete
nl
;
#endif
}
}
}
}
if
(
count
==
0
&&
root
->
parent
&&
root
->
parent
->
section
==
Entry
::
OBJCIMPL_SEC
)
if
(
count
==
0
&&
root
->
parent
&&
root
->
parent
->
section
==
Entry
::
OBJCIMPL_SEC
)
...
@@ -4998,6 +4837,9 @@ static void findMember(Entry *root,
...
@@ -4998,6 +4837,9 @@ static void findMember(Entry *root,
warn_cont
(
" template %s
\n
"
,
tempArgListToString
(
al
).
data
());
warn_cont
(
" template %s
\n
"
,
tempArgListToString
(
al
).
data
());
}
}
}
}
QCString
fullFuncDecl
=
funcDecl
.
copy
();
if
(
isFunc
)
fullFuncDecl
+=
argListToString
(
root
->
argList
,
TRUE
);
warn_cont
(
" %s
\n
"
,
fullFuncDecl
.
data
());
warn_cont
(
" %s
\n
"
,
fullFuncDecl
.
data
());
if
(
candidates
>
0
)
if
(
candidates
>
0
)
...
@@ -5126,6 +4968,8 @@ static void findMember(Entry *root,
...
@@ -5126,6 +4968,8 @@ static void findMember(Entry *root,
{
{
if
(
!
findGlobalMember
(
root
,
namespaceName
,
funcName
,
funcTempList
,
funcArgs
,
funcDecl
))
if
(
!
findGlobalMember
(
root
,
namespaceName
,
funcName
,
funcTempList
,
funcArgs
,
funcDecl
))
{
{
QCString
fullFuncDecl
=
funcDecl
.
copy
();
if
(
isFunc
)
fullFuncDecl
+=
argListToString
(
root
->
argList
,
TRUE
);
warn
(
root
->
fileName
,
root
->
startLine
,
warn
(
root
->
fileName
,
root
->
startLine
,
"Warning: Cannot determine class for function
\n
%s"
,
"Warning: Cannot determine class for function
\n
%s"
,
fullFuncDecl
.
data
()
fullFuncDecl
.
data
()
...
@@ -5173,13 +5017,9 @@ static void findMember(Entry *root,
...
@@ -5173,13 +5017,9 @@ static void findMember(Entry *root,
{
{
newMember
=
newMember
&&
newMember
=
newMember
&&
#ifdef NEWMATCH
!
matchArguments2
(
rmd
->
getOuterScope
(),
rmd
->
getFileDef
(),
rmd
->
argumentList
(),
!
matchArguments2
(
rmd
->
getOuterScope
(),
rmd
->
getFileDef
(),
rmd
->
argumentList
(),
cd
,
fd
,
root
->
argList
,
cd
,
fd
,
root
->
argList
,
TRUE
);
TRUE
);
#else
!
matchArguments
(
rmd
->
argumentList
(),
root
->
argList
,
className
,
namespaceName
);
#endif
if
(
newMember
)
rmd
=
mn
->
next
();
if
(
newMember
)
rmd
=
mn
->
next
();
}
}
if
(
!
newMember
&&
rmd
)
// member already exists as rmd -> add docs
if
(
!
newMember
&&
rmd
)
// member already exists as rmd -> add docs
...
@@ -5232,16 +5072,9 @@ static void findMember(Entry *root,
...
@@ -5232,16 +5072,9 @@ static void findMember(Entry *root,
{
{
// check for matching argument lists
// check for matching argument lists
if
(
if
(
#ifdef NEWMATCH
matchArguments2
(
rmd
->
getOuterScope
(),
rmd
->
getFileDef
(),
rmd
->
argumentList
(),
matchArguments2
(
rmd
->
getOuterScope
(),
rmd
->
getFileDef
(),
rmd
->
argumentList
(),
cd
,
fd
,
root
->
argList
,
cd
,
fd
,
root
->
argList
,
TRUE
)
TRUE
)
#else
matchArguments
(
rmd
->
argumentList
(),
root
->
argList
,
className
,
namespaceName
)
#endif
)
)
{
{
found
=
TRUE
;
found
=
TRUE
;
...
@@ -5297,6 +5130,8 @@ static void findMember(Entry *root,
...
@@ -5297,6 +5130,8 @@ static void findMember(Entry *root,
{
{
if
(
!
findGlobalMember
(
root
,
namespaceName
,
funcName
,
funcTempList
,
funcArgs
,
funcDecl
))
if
(
!
findGlobalMember
(
root
,
namespaceName
,
funcName
,
funcTempList
,
funcArgs
,
funcDecl
))
{
{
QCString
fullFuncDecl
=
funcDecl
.
copy
();
if
(
isFunc
)
fullFuncDecl
+=
argListToString
(
root
->
argList
,
TRUE
);
warn
(
root
->
fileName
,
root
->
startLine
,
warn
(
root
->
fileName
,
root
->
startLine
,
"Warning: Cannot determine file/namespace for relatedalso function
\n
%s"
,
"Warning: Cannot determine file/namespace for relatedalso function
\n
%s"
,
fullFuncDecl
.
data
()
fullFuncDecl
.
data
()
...
@@ -5980,14 +5815,10 @@ static void computeMemberRelations()
...
@@ -5980,14 +5815,10 @@ static void computeMemberRelations()
// argListToString(md->argumentList()).data()
// argListToString(md->argumentList()).data()
// );
// );
if
(
if
(
#ifdef NEWMATCH
matchArguments2
(
bmd
->
getOuterScope
(),
bmd
->
getFileDef
(),
bmd
->
argumentList
(),
matchArguments2
(
bmd
->
getOuterScope
(),
bmd
->
getFileDef
(),
bmd
->
argumentList
(),
md
->
getOuterScope
(),
md
->
getFileDef
(),
md
->
argumentList
(),
md
->
getOuterScope
(),
md
->
getFileDef
(),
md
->
argumentList
(),
TRUE
TRUE
)
)
#else
matchArguments
(
bmd
->
argumentList
(),
md
->
argumentList
())
#endif
)
)
{
{
//printf(" match found!\n");
//printf(" match found!\n");
...
@@ -7410,7 +7241,7 @@ static void copyAndFilterFile(const char *fileName,BufStr &dest)
...
@@ -7410,7 +7241,7 @@ static void copyAndFilterFile(const char *fileName,BufStr &dest)
}
}
else
else
{
{
QCString
cmd
=
"
\"
"
+
filterName
+
"
\
"
\"
"
+
fileName
+
"
\"
"
;
QCString
cmd
=
filterName
+
"
\"
"
+
fileName
+
"
\"
"
;
FILE
*
f
=
popen
(
cmd
,
"r"
);
FILE
*
f
=
popen
(
cmd
,
"r"
);
if
(
!
f
)
if
(
!
f
)
{
{
...
...
src/doxytag.l
View file @
ad65c6e2
...
@@ -196,6 +196,7 @@ QCString unhtmlify(const char *str)
...
@@ -196,6 +196,7 @@ QCString unhtmlify(const char *str)
if (strncmp(p,"&",5)==0) { result+='&'; p+=5; }
if (strncmp(p,"&",5)==0) { result+='&'; p+=5; }
else if (strncmp(p,"<",4)==0) { result+='<'; p+=4; }
else if (strncmp(p,"<",4)==0) { result+='<'; p+=4; }
else if (strncmp(p,">",4)==0) { result+='>'; p+=4; }
else if (strncmp(p,">",4)==0) { result+='>'; p+=4; }
else if (strncmp(p,""",6)==0) { result+='"'; p+=4; }
else /* should not happen */ { result+='&'; p++; }
else /* should not happen */ { result+='&'; p++; }
}
}
}
}
...
@@ -301,12 +302,13 @@ QCString unhtmlify(const char *str)
...
@@ -301,12 +302,13 @@ QCString unhtmlify(const char *str)
}
}
<Qt3ReadName>.
<Qt3ReadName>.
<Qt3ReadArgs>[ \t]*"(" {
<Qt3ReadArgs>[ \t]*"(" {
memberArgs+=
"("
;
memberArgs+=
'('
;
}
}
<Qt3ReadArgs>"&" { memberArgs+="&"; }
<Qt3ReadArgs>"&" { memberArgs+='&'; }
<Qt3ReadArgs>"<" { memberArgs+="<"; }
<Qt3ReadArgs>"<" { memberArgs+='<'; }
<Qt3ReadArgs>">" { memberArgs+=">"; }
<Qt3ReadArgs>">" { memberArgs+='>'; }
<Qt3ReadArgs>" " { memberArgs+=" "; }
<Qt3ReadArgs>""" { memberArgs+='"'; }
<Qt3ReadArgs>" " { memberArgs+=' '; }
<Qt3ReadArgs>"</h3>" {
<Qt3ReadArgs>"</h3>" {
addMember(memberName,memberRef,memberArgs);
addMember(memberName,memberRef,memberArgs);
memberName.resize(0);
memberName.resize(0);
...
@@ -316,7 +318,7 @@ QCString unhtmlify(const char *str)
...
@@ -316,7 +318,7 @@ QCString unhtmlify(const char *str)
}
}
<Qt3ReadArgs>"<"[^>]+">"
<Qt3ReadArgs>"<"[^>]+">"
<Qt3ReadArgs>")" {
<Qt3ReadArgs>")" {
memberArgs+=
")"
;
memberArgs+=
')'
;
addMember(memberName,memberRef,memberArgs);
addMember(memberName,memberRef,memberArgs);
memberName.resize(0);
memberName.resize(0);
memberRef.resize(0);
memberRef.resize(0);
...
@@ -329,39 +331,42 @@ QCString unhtmlify(const char *str)
...
@@ -329,39 +331,42 @@ QCString unhtmlify(const char *str)
/* --------------------------------------------------- */
/* --------------------------------------------------- */
/* Doxygen class extraction rules */
/* Doxygen class extraction rules */
<Start>"<!-- doxytag: class=
<
" {
<Start>"<!-- doxytag: class=
\"
" {
className.resize(0);
className.resize(0);
BEGIN(DoxClassName);
BEGIN(DoxClassName);
}
}
<DoxClassName>[^&
>
]+ {
<DoxClassName>[^&
"
]+ {
className=yytext;
className=yytext;
addClass(className);
addClass(className);
}
}
<DoxClassName>"<" {
<DoxClassName>"<" {
className+=
"<"
;
className+=
'<'
;
}
}
<DoxClassName>">" {
<DoxClassName>">" {
className+=
">"
;
className+=
'>'
;
}
}
<DoxClassName>"&" {
<DoxClassName>"&" {
className+="&";
className+='&';
}
<DoxClassName>""" {
className+='"';
}
}
<DoxClassName>. {
<DoxClassName>. {
className+=*yytext;
className+=*yytext;
}
}
<DoxClassName>"
>
-->" {
<DoxClassName>"
\"
-->" {
BEGIN(Start);
BEGIN(Start);
}
}
/* --------------------------------------------------- */
/* --------------------------------------------------- */
/* Doxygen inheritance extraction rules */
/* Doxygen inheritance extraction rules */
<Start>"<!-- doxytag: inherits=
<
" {
<Start>"<!-- doxytag: inherits=
\"
" {
bases.clear();
bases.clear();
baseName.resize(0);
baseName.resize(0);
BEGIN(DoxClassBase);
BEGIN(DoxClassBase);
}
}
<DoxClassBase>[^&,
>
]+ {
<DoxClassBase>[^&,
"
]+ {
baseName+=yytext;
baseName+=yytext;
}
}
<DoxClassBase>"," {
<DoxClassBase>"," {
...
@@ -369,18 +374,21 @@ QCString unhtmlify(const char *str)
...
@@ -369,18 +374,21 @@ QCString unhtmlify(const char *str)
baseName.resize(0);
baseName.resize(0);
}
}
<DoxClassBase>"<" {
<DoxClassBase>"<" {
baseName+=
"<"
;
baseName+=
'<'
;
}
}
<DoxClassBase>">" {
<DoxClassBase>">" {
baseName+=
">"
;
baseName+=
'>'
;
}
}
<DoxClassBase>"&" {
<DoxClassBase>"&" {
baseName+="&";
baseName+='&';
}
<DoxClassBase>""" {
baseName+='"';
}
}
<DoxClassBase>. {
<DoxClassBase>. {
baseName+=*yytext;
baseName+=*yytext;
}
}
<DoxClassBase>"
>
-->" {
<DoxClassBase>"
\"
-->" {
bases.append(baseName);
bases.append(baseName);
baseName.resize(0);
baseName.resize(0);
addBases(className);
addBases(className);
...
@@ -390,65 +398,74 @@ QCString unhtmlify(const char *str)
...
@@ -390,65 +398,74 @@ QCString unhtmlify(const char *str)
/* --------------------------------------------------- */
/* --------------------------------------------------- */
/* Doxygen member extraction rules */
/* Doxygen member extraction rules */
<Start>"<!-- doxytag: member=
<
" {
<Start>"<!-- doxytag: member=
\"
" {
memberName.resize(0);
memberName.resize(0);
BEGIN(DoxReadName);
BEGIN(DoxReadName);
}
}
<DoxReadName>[^&
>
]+ {
<DoxReadName>[^&
"
]+ {
memberName+=yytext;
memberName+=yytext;
}
}
<DoxReadName>"<" {
<DoxReadName>"<" {
memberName+=
"<"
;
memberName+=
'<'
;
}
}
<DoxReadName>">" {
<DoxReadName>">" {
memberName+=
">"
;
memberName+=
'>'
;
}
}
<DoxReadName>"&" {
<DoxReadName>"&" {
memberName+="&";
memberName+='&';
}
<DoxReadName>""" {
memberName+='"';
}
}
<DoxReadName>. {
<DoxReadName>. {
memberName+=*yytext;
memberName+=*yytext;
}
}
<DoxReadName>"
> ref=<
" {
<DoxReadName>"
\" ref=\"
" {
memberName=memberName.mid(memberName.find("::")+2);
memberName=memberName.mid(memberName.find("::")+2);
memberRef.resize(0);
memberRef.resize(0);
BEGIN(DoxReadAnchor);
BEGIN(DoxReadAnchor);
}
}
<DoxReadAnchor>[^&
>
]+ {
<DoxReadAnchor>[^&
"
]+ {
memberRef+=yytext;
memberRef+=yytext;
}
}
<DoxReadAnchor>"<" {
<DoxReadAnchor>"<" {
memberRef+=
"<"
;
memberRef+=
'<'
;
}
}
<DoxReadAnchor>">" {
<DoxReadAnchor>">" {
memberRef+=
">"
;
memberRef+=
'>'
;
}
}
<DoxReadAnchor>"&" {
<DoxReadAnchor>"&" {
memberRef+="&";
memberRef+='&';
}
<DoxReadAnchor>""" {
memberRef+='"';
}
}
<DoxReadAnchor>. {
<DoxReadAnchor>. {
memberRef+=*yytext;
memberRef+=*yytext;
}
}
<DoxReadAnchor>"
> args=<
" {
<DoxReadAnchor>"
\" args=\"
" {
memberArgs.resize(0);
memberArgs.resize(0);
BEGIN(DoxReadArgs);
BEGIN(DoxReadArgs);
}
}
<DoxReadArgs>[^&
>
]+ {
<DoxReadArgs>[^&
"
]+ {
memberArgs+=yytext;
memberArgs+=yytext;
}
}
<DoxReadArgs>"<" {
<DoxReadArgs>"<" {
memberArgs+=
"<"
;
memberArgs+=
'<'
;
}
}
<DoxReadArgs>">" {
<DoxReadArgs>">" {
memberArgs+=
">"
;
memberArgs+=
'>'
;
}
}
<DoxReadArgs>"&" {
<DoxReadArgs>"&" {
memberArgs+="&";
memberArgs+='&';
}
<DoxReadArgs>""" {
memberArgs+='"';
}
}
<DoxReadArgs>. {
<DoxReadArgs>. {
memberArgs+=*yytext;
memberArgs+=*yytext;
}
}
<DoxReadArgs>"
>
-->" {
<DoxReadArgs>"
\"
-->" {
addMember(memberName,memberRef,memberArgs);
addMember(memberName,memberRef,memberArgs);
memberName.resize(0);
memberName.resize(0);
memberRef.resize(0);
memberRef.resize(0);
...
@@ -613,10 +630,11 @@ QCString unhtmlify(const char *str)
...
@@ -613,10 +630,11 @@ QCString unhtmlify(const char *str)
else
else
BEGIN( Start );
BEGIN( Start );
}
}
<ReadArgs>"&" { memberArgs+="&"; }
<ReadArgs>"&" { memberArgs+='&'; }
<ReadArgs>"<" { memberArgs+="<"; }
<ReadArgs>"<" { memberArgs+='<'; }
<ReadArgs>">" { memberArgs+=">"; }
<ReadArgs>">" { memberArgs+='>'; }
<ReadArgs>" " { memberArgs+=" "; }
<ReadArgs>""" { memberArgs+='"'; }
<ReadArgs>" " { memberArgs+=' '; }
/*
/*
<ReadArgs>[{}] { // handle enums
<ReadArgs>[{}] { // handle enums
memberArgs.resize(0);
memberArgs.resize(0);
...
...
src/filedef.cpp
View file @
ad65c6e2
...
@@ -686,13 +686,17 @@ void FileDef::addMembersToMemberGroup()
...
@@ -686,13 +686,17 @@ void FileDef::addMembersToMemberGroup()
/*! Adds member definition \a md to the list of all members of this file */
/*! Adds member definition \a md to the list of all members of this file */
void
FileDef
::
insertMember
(
MemberDef
*
md
)
void
FileDef
::
insertMember
(
MemberDef
*
md
)
{
{
//printf("%s:FileDef::insertMember(%s)\n",name().data(),md->name().data());
//printf("%s:FileDef::insertMember(%s (=%p) list has %d elements)\n",
if
(
allMemberList
.
find
(
md
)
!=-
1
)
return
;
// name().data(),md->name().data(),md,allMemberList.count());
if
(
allMemberList
.
findRef
(
md
)
!=-
1
)
{
return
;
}
allMemberList
.
append
(
md
);
allMemberList
.
append
(
md
);
bool
sortBriefDocs
=
Config_getBool
(
"SORT_BRIEF_DOCS"
);
bool
sortBriefDocs
=
Config_getBool
(
"SORT_BRIEF_DOCS"
);
bool
sortMemberDocs
=
Config_getBool
(
"SORT_MEMBER_DOCS"
);
bool
sortMemberDocs
=
Config_getBool
(
"SORT_MEMBER_DOCS"
);
switch
(
md
->
memberType
())
switch
(
md
->
memberType
())
{
{
case
MemberDef
:
:
Variable
:
case
MemberDef
:
:
Variable
:
case
MemberDef
:
:
Property
:
case
MemberDef
:
:
Property
:
...
@@ -1129,7 +1133,7 @@ static void addDirsAsGroups(Directory *root,GroupDef *parent,int level)
...
@@ -1129,7 +1133,7 @@ static void addDirsAsGroups(Directory *root,GroupDef *parent,int level)
GroupDef
*
gd
=
0
;
GroupDef
*
gd
=
0
;
if
(
root
->
kind
()
==
DirEntry
::
Dir
)
if
(
root
->
kind
()
==
DirEntry
::
Dir
)
{
{
gd
=
new
GroupDef
(
"
<generated>
"
,
gd
=
new
GroupDef
(
"
[generated]
"
,
1
,
1
,
root
->
path
(),
// name
root
->
path
(),
// name
root
->
name
()
// title
root
->
name
()
// title
...
...
src/groupdef.cpp
View file @
ad65c6e2
...
@@ -218,14 +218,10 @@ bool GroupDef::insertMember(MemberDef *md,bool docOnly)
...
@@ -218,14 +218,10 @@ bool GroupDef::insertMember(MemberDef *md,bool docOnly)
md
->
getOuterScope
()
->
definitionType
()
==
Definition
::
TypeFile
);
md
->
getOuterScope
()
->
definitionType
()
==
Definition
::
TypeFile
);
if
(
srcMd
->
isFunction
()
&&
md
->
isFunction
()
&&
if
(
srcMd
->
isFunction
()
&&
md
->
isFunction
()
&&
#ifdef NEWMATCH
matchArguments2
(
srcMd
->
getOuterScope
(),
srcMd
->
getFileDef
(),
srcMd
->
argumentList
(),
matchArguments2
(
srcMd
->
getOuterScope
(),
srcMd
->
getFileDef
(),
srcMd
->
argumentList
(),
md
->
getOuterScope
(),
md
->
getFileDef
(),
md
->
argumentList
(),
md
->
getOuterScope
(),
md
->
getFileDef
(),
md
->
argumentList
(),
TRUE
TRUE
)
&&
)
&&
#else
matchArguments
(
srcMd
->
argumentList
(),
md
->
argumentList
())
&&
#endif
sameScope
sameScope
)
)
{
{
...
...
src/htmlgen.cpp
View file @
ad65c6e2
...
@@ -603,9 +603,13 @@ void HtmlGenerator::startDoxyAnchor(const char *,const char *,
...
@@ -603,9 +603,13 @@ void HtmlGenerator::startDoxyAnchor(const char *,const char *,
const
char
*
args
)
const
char
*
args
)
{
{
t
<<
"<a class=
\"
anchor
\"
name=
\"
"
<<
anchor
<<
"
\"
></a>"
;
t
<<
"<a class=
\"
anchor
\"
name=
\"
"
<<
anchor
<<
"
\"
></a>"
;
t
<<
"<!-- doxytag: member=<"
<<
name
<<
"> ref=<"
<<
anchor
<<
"> args=<"
;
t
<<
"<!-- doxytag: member=
\"
"
;
docify
(
name
);
t
<<
"
\"
ref=
\"
"
;
docify
(
anchor
);
t
<<
"
\"
args=
\"
"
;
docify
(
args
);
docify
(
args
);
t
<<
"
>
-->"
;
t
<<
"
\"
-->"
;
}
}
void
HtmlGenerator
::
endDoxyAnchor
(
const
char
*
,
const
char
*
)
void
HtmlGenerator
::
endDoxyAnchor
(
const
char
*
,
const
char
*
)
...
@@ -815,6 +819,7 @@ void HtmlGenerator::docify(const char *str)
...
@@ -815,6 +819,7 @@ void HtmlGenerator::docify(const char *str)
case
'<'
:
t
<<
"<"
;
break
;
case
'<'
:
t
<<
"<"
;
break
;
case
'>'
:
t
<<
">"
;
break
;
case
'>'
:
t
<<
">"
;
break
;
case
'&'
:
t
<<
"&"
;
break
;
case
'&'
:
t
<<
"&"
;
break
;
case
'"'
:
t
<<
"""
;
break
;
case
'\\'
:
case
'\\'
:
if
(
*
p
==
'<'
)
if
(
*
p
==
'<'
)
{
t
<<
"<"
;
p
++
;
}
{
t
<<
"<"
;
p
++
;
}
...
...
src/index.cpp
View file @
ad65c6e2
...
@@ -3101,7 +3101,7 @@ void writeIndex(OutputList &ol)
...
@@ -3101,7 +3101,7 @@ void writeIndex(OutputList &ol)
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
QCString
defFileName
=
QCString
defFileName
=
Doxygen
::
mainPage
?
Doxygen
::
mainPage
->
getDefFileName
().
data
()
:
"
<generated>
"
;
Doxygen
::
mainPage
?
Doxygen
::
mainPage
->
getDefFileName
().
data
()
:
"
[generated]
"
;
int
defLine
=
int
defLine
=
Doxygen
::
mainPage
?
Doxygen
::
mainPage
->
getDefLine
()
:
-
1
;
Doxygen
::
mainPage
?
Doxygen
::
mainPage
->
getDefLine
()
:
-
1
;
...
...
src/index.h
View file @
ad65c6e2
...
@@ -104,7 +104,7 @@ enum ClassMemberHighlight
...
@@ -104,7 +104,7 @@ enum ClassMemberHighlight
CMHL_Properties
,
CMHL_Properties
,
CMHL_Events
,
CMHL_Events
,
CMHL_Related
,
CMHL_Related
,
CMHL_Total
=
CMHL_
Events
+
1
CMHL_Total
=
CMHL_
Related
+
1
};
};
enum
FileMemberHighlight
enum
FileMemberHighlight
...
...
src/memberlist.cpp
View file @
ad65c6e2
...
@@ -315,7 +315,7 @@ void MemberList::writeDeclarations(OutputList &ol,
...
@@ -315,7 +315,7 @@ void MemberList::writeDeclarations(OutputList &ol,
{
{
//printf("subtitle=`%s'\n",subtitle);
//printf("subtitle=`%s'\n",subtitle);
ol
.
startMemberSubtitle
();
ol
.
startMemberSubtitle
();
ol
.
parseDoc
(
"
<generated>
"
,
-
1
,
0
,
0
,
subtitle
,
FALSE
,
FALSE
);
ol
.
parseDoc
(
"
[generated]
"
,
-
1
,
0
,
0
,
subtitle
,
FALSE
,
FALSE
);
ol
.
endMemberSubtitle
();
ol
.
endMemberSubtitle
();
}
}
...
@@ -339,7 +339,7 @@ void MemberList::writeDeclarations(OutputList &ol,
...
@@ -339,7 +339,7 @@ void MemberList::writeDeclarations(OutputList &ol,
{
{
//printf("Member group has docs!\n");
//printf("Member group has docs!\n");
ol
.
startMemberGroupDocs
();
ol
.
startMemberGroupDocs
();
ol
.
parseDoc
(
"
<generated>
"
,
-
1
,
0
,
0
,
mg
->
documentation
()
+
"
\n
"
,
FALSE
,
FALSE
);
ol
.
parseDoc
(
"
[generated]
"
,
-
1
,
0
,
0
,
mg
->
documentation
()
+
"
\n
"
,
FALSE
,
FALSE
);
ol
.
endMemberGroupDocs
();
ol
.
endMemberGroupDocs
();
}
}
ol
.
startMemberGroup
();
ol
.
startMemberGroup
();
...
...
src/pre.l
View file @
ad65c6e2
...
@@ -199,7 +199,7 @@ static FILE *checkAndOpenFile(const QCString &absName)
...
@@ -199,7 +199,7 @@ static FILE *checkAndOpenFile(const QCString &absName)
QCString filterName = getFileFilter(absName);
QCString filterName = getFileFilter(absName);
if (!filterName.isEmpty())
if (!filterName.isEmpty())
{
{
QCString cmd =
"\"" + filterName+"\
" \""+absName+"\"";
QCString cmd =
filterName+
" \""+absName+"\"";
f=popen(cmd,"r");
f=popen(cmd,"r");
if (!f) err("Error: could not execute filter %s\n",cmd.data());
if (!f) err("Error: could not execute filter %s\n",cmd.data());
}
}
...
@@ -2296,7 +2296,7 @@ void preprocessFile(const char *fileName,BufStr &output)
...
@@ -2296,7 +2296,7 @@ void preprocessFile(const char *fileName,BufStr &output)
}
}
else
else
{
{
QCString cmd =
"\"" + inputFilter+"\
" \""+fileName+"\"";
QCString cmd =
inputFilter+
" \""+fileName+"\"";
preYYin = popen(cmd,"r");
preYYin = popen(cmd,"r");
if (!preYYin)
if (!preYYin)
{
{
...
...
src/rtfdocvisitor.cpp
View file @
ad65c6e2
...
@@ -648,8 +648,8 @@ void RTFDocVisitor::visitPost(DocTitle *)
...
@@ -648,8 +648,8 @@ void RTFDocVisitor::visitPost(DocTitle *)
{
{
if
(
m_hide
)
return
;
if
(
m_hide
)
return
;
DBG_RTF
(
"{
\\
comment RTFDocVisitor::visitPost(DocTitle)}
\n
"
);
DBG_RTF
(
"{
\\
comment RTFDocVisitor::visitPost(DocTitle)}
\n
"
);
m_t
<<
"}"
;
// end bold
m_t
<<
"
\\
par"
<<
endl
;
m_t
<<
"
\\
par"
<<
endl
;
m_t
<<
"}"
;
// end bold
incIndentLevel
();
incIndentLevel
();
m_t
<<
rtf_Style_Reset
<<
getStyle
(
"DescContinue"
);
m_t
<<
rtf_Style_Reset
<<
getStyle
(
"DescContinue"
);
m_lastIsPara
=
FALSE
;
m_lastIsPara
=
FALSE
;
...
...
src/scanner.l
View file @
ad65c6e2
...
@@ -3992,8 +3992,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
...
@@ -3992,8 +3992,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
/* ---- Single line comments ------ */
/* ---- Single line comments ------ */
<DocLine>[^\n]*"\n" { // whole line
<DocLine>[^\n]*/"\n" { // whole line
yyLineNr++;
handleCommentBlock(yytext,TRUE);
handleCommentBlock(yytext,TRUE);
BEGIN( docBlockContext );
BEGIN( docBlockContext );
}
}
...
...
src/util.cpp
View file @
ad65c6e2
...
@@ -47,6 +47,7 @@
...
@@ -47,6 +47,7 @@
#include "pagedef.h"
#include "pagedef.h"
#include "debug.h"
#include "debug.h"
#include "searchindex.h"
#include "searchindex.h"
#include "doxygen.h"
#if !defined(_WIN32) || defined(__CYGWIN__)
#if !defined(_WIN32) || defined(__CYGWIN__)
#include <unistd.h>
#include <unistd.h>
...
@@ -599,7 +600,8 @@ int isAccessibleFromWithExpScope(Definition *scope,FileDef *fileScope,Definition
...
@@ -599,7 +600,8 @@ int isAccessibleFromWithExpScope(Definition *scope,FileDef *fileScope,Definition
*
*
* Example: typedef int T; will return 0, since "int" is not a class.
* Example: typedef int T; will return 0, since "int" is not a class.
*/
*/
ClassDef
*
newResolveTypedef
(
FileDef
*
fileScope
,
MemberDef
*
md
,
QCString
*
pTemplSpec
)
static
ClassDef
*
newResolveTypedef
(
FileDef
*
fileScope
,
MemberDef
*
md
,
MemberDef
**
pMemType
,
QCString
*
pTemplSpec
)
{
{
//printf("newResolveTypedef(md=%p,cachedVal=%p)\n",md,md->getCachedTypedefVal());
//printf("newResolveTypedef(md=%p,cachedVal=%p)\n",md,md->getCachedTypedefVal());
bool
isCached
=
md
->
isTypedefValCached
();
// value already cached
bool
isCached
=
md
->
isTypedefValCached
();
// value already cached
...
@@ -631,7 +633,14 @@ ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md,QCString *pTemplSpe
...
@@ -631,7 +633,14 @@ ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md,QCString *pTemplSpe
ClassDef
*
result
=
getResolvedClassRec
(
md
->
getOuterScope
(),
ClassDef
*
result
=
getResolvedClassRec
(
md
->
getOuterScope
(),
fileScope
,
type
,
&
memTypeDef
,
0
);
fileScope
,
type
,
&
memTypeDef
,
0
);
// if type is a typedef than return what it resolves to.
// if type is a typedef than return what it resolves to.
if
(
memTypeDef
)
return
newResolveTypedef
(
fileScope
,
memTypeDef
,
pTemplSpec
);
if
(
memTypeDef
&&
memTypeDef
->
isTypedef
())
{
return
newResolveTypedef
(
fileScope
,
memTypeDef
,
pMemType
,
pTemplSpec
);
}
else
if
(
memTypeDef
&&
memTypeDef
->
isEnumerate
()
&&
pMemType
)
{
*
pMemType
=
memTypeDef
;
}
//printf("type=%s result=%p\n",type.data(),result);
//printf("type=%s result=%p\n",type.data(),result);
if
(
result
==
0
)
if
(
result
==
0
)
...
@@ -1169,7 +1178,8 @@ ClassDef *getResolvedClassRec(Definition *scope,
...
@@ -1169,7 +1178,8 @@ ClassDef *getResolvedClassRec(Definition *scope,
{
{
QCString
spec
;
QCString
spec
;
minDistance
=
distance
;
minDistance
=
distance
;
ClassDef
*
cd
=
newResolveTypedef
(
fileScope
,
md
,
&
spec
);
MemberDef
*
enumType
=
0
;
ClassDef
*
cd
=
newResolveTypedef
(
fileScope
,
md
,
&
enumType
,
&
spec
);
if
(
cd
)
// shouldn't be 0, but could in some weird cases
if
(
cd
)
// shouldn't be 0, but could in some weird cases
{
{
//printf(" bestTypeDef=%p spec=%s\n",md,spec.data());
//printf(" bestTypeDef=%p spec=%s\n",md,spec.data());
...
@@ -1177,6 +1187,22 @@ ClassDef *getResolvedClassRec(Definition *scope,
...
@@ -1177,6 +1187,22 @@ ClassDef *getResolvedClassRec(Definition *scope,
bestTypedef
=
md
;
bestTypedef
=
md
;
bestTemplSpec
=
spec
;
bestTemplSpec
=
spec
;
}
}
else
if
(
enumType
)
{
bestMatch
=
0
;
bestTypedef
=
enumType
;
bestTemplSpec
=
""
;
}
}
}
else
if
(
md
->
isEnumerate
())
{
if
(
distance
<
minDistance
)
{
minDistance
=
distance
;
bestMatch
=
0
;
bestTypedef
=
md
;
bestTemplSpec
=
""
;
}
}
}
}
}
}
...
@@ -1592,7 +1618,7 @@ void writeExample(OutputList &ol,ExampleSDict *ed)
...
@@ -1592,7 +1618,7 @@ void writeExample(OutputList &ol,ExampleSDict *ed)
}
}
QCString
argListToString
(
ArgumentList
*
al
)
QCString
argListToString
(
ArgumentList
*
al
,
bool
useCanonicalType
)
{
{
QCString
result
;
QCString
result
;
if
(
al
==
0
)
return
result
;
if
(
al
==
0
)
return
result
;
...
@@ -1600,7 +1626,9 @@ QCString argListToString(ArgumentList *al)
...
@@ -1600,7 +1626,9 @@ QCString argListToString(ArgumentList *al)
result
+=
"("
;
result
+=
"("
;
while
(
a
)
while
(
a
)
{
{
QCString
type1
=
a
->
type
,
type2
;
QCString
type1
=
useCanonicalType
&&
!
a
->
canType
.
isEmpty
()
?
a
->
canType
:
a
->
type
;
QCString
type2
;
int
i
=
type1
.
find
(
")("
);
// hack to deal with function pointers
int
i
=
type1
.
find
(
")("
);
// hack to deal with function pointers
if
(
i
!=-
1
)
if
(
i
!=-
1
)
{
{
...
@@ -1940,6 +1968,7 @@ int minClassDistance(ClassDef *cd,ClassDef *bcd,int level)
...
@@ -1940,6 +1968,7 @@ int minClassDistance(ClassDef *cd,ClassDef *bcd,int level)
// printf(")");
// printf(")");
//}
//}
#ifndef NEWMATCH
// strip any template specifiers that follow className in string s
// strip any template specifiers that follow className in string s
static
QCString
trimTemplateSpecifiers
(
static
QCString
trimTemplateSpecifiers
(
const
QCString
&
namespaceName
,
const
QCString
&
namespaceName
,
...
@@ -2096,6 +2125,7 @@ static QCString trimScope(const QCString &name,const QCString &s)
...
@@ -2096,6 +2125,7 @@ static QCString trimScope(const QCString &name,const QCString &s)
//printf("trimScope(name=%s,scope=%s)=%s\n",name.data(),s.data(),result.data());
//printf("trimScope(name=%s,scope=%s)=%s\n",name.data(),s.data(),result.data());
return
result
;
return
result
;
}
}
#endif
void
trimBaseClassScope
(
BaseClassList
*
bcl
,
QCString
&
s
,
int
level
=
0
)
void
trimBaseClassScope
(
BaseClassList
*
bcl
,
QCString
&
s
,
int
level
=
0
)
{
{
...
@@ -2256,7 +2286,7 @@ void stripIrrelevantConstVolatile(QCString &s)
...
@@ -2256,7 +2286,7 @@ void stripIrrelevantConstVolatile(QCString &s)
//#define MATCH printf("Match at line %d\n",__LINE__);
//#define MATCH printf("Match at line %d\n",__LINE__);
//#define NOMATCH printf("Nomatch at line %d\n",__LINE__);
//#define NOMATCH printf("Nomatch at line %d\n",__LINE__);
#ifndef NEWMATCH
static
bool
matchArgument
(
const
Argument
*
srcA
,
const
Argument
*
dstA
,
static
bool
matchArgument
(
const
Argument
*
srcA
,
const
Argument
*
dstA
,
const
QCString
&
className
,
const
QCString
&
className
,
const
QCString
&
namespaceName
,
const
QCString
&
namespaceName
,
...
@@ -2628,10 +2658,105 @@ bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl,
...
@@ -2628,10 +2658,105 @@ bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl,
return
TRUE
;
// all arguments match
return
TRUE
;
// all arguments match
}
}
#endif
static
QCString
resolveSymbolName
(
FileDef
*
fs
,
Definition
*
symbol
,
QCString
&
templSpec
)
{
ASSERT
(
symbol
!=
0
);
if
(
symbol
->
definitionType
()
==
Definition
::
TypeMember
&&
((
MemberDef
*
)
symbol
)
->
isTypedef
())
// if symbol is a typedef then try
// to resolve it
{
MemberDef
*
md
=
0
;
ClassDef
*
cd
=
newResolveTypedef
(
fs
,(
MemberDef
*
)
symbol
,
&
md
,
&
templSpec
);
if
(
cd
)
{
return
cd
->
qualifiedNameWithTemplateParameters
();
}
else
if
(
md
)
{
return
md
->
qualifiedName
();
}
}
return
symbol
->
qualifiedName
();
}
static
QCString
getCanonicalTypeForIdentifier
(
Definition
*
d
,
FileDef
*
fs
,
const
QCString
&
word
,
QCString
*
tSpec
)
{
QCString
symName
,
scope
,
result
,
templSpec
;
DefinitionList
*
defList
=
0
;
if
(
tSpec
)
templSpec
=
*
tSpec
;
if
(
word
.
findRev
(
"::"
)
!=-
1
&&
!
(
scope
=
stripScope
(
word
)).
isEmpty
())
{
symName
=
word
.
mid
(
scope
.
length
()
+
2
);
}
else
{
symName
=
word
;
}
if
(
!
symName
.
isEmpty
()
&&
!
templSpec
.
isEmpty
()
&&
(
defList
=
Doxygen
::
symbolMap
->
find
(
symName
+
templSpec
))
&&
defList
->
count
()
==
1
)
// word without scope but with template specs
// is a unique symbol in the symbol map
{
QCString
ts
;
result
=
resolveSymbolName
(
fs
,
defList
->
first
(),
ts
);
*
tSpec
=
""
;
}
else
if
(
!
symName
.
isEmpty
()
&&
(
defList
=
Doxygen
::
symbolMap
->
find
(
symName
))
&&
defList
->
count
()
==
1
)
// word without scope is a
// unique symbol in the symbol map
{
QCString
ts
;
result
=
resolveSymbolName
(
fs
,
defList
->
first
(),
ts
)
+
templSpec
;
}
else
// symbol not unique, try to find the one in the right scope
{
ClassDef
*
cd
=
0
;
MemberDef
*
mType
=
0
;
if
(
!
templSpec
.
isEmpty
())
{
cd
=
getResolvedClass
(
d
,
fs
,
word
+
templSpec
,
&
mType
,
0
,
TRUE
);
if
(
cd
)
*
tSpec
=
""
;
}
if
(
cd
==
0
)
{
cd
=
getResolvedClass
(
d
,
fs
,
word
,
&
mType
,
0
,
TRUE
);
}
//printf(">>>> word '%s' => '%s'\n",(word+templSpec).data(),cd?cd->qualifiedNameWithTemplateParameters().data():"<none>");
if
(
cd
)
// known type
{
result
=
cd
->
qualifiedNameWithTemplateParameters
();
}
else
if
(
mType
&&
mType
->
isEnumerate
())
// an enum
{
result
=
mType
->
qualifiedName
();
}
else
// not known as a class
{
QCString
resolvedType
=
resolveTypeDef
(
d
,
word
);
if
(
resolvedType
.
isEmpty
())
// not known as a typedef either
{
result
=
word
;
}
else
{
result
=
resolvedType
;
}
}
}
return
result
;
}
static
QCString
extractCanonicalType
(
Definition
*
d
,
FileDef
*
fs
,
const
Argument
*
arg
)
static
QCString
extractCanonicalType
(
Definition
*
d
,
FileDef
*
fs
,
const
Argument
*
arg
)
{
{
QCString
type
=
arg
->
type
;
QCString
type
=
arg
->
type
.
stripWhiteSpace
()
;
QCString
name
=
arg
->
name
;
QCString
name
=
arg
->
name
;
//printf("extractCanonicalType(type=%s,name=%s)\n",type.data(),name.data());
//printf("extractCanonicalType(type=%s,name=%s)\n",type.data(),name.data());
if
((
type
==
"const"
||
type
==
"volatile"
)
&&
!
name
.
isEmpty
())
if
((
type
==
"const"
||
type
==
"volatile"
)
&&
!
name
.
isEmpty
())
...
@@ -2655,6 +2780,9 @@ static QCString extractCanonicalType(Definition *d,FileDef *fs,const Argument *a
...
@@ -2655,6 +2780,9 @@ static QCString extractCanonicalType(Definition *d,FileDef *fs,const Argument *a
type
.
stripPrefix
(
"enum "
);
type
.
stripPrefix
(
"enum "
);
type
.
stripPrefix
(
"typename "
);
type
.
stripPrefix
(
"typename "
);
type
=
removeRedundantWhiteSpace
(
type
);
//printf("extractCanonicalTyp2(type=%s,name=%s)\n",type.data(),name.data());
static
QRegExp
id
(
"[a-z_A-Z][:a-z_A-Z0-9]*"
);
static
QRegExp
id
(
"[a-z_A-Z][:a-z_A-Z0-9]*"
);
QCString
canType
,
templSpec
,
word
;
QCString
canType
,
templSpec
,
word
;
...
@@ -2664,41 +2792,24 @@ static QCString extractCanonicalType(Definition *d,FileDef *fs,const Argument *a
...
@@ -2664,41 +2792,24 @@ static QCString extractCanonicalType(Definition *d,FileDef *fs,const Argument *a
{
{
//printf(" i=%d p=%d\n",i,p);
//printf(" i=%d p=%d\n",i,p);
canType
+=
type
.
mid
(
pp
,
i
-
pp
);
canType
+=
type
.
mid
(
pp
,
i
-
pp
);
ClassDef
*
cd
=
0
;
if
(
!
templSpec
.
isEmpty
())
canType
+=
getCanonicalTypeForIdentifier
(
d
,
fs
,
word
,
&
templSpec
);
{
if
(
!
templSpec
.
isEmpty
())
// if we didn't use up the templSpec already
cd
=
getResolvedClass
(
d
,
fs
,
word
+
templSpec
,
0
,
0
,
TRUE
);
// (i.e. type is not a template specialization)
}
// then resolve any identifiers inside.
if
(
cd
==
0
)
{
cd
=
getResolvedClass
(
d
,
fs
,
word
,
0
,
0
,
TRUE
);
}
//printf(">>>> word '%s' => '%s'\n",(word+templSpec).data(),cd?cd->qualifiedNameWithTemplateParameters().data():"<none>");
if
(
cd
)
{
canType
+=
cd
->
qualifiedNameWithTemplateParameters
();
}
else
{
QCString
resolvedType
=
resolveTypeDef
(
d
,
word
);
if
(
resolvedType
.
isEmpty
())
{
{
//int i=word.findRev("::");
static
QRegExp
re
(
"[a-z_A-Z][a-z_A-Z0-9]*"
);
//if (i!=-1) // strip scope if it cannot be resolved anyway
int
p
=
0
,
l
,
i
;
// // TODO is this robust enough?
// for each identifier template specifier
//{
while
((
i
=
re
.
match
(
templSpec
,
p
,
&
l
))
!=-
1
)
// canType+=word.mid(i+2);
//}
//else
//{
canType
+=
word
+
templSpec
;
//}
}
else
{
{
canType
+=
resolvedType
;
canType
+=
templSpec
.
mid
(
p
,
i
-
p
);
canType
+=
getCanonicalTypeForIdentifier
(
d
,
fs
,
word
,
0
);
p
=
i
+
l
;
}
}
canType
+=
templSpec
.
right
(
templSpec
.
length
()
-
p
);
}
}
pp
=
p
;
pp
=
p
;
}
}
canType
+=
type
.
right
(
type
.
length
()
-
pp
);
canType
+=
type
.
right
(
type
.
length
()
-
pp
);
...
@@ -3035,6 +3146,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
...
@@ -3035,6 +3146,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
//printf("mScope=`%s' mName=`%s'\n",mScope.data(),mName.data());
//printf("mScope=`%s' mName=`%s'\n",mScope.data(),mName.data());
MemberName
*
mn
=
Doxygen
::
memberNameSDict
[
mName
];
MemberName
*
mn
=
Doxygen
::
memberNameSDict
[
mName
];
//printf("mName=%s mn=%p\n",mName.data(),mn);
if
(
!
forceEmptyScope
&&
mn
&&
!
(
scopeName
.
isEmpty
()
&&
mScope
.
isEmpty
()))
if
(
!
forceEmptyScope
&&
mn
&&
!
(
scopeName
.
isEmpty
()
&&
mScope
.
isEmpty
()))
{
{
//printf(" >member name found\n");
//printf(" >member name found\n");
...
@@ -3073,14 +3185,10 @@ bool getDefs(const QCString &scName,const QCString &memberName,
...
@@ -3073,14 +3185,10 @@ bool getDefs(const QCString &scName,const QCString &memberName,
//if (mmd->isLinkable())
//if (mmd->isLinkable())
//{
//{
bool
match
=
args
==
0
||
bool
match
=
args
==
0
||
#ifdef NEW_MATCH
matchArguments2
(
mmd
->
getOuterScope
(),
mmd
->
getFileDef
(),
mmd
->
argumentList
(),
matchArguments2
(
mmd
->
getOuterScope
(),
md
->
getFileDef
(),
md
->
argumentList
(),
fcd
,
fcd
->
getFileDef
(),
argList
,
fcd
,
fcd
->
getFileDef
(),
argList
,
checkCV
checkCV
);
);
#else
matchArguments
(
mmd
->
argumentList
(),
argList
,
className
,
0
,
checkCV
);
#endif
//printf("match=%d\n",match);
//printf("match=%d\n",match);
if
(
match
)
if
(
match
)
{
{
...
@@ -3193,15 +3301,10 @@ bool getDefs(const QCString &scName,const QCString &memberName,
...
@@ -3193,15 +3301,10 @@ bool getDefs(const QCString &scName,const QCString &memberName,
{
{
argList
=
new
ArgumentList
;
argList
=
new
ArgumentList
;
stringToArgumentList
(
args
,
argList
);
stringToArgumentList
(
args
,
argList
);
#ifdef NEW_MATCH
match
=
matchArguments2
(
match
=
matchArguments2
(
mmd
->
getOuterScope
(),
mmd
->
getFileDef
(),
mmd
->
argumentList
(),
mmd
->
getOuterScope
(),
mmd
->
getFileDef
(),
mmd
->
argumentList
(),
fnd
,
mmd
->
getFileDef
(),
argList
,
fnd
,
mmd
->
getFileDef
(),
argList
,
checkCV
);
checkCV
);
#else
match
=
matchArguments
(
mmd
->
argumentList
(),
argList
,
0
,
namespaceName
,
checkCV
);
#endif
}
}
if
(
match
)
if
(
match
)
{
{
...
@@ -3280,14 +3383,10 @@ bool getDefs(const QCString &scName,const QCString &memberName,
...
@@ -3280,14 +3383,10 @@ bool getDefs(const QCString &scName,const QCString &memberName,
{
{
argList
=
new
ArgumentList
;
argList
=
new
ArgumentList
;
stringToArgumentList
(
args
,
argList
);
stringToArgumentList
(
args
,
argList
);
#ifdef NEW_MATCH
match
=
matchArguments2
(
match
=
matchArguments2
(
md
->
getOuterScope
(),
fd
,
md
->
argumentList
(),
md
->
getOuterScope
(),
fd
,
md
->
argumentList
(),
Doxygen
::
globalScope
,
fd
,
argList
,
Doxygen
::
globalScope
,
fd
,
argList
,
checkCV
);
checkCV
);
#else
match
=
matchArguments
(
md
->
argumentList
(),
argList
,
0
,
0
,
checkCV
);
#endif
delete
argList
;
argList
=
0
;
delete
argList
;
argList
=
0
;
}
}
if
(
match
)
if
(
match
)
...
...
src/util.h
View file @
ad65c6e2
...
@@ -129,10 +129,12 @@ void generateFileRef(OutputDocInterface &od,const char *,
...
@@ -129,10 +129,12 @@ void generateFileRef(OutputDocInterface &od,const char *,
const
char
*
linkTxt
=
0
);
const
char
*
linkTxt
=
0
);
void
writePageRef
(
OutputDocInterface
&
od
,
const
char
*
cn
,
const
char
*
mn
);
void
writePageRef
(
OutputDocInterface
&
od
,
const
char
*
cn
,
const
char
*
mn
);
#if 0
bool matchArguments(ArgumentList *,ArgumentList *,
bool matchArguments(ArgumentList *,ArgumentList *,
const char *cl=0,const char *ns=0,bool checkCV=TRUE,
const char *cl=0,const char *ns=0,bool checkCV=TRUE,
NamespaceSDict *usingNamespaces=0,
NamespaceSDict *usingNamespaces=0,
SDict<Definition> *usingClasses=0);
SDict<Definition> *usingClasses=0);
#endif
bool
matchArguments2
(
Definition
*
srcScope
,
FileDef
*
srcFileScope
,
ArgumentList
*
srcAl
,
bool
matchArguments2
(
Definition
*
srcScope
,
FileDef
*
srcFileScope
,
ArgumentList
*
srcAl
,
Definition
*
dstScope
,
FileDef
*
dstFileScope
,
ArgumentList
*
dstAl
,
Definition
*
dstScope
,
FileDef
*
dstFileScope
,
ArgumentList
*
dstAl
,
bool
checkCV
bool
checkCV
...
@@ -155,7 +157,7 @@ QCString showFileDefMatches(const FileNameDict *fnDict,const char *n);
...
@@ -155,7 +157,7 @@ QCString showFileDefMatches(const FileNameDict *fnDict,const char *n);
int
guessSection
(
const
char
*
name
);
int
guessSection
(
const
char
*
name
);
bool
isId
(
char
c
);
bool
isId
(
char
c
);
QCString
removeRedundantWhiteSpace
(
const
QCString
&
s
);
QCString
removeRedundantWhiteSpace
(
const
QCString
&
s
);
QCString
argListToString
(
ArgumentList
*
al
);
QCString
argListToString
(
ArgumentList
*
al
,
bool
useCanonicalType
=
FALSE
);
QCString
tempArgListToString
(
ArgumentList
*
al
);
QCString
tempArgListToString
(
ArgumentList
*
al
);
QCString
generateMarker
(
int
id
);
QCString
generateMarker
(
int
id
);
void
writeExample
(
OutputList
&
ol
,
ExampleSDict
*
el
);
void
writeExample
(
OutputList
&
ol
,
ExampleSDict
*
el
);
...
...
src/xmlgen.cpp
View file @
ad65c6e2
...
@@ -594,9 +594,9 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
...
@@ -594,9 +594,9 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
if
(
md
->
memberType
()
==
MemberDef
::
Variable
)
if
(
md
->
memberType
()
==
MemberDef
::
Variable
)
{
{
ArgumentList
*
al
=
md
->
argumentList
();
//
ArgumentList *al = md->argumentList();
t
<<
" volatile=
\"
"
;
//
t << " volatile=\"";
if
(
al
&&
al
->
volatileSpecifier
)
t
<<
"yes"
;
else
t
<<
"no"
;
//
if (al && al->volatileSpecifier) t << "yes"; else t << "no";
t
<<
"
\"
mutable=
\"
"
;
t
<<
"
\"
mutable=
\"
"
;
if
(
md
->
isMutable
())
t
<<
"yes"
;
else
t
<<
"no"
;
if
(
md
->
isMutable
())
t
<<
"yes"
;
else
t
<<
"no"
;
...
@@ -723,7 +723,14 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
...
@@ -723,7 +723,14 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
}
}
}
}
else
if
(
md
->
memberType
()
==
MemberDef
::
Define
&&
else
if
(
md
->
memberType
()
==
MemberDef
::
Define
&&
md
->
argsString
()
!=
0
)
// define
md
->
argsString
())
// define
{
if
(
md
->
argumentList
()
->
count
()
==
0
)
// special case for "foo()" to
// disguish it from "foo".
{
t
<<
" <param></param>"
<<
endl
;
}
else
{
{
ArgumentListIterator
ali
(
*
md
->
argumentList
());
ArgumentListIterator
ali
(
*
md
->
argumentList
());
Argument
*
a
;
Argument
*
a
;
...
@@ -732,6 +739,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
...
@@ -732,6 +739,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
t
<<
" <param><defname>"
<<
a
->
type
<<
"</defname></param>"
<<
endl
;
t
<<
" <param><defname>"
<<
a
->
type
<<
"</defname></param>"
<<
endl
;
}
}
}
}
}
// avoid that extremely large tables are written to the output.
// avoid that extremely large tables are written to the output.
// todo: it's better to adhere to MAX_INITIALIZER_LINES.
// todo: it's better to adhere to MAX_INITIALIZER_LINES.
if
(
!
md
->
initializer
().
isEmpty
()
&&
md
->
initializer
().
length
()
<
2000
)
if
(
!
md
->
initializer
().
isEmpty
()
&&
md
->
initializer
().
length
()
<
2000
)
...
...
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