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
161d3860
Commit
161d3860
authored
Oct 10, 2004
by
dimitri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.3.9.1
parent
deb9b8d4
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
269 additions
and
141 deletions
+269
-141
Doxyfile
Doxyfile
+0
-1
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
faq.doc
doc/faq.doc
+17
-4
translator.py
doc/translator.py
+25
-26
translator_report.txt
doc/translator_report.txt
+19
-0
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
code.l
src/code.l
+29
-9
definition.cpp
src/definition.cpp
+3
-1
doxygen.cpp
src/doxygen.cpp
+53
-38
htmlgen.cpp
src/htmlgen.cpp
+2
-2
namespacedef.cpp
src/namespacedef.cpp
+19
-4
namespacedef.h
src/namespacedef.h
+2
-1
pre.l
src/pre.l
+7
-0
tagreader.cpp
src/tagreader.cpp
+52
-29
util.cpp
src/util.cpp
+25
-20
Doxygen.dsp
wintools/Doxygen.dsp
+10
-0
No files found.
Doxyfile
View file @
161d3860
...
@@ -83,7 +83,6 @@ EXCLUDE = src/code.cpp \
...
@@ -83,7 +83,6 @@ EXCLUDE = src/code.cpp \
src/tag.cpp \
src/tag.cpp \
src/doctokenizer.cpp \
src/doctokenizer.cpp \
src/logos.cpp \
src/logos.cpp \
src/doxysearch.cpp \
src/suffixtree.cpp \
src/suffixtree.cpp \
src/suffixtree.h \
src/suffixtree.h \
src/searchindex.cpp \
src/searchindex.cpp \
...
...
INSTALL
View file @
161d3860
DOXYGEN Version 1.3.9
DOXYGEN Version 1.3.9
.1
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 (
05
October 2004)
Dimitri van Heesch (
10
October 2004)
README
View file @
161d3860
DOXYGEN Version 1.3.9
DOXYGEN Version 1.3.9
.1
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) (
05
October 2004)
Dimitri van Heesch (dimitri@stack.nl) (
10
October 2004)
VERSION
View file @
161d3860
1.3.9
1.3.9
.1
doc/faq.doc
View file @
161d3860
...
@@ -211,11 +211,11 @@ If you don't mind spending some time on it, there are several options:
...
@@ -211,11 +211,11 @@ If you don't mind spending some time on it, there are several options:
"input buffer overflow, can't enlarge buffer because scanner uses REJECT"</b>
"input buffer overflow, can't enlarge buffer because scanner uses REJECT"</b>
This error happens when doxygen lexical scanner has a rule that matches
This error happens when doxygen lexical scanner has a rule that matches
more than
1
6K of input characters in one go. I've seen this happening
more than
25
6K of input characters in one go. I've seen this happening
on a very large generated file (\>
1
6K lines), where the built-in preprocessor
on a very large generated file (\>
25
6K lines), where the built-in preprocessor
converted it into an empty file (with \>
1
6K of newlines). Another case
converted it into an empty file (with \>
25
6K of newlines). Another case
where this might happen is if you have lines in your code with more than
where this might happen is if you have lines in your code with more than
1
6K characters.
25
6K characters.
If you have run into such a case and want me to fix it, you
If you have run into such a case and want me to fix it, you
should send me a code fragment that triggers the message. To work around
should send me a code fragment that triggers the message. To work around
...
@@ -263,6 +263,19 @@ namespace std {
...
@@ -263,6 +263,19 @@ namespace std {
I'm still looking for someone who can provide me with definitions
I'm still looking for someone who can provide me with definitions
for all (relevant) STL classes.
for all (relevant) STL classes.
<li><b>Can I configure doxygen from the command line?</b>
Not via command line options, but doxygen can read from <code>stdin</code>,
so you can pipe things through it. Here's an example how to override an option
in a configuration file from the command line (assuming a unix environment):
\verbatim
( cat Doxyfile ; echo "PROJECT_NUMBER=1.0" ) | doxygen -
\endverbatim
If multiple options with the same name are specified then doxygen will use
the last one. To append to an existing option you can use the += operator.
<li><b>How did doxygen get its name?</b>
<li><b>How did doxygen get its name?</b>
Doxygen got its name from playing with the words
Doxygen got its name from playing with the words
...
...
doc/translator.py
View file @
161d3860
...
@@ -10,7 +10,7 @@
...
@@ -10,7 +10,7 @@
translator report only for some languages, pass their codes as arguments
translator report only for some languages, pass their codes as arguments
to the script. In that case, the language.doc will not be generated.
to the script. In that case, the language.doc will not be generated.
Example:
Example:
python translator.py en nl cz
python translator.py en nl cz
Originally, the script was written in Perl and was known as translator.pl.
Originally, the script was written in Perl and was known as translator.pl.
...
@@ -44,6 +44,7 @@
...
@@ -44,6 +44,7 @@
explicitly via script arguments.
explicitly via script arguments.
2004/07/26 - Better reporting of not-needed adapters.
2004/07/26 - Better reporting of not-needed adapters.
2004/10/04 - Reporting of not called translator methods added.
2004/10/04 - Reporting of not called translator methods added.
2004/10/05 - Modified to check only doxygen/src sources for the previous report.
"""
"""
from
__future__
import
generators
from
__future__
import
generators
...
@@ -1204,7 +1205,7 @@ class TrManager:
...
@@ -1204,7 +1205,7 @@ class TrManager:
# script, of the translator.h, of the translator_adapter.h (see the
# script, of the translator.h, of the translator_adapter.h (see the
# self.__build() for the last two) of all the translator_xx.h files
# self.__build() for the last two) of all the translator_xx.h files
# and of the template for generating the documentation. So, this
# and of the template for generating the documentation. So, this
# time can compared with modification time of the generated
# time can
be
compared with modification time of the generated
# documentation to decide, whether the doc should be re-generated.
# documentation to decide, whether the doc should be re-generated.
self
.
lastModificationTime
=
os
.
path
.
getmtime
(
self
.
script
)
self
.
lastModificationTime
=
os
.
path
.
getmtime
(
self
.
script
)
...
@@ -1361,26 +1362,24 @@ class TrManager:
...
@@ -1361,26 +1362,24 @@ class TrManager:
def
__getNoTrSourceFilesLst
(
self
):
def
__getNoTrSourceFilesLst
(
self
):
"""Returns the list of sources to be checked.
"""Returns the list of sources to be checked.
All .cpp files and also .h files that do not declare
and
define
All .cpp files and also .h files that do not declare
or
define
the translator methods are included in the list. The file names
the translator methods are included in the list. The file names
are searched in doxygen
directory recursively."""
are searched in doxygen
/src directory.
lst
=
[]
"""
for
path
,
dirs
,
files
in
os
.
walk
(
self
.
doxy_path
):
srcdir
=
os
.
path
.
join
(
self
.
doxy_path
,
'src'
)
files
=
[]
# Files in doxygen/src should be processed first.
for
item
in
os
.
listdir
(
srcdir
):
if
path
==
self
.
doxy_path
:
# Split the bare name to get the extension.
dirs
.
remove
(
'src'
)
name
,
ext
=
os
.
path
.
splitext
(
item
)
dirs
.
insert
(
0
,
'src'
)
ext
=
ext
.
lower
(
)
# Search for names with .cpp extension (case independent)
# Include only .cpp and .h files (case independent) and exclude
# and append them to the output list.
# the files where the checked identifiers are defined.
for
fname
in
files
:
if
ext
==
'.cpp'
or
(
ext
==
'.h'
and
name
.
find
(
'translator'
)
==
-
1
):
name
,
ext
=
os
.
path
.
splitext
(
fname
)
fname
=
os
.
path
.
join
(
srcdir
,
item
)
ext
=
ext
.
lower
()
assert
os
.
path
.
isfile
(
fname
)
# assumes no directory with the ext
if
ext
==
'.cpp'
or
(
ext
==
'.h'
and
name
.
find
(
'translator'
)
==
-
1
):
files
.
append
(
fname
)
# full name
lst
.
append
(
os
.
path
.
join
(
path
,
fname
))
return
files
return
lst
def
__removeUsedInFiles
(
self
,
fname
,
dic
):
def
__removeUsedInFiles
(
self
,
fname
,
dic
):
...
@@ -1562,12 +1561,12 @@ class TrManager:
...
@@ -1562,12 +1561,12 @@ class TrManager:
if
not
self
.
script_argLst
:
if
not
self
.
script_argLst
:
dic
=
self
.
__checkForNotUsedTrMethods
()
dic
=
self
.
__checkForNotUsedTrMethods
()
if
dic
:
if
dic
:
s
=
'''WARNING
FOR DEVELOPERS: The following translator
s
=
'''WARNING
: The following translator methods are declared
methods are declared in the Translator class but thei
r
in the Translator class but their identifiers do not appea
r
i
dentifiers do not appear in source files. The situation
i
n source files. The situation should be checked. The .cpp
should be checked. The .cpp files and .h files excluding
files and .h files excluding the '*translator*' files
the 'translator*.h' files were simply searched for
in doxygen/src directory were simply searched for occurence
o
ccurence o
f the method identifiers:'''
of the method identifiers:'''
f
.
write
(
'
\n
'
+
'='
*
70
+
'
\n
'
)
f
.
write
(
'
\n
'
+
'='
*
70
+
'
\n
'
)
f
.
write
(
fill
(
s
)
+
'
\n\n
'
)
f
.
write
(
fill
(
s
)
+
'
\n\n
'
)
...
...
doc/translator_report.txt
View file @
161d3860
...
@@ -64,6 +64,25 @@ version of the translator for the language:
...
@@ -64,6 +64,25 @@ version of the translator for the language:
TranslatorJapaneseEn implements 5 methods
TranslatorJapaneseEn implements 5 methods
TranslatorKoreanEn implements 5 methods
TranslatorKoreanEn implements 5 methods
======================================================================
WARNING: The following translator methods are declared in the
Translator class but their identifiers do not appear in source files.
The situation should be checked. The .cpp files and .h files excluding
the '*translator*' files in doxygen/src directory were simply searched
for occurence of the method identifiers:
QCString trBugsAndLimitations()
QCString trEnumerationValueDocumentation()
QCString trField(bool, bool)
QCString trHeaderFiles()
QCString trHeaderFilesDescription()
QCString trInterfaces()
QCString trNoDescriptionAvailable()
QCString trPackageDocumentation()
QCString trReimplementedForInternalReasons()
QCString trSources()
======================================================================
======================================================================
Details for translators (classes sorted alphabetically):
Details for translators (classes sorted alphabetically):
...
...
packages/rpm/doxygen.spec
View file @
161d3860
Summary: A documentation system for C/C++.
Summary: A documentation system for C/C++.
Name: doxygen
Name: doxygen
Version: 1.3.9
Version: 1.3.9
.1
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/code.l
View file @
161d3860
...
@@ -843,18 +843,18 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
...
@@ -843,18 +843,18 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
}
}
}
}
static bool getLink(const char *className,
static bool getLinkInScope(const QCString &c, // scope
const char *memberName,
const QCString &m, // member
BaseCodeDocInterface &ol,
const char *memberText, // exact text
const char *text=0)
BaseCodeDocInterface &ol,
const char *text
)
{
{
MemberDef *md;
MemberDef *md;
ClassDef *cd;
ClassDef *cd;
FileDef *fd;
FileDef *fd;
NamespaceDef *nd;
NamespaceDef *nd;
GroupDef *gd;
GroupDef *gd;
QCString m=removeRedundantWhiteSpace(memberName);
QCString c=className;
//printf("Trying `%s'::`%s'\n",c.data(),m.data());
//printf("Trying `%s'::`%s'\n",c.data(),m.data());
if (getDefs(c,m,"()",md,cd,fd,nd,gd,FALSE,g_sourceFileDef) &&
if (getDefs(c,m,"()",md,cd,fd,nd,gd,FALSE,g_sourceFileDef) &&
md->isLinkable())
md->isLinkable())
...
@@ -894,14 +894,34 @@ static bool getLink(const char *className,
...
@@ -894,14 +894,34 @@ static bool getLink(const char *className,
writeMultiLineCodeLink(ol,md->getReference(),
writeMultiLineCodeLink(ol,md->getReference(),
md->getOutputFileBase(),
md->getOutputFileBase(),
md->anchor(),
md->anchor(),
text ? text : member
Name
);
text ? text : member
Text
);
addToSearchIndex(text ? text : member
Name
);
addToSearchIndex(text ? text : member
Text
);
return TRUE;
return TRUE;
}
}
}
}
return FALSE;
return FALSE;
}
}
static bool getLink(const char *className,
const char *memberName,
BaseCodeDocInterface &ol,
const char *text=0)
{
QCString m=removeRedundantWhiteSpace(memberName);
QCString c=className;
if (!getLinkInScope(c,m,memberName,ol,text))
{
if (!g_curClassName.isEmpty())
{
if (!c.isEmpty()) c.prepend("::");
c.prepend(g_curClassName);
return getLinkInScope(c,m,memberName,ol,text);
}
return FALSE;
}
return TRUE;
}
static bool generateClassMemberLink(BaseCodeDocInterface &ol,ClassDef *mcd,const char *memName)
static bool generateClassMemberLink(BaseCodeDocInterface &ol,ClassDef *mcd,const char *memName)
{
{
if (mcd)
if (mcd)
...
@@ -1761,7 +1781,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
...
@@ -1761,7 +1781,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
BEGIN( Body );
BEGIN( Body );
}
}
<ClassName,ClassVar>[*&]+ {
<ClassName,ClassVar>[*&]+ {
g_type=g_curClassName;
g_type=g_curClassName
.copy()
;
g_name.resize(0);
g_name.resize(0);
g_code->codify(yytext);
g_code->codify(yytext);
BEGIN( Body ); // variable of type struct *
BEGIN( Body ); // variable of type struct *
...
...
src/definition.cpp
View file @
161d3860
...
@@ -164,7 +164,9 @@ void Definition::writeDocAnchorsToTagFile()
...
@@ -164,7 +164,9 @@ void Definition::writeDocAnchorsToTagFile()
{
{
//printf("write an entry!\n");
//printf("write an entry!\n");
if
(
definitionType
()
==
TypeMember
)
Doxygen
::
tagFile
<<
" "
;
if
(
definitionType
()
==
TypeMember
)
Doxygen
::
tagFile
<<
" "
;
Doxygen
::
tagFile
<<
" <docanchor>"
<<
si
->
label
<<
"</docanchor>"
<<
endl
;
Doxygen
::
tagFile
<<
" <docanchor file=
\"
"
<<
si
->
fileName
<<
"
\"
>"
<<
si
->
label
<<
"</docanchor>"
<<
endl
;
}
}
}
}
}
}
...
...
src/doxygen.cpp
View file @
161d3860
...
@@ -1021,11 +1021,13 @@ static void buildNamespaceList(Entry *root)
...
@@ -1021,11 +1021,13 @@ static void buildNamespaceList(Entry *root)
else
// fresh namespace
else
// fresh namespace
{
{
QCString
tagName
;
QCString
tagName
;
QCString
tagFileName
;
if
(
root
->
tagInfo
)
if
(
root
->
tagInfo
)
{
{
tagName
=
root
->
tagInfo
->
tagName
;
tagName
=
root
->
tagInfo
->
tagName
;
tagFileName
=
root
->
tagInfo
->
fileName
;
}
}
NamespaceDef
*
nd
=
new
NamespaceDef
(
root
->
fileName
,
root
->
startLine
,
fullName
,
tagName
);
NamespaceDef
*
nd
=
new
NamespaceDef
(
root
->
fileName
,
root
->
startLine
,
fullName
,
tagName
,
tagFileName
);
nd
->
setDocumentation
(
root
->
doc
,
root
->
docFile
,
root
->
docLine
);
// copy docs to definition
nd
->
setDocumentation
(
root
->
doc
,
root
->
docFile
,
root
->
docLine
);
// copy docs to definition
nd
->
setBriefDescription
(
root
->
brief
,
root
->
briefFile
,
root
->
briefLine
);
nd
->
setBriefDescription
(
root
->
brief
,
root
->
briefFile
,
root
->
briefLine
);
nd
->
addSectionsToDefinition
(
root
->
anchors
);
nd
->
addSectionsToDefinition
(
root
->
anchors
);
...
@@ -1143,8 +1145,7 @@ static void findUsingDirectives(Entry *root)
...
@@ -1143,8 +1145,7 @@ static void findUsingDirectives(Entry *root)
}
}
else
// unknown namespace, but add it anyway.
else
// unknown namespace, but add it anyway.
{
{
NamespaceDef
*
nd
=
new
NamespaceDef
(
NamespaceDef
*
nd
=
new
NamespaceDef
(
root
->
fileName
,
root
->
startLine
,
name
);
root
->
fileName
,
root
->
startLine
,
name
);
nd
->
setDocumentation
(
root
->
doc
,
root
->
docFile
,
root
->
docLine
);
// copy docs to definition
nd
->
setDocumentation
(
root
->
doc
,
root
->
docFile
,
root
->
docLine
);
// copy docs to definition
nd
->
setBriefDescription
(
root
->
brief
,
root
->
briefFile
,
root
->
briefLine
);
nd
->
setBriefDescription
(
root
->
brief
,
root
->
briefFile
,
root
->
briefLine
);
nd
->
addSectionsToDefinition
(
root
->
anchors
);
nd
->
addSectionsToDefinition
(
root
->
anchors
);
...
@@ -4241,6 +4242,49 @@ static bool findGlobalMember(Entry *root,
...
@@ -4241,6 +4242,49 @@ static bool findGlobalMember(Entry *root,
return
TRUE
;
return
TRUE
;
}
}
static
QCString
substituteTemplatesInString
(
const
QList
<
ArgumentList
>
&
srcTempArgLists
,
const
QList
<
ArgumentList
>
&
dstTempArgLists
,
const
QCString
&
src
)
{
QCString
dst
;
QRegExp
re
(
idMask
);
//printf("type=%s\n",sa->type.data());
int
i
,
p
=
0
,
l
;
while
((
i
=
re
.
match
(
src
,
p
,
&
l
))
!=-
1
)
// for each word in srcType
{
bool
found
=
FALSE
;
dst
+=
src
.
mid
(
p
,
i
-
p
);
QCString
name
=
src
.
mid
(
i
,
l
);
QListIterator
<
ArgumentList
>
srclali
(
srcTempArgLists
);
QListIterator
<
ArgumentList
>
dstlali
(
dstTempArgLists
);
for
(;
srclali
.
current
()
&&
!
found
;
++
srclali
,
++
dstlali
)
{
ArgumentListIterator
tsali
(
*
srclali
.
current
());
ArgumentListIterator
tdali
(
*
dstlali
.
current
());
Argument
*
tsa
=
0
,
*
tda
=
0
;
for
(
tsali
.
toFirst
();(
tsa
=
tsali
.
current
())
&&
!
found
;
++
tsali
)
{
tda
=
tdali
.
current
();
if
(
tda
&&
name
==
tsa
->
name
)
{
name
=
tda
->
name
;
// substitute
found
=
TRUE
;
}
if
(
tda
)
++
tdali
;
}
}
dst
+=
name
;
p
=
i
+
l
;
}
dst
+=
src
.
right
(
src
.
length
()
-
p
);
return
dst
;
}
static
void
substituteTemplatesInArgList
(
static
void
substituteTemplatesInArgList
(
const
QList
<
ArgumentList
>
&
srcTempArgLists
,
const
QList
<
ArgumentList
>
&
srcTempArgLists
,
const
QList
<
ArgumentList
>
&
dstTempArgLists
,
const
QList
<
ArgumentList
>
&
dstTempArgLists
,
...
@@ -4253,51 +4297,22 @@ static void substituteTemplatesInArgList(
...
@@ -4253,51 +4297,22 @@ static void substituteTemplatesInArgList(
for
(
sali
.
toFirst
();(
sa
=
sali
.
current
());
++
sali
)
// for each member argument
for
(
sali
.
toFirst
();(
sa
=
sali
.
current
());
++
sali
)
// for each member argument
{
{
QCString
srcType
=
sa
->
type
;
QCString
dstType
=
substituteTemplatesInString
(
QRegExp
re
(
idMask
);
srcTempArgLists
,
dstTempArgLists
,
sa
->
type
);
//printf("type=%s\n",sa->type.data());
QCString
dstArray
=
substituteTemplatesInString
(
srcTempArgLists
,
dstTempArgLists
,
sa
->
array
);
int
i
,
p
=
0
,
l
;
QCString
dstType
;
while
((
i
=
re
.
match
(
srcType
,
p
,
&
l
))
!=-
1
)
// for each word in srcType
{
bool
found
=
FALSE
;
dstType
+=
srcType
.
mid
(
p
,
i
-
p
);
QCString
name
=
srcType
.
mid
(
i
,
l
);
QListIterator
<
ArgumentList
>
srclali
(
srcTempArgLists
);
QListIterator
<
ArgumentList
>
dstlali
(
dstTempArgLists
);
for
(;
srclali
.
current
()
&&
!
found
;
++
srclali
,
++
dstlali
)
{
ArgumentListIterator
tsali
(
*
srclali
.
current
());
ArgumentListIterator
tdali
(
*
dstlali
.
current
());
Argument
*
tsa
=
0
,
*
tda
=
0
;
for
(
tsali
.
toFirst
();(
tsa
=
tsali
.
current
())
&&
!
found
;
++
tsali
)
{
tda
=
tdali
.
current
();
if
(
tda
&&
name
==
tsa
->
name
)
{
name
=
tda
->
name
;
// substitute
found
=
TRUE
;
}
if
(
tda
)
++
tdali
;
}
}
dstType
+=
name
;
p
=
i
+
l
;
}
dstType
+=
srcType
.
right
(
srcType
.
length
()
-
p
);
if
(
da
==
0
)
if
(
da
==
0
)
{
{
da
=
new
Argument
(
*
sa
);
da
=
new
Argument
(
*
sa
);
dst
->
append
(
da
);
dst
->
append
(
da
);
da
->
type
=
dstType
;
da
->
type
=
dstType
;
da
->
array
=
dstArray
;
da
=
0
;
da
=
0
;
}
}
else
else
{
{
da
->
type
=
dstType
;
da
->
type
=
dstType
;
da
->
type
=
dstArray
;
da
=
dst
->
next
();
da
=
dst
->
next
();
}
}
}
}
...
...
src/htmlgen.cpp
View file @
161d3860
...
@@ -1145,7 +1145,7 @@ void HtmlGenerator::startParameterType(bool first,const char *key)
...
@@ -1145,7 +1145,7 @@ void HtmlGenerator::startParameterType(bool first,const char *key)
t
<<
" <td class=
\"
md
\"
nowrap align=
\"
right
\"
>"
;
t
<<
" <td class=
\"
md
\"
nowrap align=
\"
right
\"
>"
;
if
(
key
)
t
<<
key
;
if
(
key
)
t
<<
key
;
t
<<
"</td>"
<<
endl
;
t
<<
"</td>"
<<
endl
;
t
<<
" <td></td>"
<<
endl
;
t
<<
" <td
class=
\"
md
\"
></td>"
<<
endl
;
t
<<
" <td class=
\"
md
\"
nowrap>"
;
t
<<
" <td class=
\"
md
\"
nowrap>"
;
}
}
}
}
...
@@ -1185,7 +1185,7 @@ void HtmlGenerator::endParameterName(bool last,bool emptyList,bool closeBracket)
...
@@ -1185,7 +1185,7 @@ void HtmlGenerator::endParameterName(bool last,bool emptyList,bool closeBracket)
t
<<
"</td>"
<<
endl
;
t
<<
"</td>"
<<
endl
;
t
<<
" </tr>"
<<
endl
;
t
<<
" </tr>"
<<
endl
;
t
<<
" <tr>"
<<
endl
;
t
<<
" <tr>"
<<
endl
;
t
<<
" <td></td>"
<<
endl
;
t
<<
" <td
class=
\"
md
\"
></td>"
<<
endl
;
t
<<
" <td class=
\"
md
\"
>"
;
t
<<
" <td class=
\"
md
\"
>"
;
if
(
closeBracket
)
t
<<
")"
;
if
(
closeBracket
)
t
<<
")"
;
t
<<
" </td>"
<<
endl
;
t
<<
" </td>"
<<
endl
;
...
...
src/namespacedef.cpp
View file @
161d3860
...
@@ -29,11 +29,19 @@
...
@@ -29,11 +29,19 @@
#include "searchindex.h"
#include "searchindex.h"
NamespaceDef
::
NamespaceDef
(
const
char
*
df
,
int
dl
,
NamespaceDef
::
NamespaceDef
(
const
char
*
df
,
int
dl
,
const
char
*
name
,
const
char
*
lref
)
:
const
char
*
name
,
const
char
*
lref
,
const
char
*
fName
)
:
Definition
(
df
,
dl
,
name
)
Definition
(
df
,
dl
,
name
)
{
{
fileName
=
"namespace"
;
if
(
fName
)
fileName
+=
name
;
{
fileName
=
stripExtension
(
fName
);
}
else
{
fileName
=
"namespace"
;
fileName
+=
name
;
}
classSDict
=
new
ClassSDict
(
17
);
classSDict
=
new
ClassSDict
(
17
);
namespaceSDict
=
new
NamespaceSDict
(
17
);
namespaceSDict
=
new
NamespaceSDict
(
17
);
m_innerCompounds
=
new
SDict
<
Definition
>
(
257
);
m_innerCompounds
=
new
SDict
<
Definition
>
(
257
);
...
@@ -414,7 +422,14 @@ void NamespaceDef::addUsingDeclaration(Definition *d)
...
@@ -414,7 +422,14 @@ void NamespaceDef::addUsingDeclaration(Definition *d)
QCString
NamespaceDef
::
getOutputFileBase
()
const
QCString
NamespaceDef
::
getOutputFileBase
()
const
{
{
return
convertNameToFile
(
fileName
);
if
(
isReference
())
{
return
fileName
;
}
else
{
return
convertNameToFile
(
fileName
);
}
}
}
Definition
*
NamespaceDef
::
findInnerCompound
(
const
char
*
n
)
Definition
*
NamespaceDef
::
findInnerCompound
(
const
char
*
n
)
...
...
src/namespacedef.h
View file @
161d3860
...
@@ -38,7 +38,8 @@ class NamespaceDef : public Definition
...
@@ -38,7 +38,8 @@ class NamespaceDef : public Definition
{
{
public
:
public
:
NamespaceDef
(
const
char
*
defFileName
,
int
defLine
,
NamespaceDef
(
const
char
*
defFileName
,
int
defLine
,
const
char
*
name
,
const
char
*
ref
=
0
);
const
char
*
name
,
const
char
*
ref
=
0
,
const
char
*
refFile
=
0
);
~
NamespaceDef
();
~
NamespaceDef
();
DefType
definitionType
()
{
return
TypeNamespace
;
}
DefType
definitionType
()
{
return
TypeNamespace
;
}
QCString
getOutputFileBase
()
const
;
QCString
getOutputFileBase
()
const
;
...
...
src/pre.l
View file @
161d3860
...
@@ -856,9 +856,15 @@ QCString removeIdsAndMarkers(const char *s)
...
@@ -856,9 +856,15 @@ QCString removeIdsAndMarkers(const char *s)
}
}
p++;
p++;
}
}
else // oops, not comment but division
{
result+=pc;
goto nextChar;
}
}
}
else
else
{
{
nextChar:
result+=c;
result+=c;
char lc=tolower(c);
char lc=tolower(c);
if (!isId(lc) && lc!='.' && lc!='-' && lc!='+') inNum=FALSE;
if (!isId(lc) && lc!='.' && lc!='-' && lc!='+') inNum=FALSE;
...
@@ -1507,6 +1513,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
...
@@ -1507,6 +1513,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<Guard>"defined"/{B}+ {
<Guard>"defined"/{B}+ {
BEGIN(DefinedExpr1);
BEGIN(DefinedExpr1);
}
}
<Guard>{ID} { g_guardExpr+=yytext; }
<Guard>. { g_guardExpr+=*yytext; }
<Guard>. { g_guardExpr+=*yytext; }
<Guard>\n {
<Guard>\n {
outputChar('\n');
outputChar('\n');
...
...
src/tagreader.cpp
View file @
161d3860
...
@@ -35,6 +35,22 @@
...
@@ -35,6 +35,22 @@
#include "defargs.h"
#include "defargs.h"
//#include "reflist.h"
//#include "reflist.h"
/*! Information about an linkable anchor */
class
TagAnchorInfo
{
public
:
TagAnchorInfo
(
const
QString
&
f
,
const
QString
&
l
)
:
label
(
l
),
fileName
(
f
)
{}
QString
label
;
QString
fileName
;
};
class
TagAnchorInfoList
:
public
QList
<
TagAnchorInfo
>
{
public
:
TagAnchorInfoList
()
:
QList
<
TagAnchorInfo
>
()
{
setAutoDelete
(
TRUE
);
}
virtual
~
TagAnchorInfoList
()
{}
};
/*! Container for member specific info that can be read from a tagfile */
/*! Container for member specific info that can be read from a tagfile */
class
TagMemberInfo
class
TagMemberInfo
{
{
...
@@ -45,7 +61,7 @@ class TagMemberInfo
...
@@ -45,7 +61,7 @@ class TagMemberInfo
QString
anchor
;
QString
anchor
;
QString
arglist
;
QString
arglist
;
QString
kind
;
QString
kind
;
QStr
List
docAnchors
;
TagAnchorInfo
List
docAnchors
;
Protection
prot
;
Protection
prot
;
Specifier
virt
;
Specifier
virt
;
bool
isStatic
;
bool
isStatic
;
...
@@ -60,7 +76,7 @@ class TagClassInfo
...
@@ -60,7 +76,7 @@ class TagClassInfo
~
TagClassInfo
()
{
delete
bases
;
delete
templateArguments
;
}
~
TagClassInfo
()
{
delete
bases
;
delete
templateArguments
;
}
QString
name
;
QString
name
;
QString
filename
;
QString
filename
;
QStr
List
docAnchors
;
TagAnchorInfo
List
docAnchors
;
QList
<
BaseInfo
>
*
bases
;
QList
<
BaseInfo
>
*
bases
;
QList
<
TagMemberInfo
>
members
;
QList
<
TagMemberInfo
>
members
;
QList
<
QString
>
*
templateArguments
;
QList
<
QString
>
*
templateArguments
;
...
@@ -75,7 +91,7 @@ class TagNamespaceInfo
...
@@ -75,7 +91,7 @@ class TagNamespaceInfo
TagNamespaceInfo
()
{
members
.
setAutoDelete
(
TRUE
);
}
TagNamespaceInfo
()
{
members
.
setAutoDelete
(
TRUE
);
}
QString
name
;
QString
name
;
QString
filename
;
QString
filename
;
QStr
List
docAnchors
;
TagAnchorInfo
List
docAnchors
;
QList
<
TagMemberInfo
>
members
;
QList
<
TagMemberInfo
>
members
;
QStringList
classList
;
QStringList
classList
;
};
};
...
@@ -87,7 +103,7 @@ class TagPackageInfo
...
@@ -87,7 +103,7 @@ class TagPackageInfo
TagPackageInfo
()
{
members
.
setAutoDelete
(
TRUE
);
}
TagPackageInfo
()
{
members
.
setAutoDelete
(
TRUE
);
}
QString
name
;
QString
name
;
QString
filename
;
QString
filename
;
QStr
List
docAnchors
;
TagAnchorInfo
List
docAnchors
;
QList
<
TagMemberInfo
>
members
;
QList
<
TagMemberInfo
>
members
;
QStringList
classList
;
QStringList
classList
;
};
};
...
@@ -110,7 +126,7 @@ class TagFileInfo
...
@@ -110,7 +126,7 @@ class TagFileInfo
QString
name
;
QString
name
;
QString
path
;
QString
path
;
QString
filename
;
QString
filename
;
QStr
List
docAnchors
;
TagAnchorInfo
List
docAnchors
;
QList
<
TagMemberInfo
>
members
;
QList
<
TagMemberInfo
>
members
;
QStringList
classList
;
QStringList
classList
;
QStringList
namespaceList
;
QStringList
namespaceList
;
...
@@ -125,7 +141,7 @@ class TagGroupInfo
...
@@ -125,7 +141,7 @@ class TagGroupInfo
QString
name
;
QString
name
;
QString
title
;
QString
title
;
QString
filename
;
QString
filename
;
QStr
List
docAnchors
;
TagAnchorInfo
List
docAnchors
;
QList
<
TagMemberInfo
>
members
;
QList
<
TagMemberInfo
>
members
;
QStringList
subgroupList
;
QStringList
subgroupList
;
QStringList
classList
;
QStringList
classList
;
...
@@ -142,7 +158,7 @@ class TagPageInfo
...
@@ -142,7 +158,7 @@ class TagPageInfo
QString
name
;
QString
name
;
QString
title
;
QString
title
;
QString
filename
;
QString
filename
;
QStr
List
docAnchors
;
TagAnchorInfo
List
docAnchors
;
};
};
/*! Container for directory specific info that can be read from a tagfile */
/*! Container for directory specific info that can be read from a tagfile */
...
@@ -154,7 +170,7 @@ class TagDirInfo
...
@@ -154,7 +170,7 @@ class TagDirInfo
QString
path
;
QString
path
;
QStringList
subdirList
;
QStringList
subdirList
;
QStringList
fileList
;
QStringList
fileList
;
QStr
List
docAnchors
;
TagAnchorInfo
List
docAnchors
;
};
};
/*! Tag file parser.
/*! Tag file parser.
...
@@ -317,8 +333,8 @@ class TagFileParser : public QXmlDefaultHandler
...
@@ -317,8 +333,8 @@ class TagFileParser : public QXmlDefaultHandler
{
{
m_curMember
=
new
TagMemberInfo
;
m_curMember
=
new
TagMemberInfo
;
m_curMember
->
kind
=
attrib
.
value
(
"kind"
);
m_curMember
->
kind
=
attrib
.
value
(
"kind"
);
QString
protStr
=
attrib
.
value
(
"protection"
);
QString
protStr
=
attrib
.
value
(
"protection"
);
QString
virtStr
=
attrib
.
value
(
"virtualness"
);
QString
virtStr
=
attrib
.
value
(
"virtualness"
);
QString
staticStr
=
attrib
.
value
(
"static"
);
QString
staticStr
=
attrib
.
value
(
"static"
);
if
(
protStr
==
"protected"
)
if
(
protStr
==
"protected"
)
{
{
...
@@ -364,14 +380,14 @@ class TagFileParser : public QXmlDefaultHandler
...
@@ -364,14 +380,14 @@ class TagFileParser : public QXmlDefaultHandler
{
{
switch
(
m_state
)
switch
(
m_state
)
{
{
case
InClass
:
m_curClass
->
docAnchors
.
append
(
m_curString
);
break
;
case
InClass
:
m_curClass
->
docAnchors
.
append
(
new
TagAnchorInfo
(
m_fileName
,
m_curString
)
);
break
;
case
InFile
:
m_curFile
->
docAnchors
.
append
(
m_curString
);
break
;
case
InFile
:
m_curFile
->
docAnchors
.
append
(
new
TagAnchorInfo
(
m_fileName
,
m_curString
)
);
break
;
case
InNamespace
:
m_curNamespace
->
docAnchors
.
append
(
m_curString
);
break
;
case
InNamespace
:
m_curNamespace
->
docAnchors
.
append
(
new
TagAnchorInfo
(
m_fileName
,
m_curString
)
);
break
;
case
InGroup
:
m_curGroup
->
docAnchors
.
append
(
m_curString
);
break
;
case
InGroup
:
m_curGroup
->
docAnchors
.
append
(
new
TagAnchorInfo
(
m_fileName
,
m_curString
)
);
break
;
case
InPage
:
m_curPage
->
docAnchors
.
append
(
m_curString
);
break
;
case
InPage
:
m_curPage
->
docAnchors
.
append
(
new
TagAnchorInfo
(
m_fileName
,
m_curString
)
);
break
;
case
InMember
:
m_curMember
->
docAnchors
.
append
(
m_curString
);
break
;
case
InMember
:
m_curMember
->
docAnchors
.
append
(
new
TagAnchorInfo
(
m_fileName
,
m_curString
)
);
break
;
case
InPackage
:
m_curPackage
->
docAnchors
.
append
(
m_curString
);
break
;
case
InPackage
:
m_curPackage
->
docAnchors
.
append
(
new
TagAnchorInfo
(
m_fileName
,
m_curString
)
);
break
;
case
InDir
:
m_curDir
->
docAnchors
.
append
(
m_curString
);
break
;
case
InDir
:
m_curDir
->
docAnchors
.
append
(
new
TagAnchorInfo
(
m_fileName
,
m_curString
)
);
break
;
default
:
err
(
"Error: Unexpected tag `member' found
\n
"
);
break
;
default
:
err
(
"Error: Unexpected tag `member' found
\n
"
);
break
;
}
}
}
}
...
@@ -424,6 +440,11 @@ class TagFileParser : public QXmlDefaultHandler
...
@@ -424,6 +440,11 @@ class TagFileParser : public QXmlDefaultHandler
{
{
m_curString
=
""
;
m_curString
=
""
;
}
}
void
startDocAnchor
(
const
QXmlAttributes
&
attrib
)
{
m_fileName
=
attrib
.
value
(
"file"
);
m_curString
=
""
;
}
void
endType
()
void
endType
()
{
{
if
(
m_state
==
InMember
)
if
(
m_state
==
InMember
)
...
@@ -640,7 +661,7 @@ class TagFileParser : public QXmlDefaultHandler
...
@@ -640,7 +661,7 @@ class TagFileParser : public QXmlDefaultHandler
m_startElementHandlers
.
insert
(
"file"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startStringValue
));
m_startElementHandlers
.
insert
(
"file"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startStringValue
));
m_startElementHandlers
.
insert
(
"dir"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startStringValue
));
m_startElementHandlers
.
insert
(
"dir"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startStringValue
));
m_startElementHandlers
.
insert
(
"page"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startStringValue
));
m_startElementHandlers
.
insert
(
"page"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startStringValue
));
m_startElementHandlers
.
insert
(
"docanchor"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
start
StringValue
));
m_startElementHandlers
.
insert
(
"docanchor"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
start
DocAnchor
));
m_startElementHandlers
.
insert
(
"tagfile"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startIgnoreElement
));
m_startElementHandlers
.
insert
(
"tagfile"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startIgnoreElement
));
m_startElementHandlers
.
insert
(
"templarg"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startStringValue
));
m_startElementHandlers
.
insert
(
"templarg"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startStringValue
));
m_startElementHandlers
.
insert
(
"type"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startStringValue
));
m_startElementHandlers
.
insert
(
"type"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startStringValue
));
...
@@ -708,7 +729,7 @@ class TagFileParser : public QXmlDefaultHandler
...
@@ -708,7 +729,7 @@ class TagFileParser : public QXmlDefaultHandler
private
:
private
:
void
buildMemberList
(
Entry
*
ce
,
QList
<
TagMemberInfo
>
&
members
);
void
buildMemberList
(
Entry
*
ce
,
QList
<
TagMemberInfo
>
&
members
);
void
addDocAnchors
(
Entry
*
e
,
QStr
List
&
l
);
void
addDocAnchors
(
Entry
*
e
,
const
TagAnchorInfo
List
&
l
);
QList
<
TagClassInfo
>
m_tagFileClasses
;
QList
<
TagClassInfo
>
m_tagFileClasses
;
QList
<
TagFileInfo
>
m_tagFileFiles
;
QList
<
TagFileInfo
>
m_tagFileFiles
;
QList
<
TagNamespaceInfo
>
m_tagFileNamespaces
;
QList
<
TagNamespaceInfo
>
m_tagFileNamespaces
;
...
@@ -729,6 +750,7 @@ class TagFileParser : public QXmlDefaultHandler
...
@@ -729,6 +750,7 @@ class TagFileParser : public QXmlDefaultHandler
TagIncludeInfo
*
m_curIncludes
;
TagIncludeInfo
*
m_curIncludes
;
QCString
m_curString
;
QCString
m_curString
;
QString
m_tagName
;
QString
m_tagName
;
QString
m_fileName
;
State
m_state
;
State
m_state
;
QStack
<
State
>
m_stateStack
;
QStack
<
State
>
m_stateStack
;
};
};
...
@@ -932,24 +954,25 @@ void TagFileParser::dump()
...
@@ -932,24 +954,25 @@ void TagFileParser::dump()
}
}
}
}
void
TagFileParser
::
addDocAnchors
(
Entry
*
e
,
QStr
List
&
l
)
void
TagFileParser
::
addDocAnchors
(
Entry
*
e
,
const
TagAnchorInfo
List
&
l
)
{
{
char
*
s
=
l
.
first
();
QListIterator
<
TagAnchorInfo
>
tli
(
l
);
while
(
s
)
TagAnchorInfo
*
ta
;
for
(
tli
.
toFirst
();(
ta
=
tli
.
current
());
++
tli
)
{
{
QCString
*
anchorName
=
new
QCString
(
s
);
if
(
Doxygen
::
sectionDict
.
find
(
ta
->
label
)
==
0
)
if
(
Doxygen
::
sectionDict
.
find
(
*
anchorName
)
==
0
)
{
{
SectionInfo
*
si
=
new
SectionInfo
(
e
->
fileName
,
*
anchorName
,
*
anchorName
,
//printf("New sectionInfo file=%s anchor=%s\n",
// ta->fileName.data(),ta->label.data());
SectionInfo
*
si
=
new
SectionInfo
(
ta
->
fileName
,
ta
->
label
,
ta
->
label
,
SectionInfo
::
Anchor
,
m_tagName
);
SectionInfo
::
Anchor
,
m_tagName
);
Doxygen
::
sectionDict
.
insert
(
*
anchorName
,
si
);
Doxygen
::
sectionDict
.
insert
(
ta
->
label
,
si
);
e
->
anchors
->
append
(
si
);
e
->
anchors
->
append
(
si
);
}
}
else
else
{
{
err
(
"Duplicate anchor %s found
\n
"
,
anchorName
->
data
());
err
(
"Duplicate anchor %s found
\n
"
,
ta
->
label
.
data
());
}
}
s
=
l
.
next
();
}
}
}
}
...
...
src/util.cpp
View file @
161d3860
...
@@ -128,23 +128,31 @@ int iSystem(const char *command,const char *args,bool isBatchFile)
...
@@ -128,23 +128,31 @@ int iSystem(const char *command,const char *args,bool isBatchFile)
{
{
QTime
time
;
QTime
time
;
time
.
start
();
time
.
start
();
if
(
command
==
0
)
return
1
;
QCString
fullCmd
=
command
;
fullCmd
=
fullCmd
.
stripWhiteSpace
();
if
(
fullCmd
.
at
(
0
)
!=
'"'
&&
fullCmd
.
find
(
' '
)
!=-
1
)
{
// add quotes around command as it contains spaces and is not quoted already
fullCmd
=
"
\"
"
+
fullCmd
+
"
\"
"
;
}
fullCmd
+=
" "
;
fullCmd
+=
args
;
//printf("iSystem: Executing %s\n",fullCmd.data());
#if !defined(_WIN32) || defined(__CYGWIN__)
#if !defined(_WIN32) || defined(__CYGWIN__)
isBatchFile
=
isBatchFile
;
isBatchFile
=
isBatchFile
;
/*! taken from the system() manpage on my Linux box */
/*! taken from the system() manpage on my Linux box */
int
pid
,
status
=
0
;
int
pid
,
status
=
0
;
if
(
command
==
0
)
return
1
;
#ifdef _OS_SOLARIS // for Solaris we use vfork since it is more memory efficient
#ifdef _OS_SOLARIS // for Solaris we use vfork since it is more memory efficient
// on Solaris fork() duplicates the memory usage
// on Solaris fork() duplicates the memory usage
// so we use vfork instead
// so we use vfork instead
char
buf
[
4096
];
strcpy
(
buf
,
command
);
strcat
(
buf
,
" "
);
strcat
(
buf
,
args
);
// spawn shell
// spawn shell
if
((
pid
=
vfork
())
<
0
)
if
((
pid
=
vfork
())
<
0
)
{
{
...
@@ -152,7 +160,7 @@ int iSystem(const char *command,const char *args,bool isBatchFile)
...
@@ -152,7 +160,7 @@ int iSystem(const char *command,const char *args,bool isBatchFile)
}
}
else
if
(
pid
==
0
)
else
if
(
pid
==
0
)
{
{
execl
(
"/bin/sh"
,
"sh"
,
"-c"
,
buf
,(
char
*
)
0
);
execl
(
"/bin/sh"
,
"sh"
,
"-c"
,
fullCmd
.
data
()
,(
char
*
)
0
);
_exit
(
127
);
_exit
(
127
);
}
}
else
else
...
@@ -175,14 +183,10 @@ int iSystem(const char *command,const char *args,bool isBatchFile)
...
@@ -175,14 +183,10 @@ int iSystem(const char *command,const char *args,bool isBatchFile)
if
(
pid
==-
1
)
return
-
1
;
if
(
pid
==-
1
)
return
-
1
;
if
(
pid
==
0
)
if
(
pid
==
0
)
{
{
char
buf
[
4096
];
strcpy
(
buf
,
command
);
strcat
(
buf
,
" "
);
strcat
(
buf
,
args
);
const
char
*
argv
[
4
];
const
char
*
argv
[
4
];
argv
[
0
]
=
"sh"
;
argv
[
0
]
=
"sh"
;
argv
[
1
]
=
"-c"
;
argv
[
1
]
=
"-c"
;
argv
[
2
]
=
buf
;
argv
[
2
]
=
fullCmd
.
data
()
;
argv
[
3
]
=
0
;
argv
[
3
]
=
0
;
execve
(
"/bin/sh"
,(
char
*
const
*
)
argv
,
environ
);
execve
(
"/bin/sh"
,(
char
*
const
*
)
argv
,
environ
);
exit
(
127
);
exit
(
127
);
...
@@ -204,9 +208,6 @@ int iSystem(const char *command,const char *args,bool isBatchFile)
...
@@ -204,9 +208,6 @@ int iSystem(const char *command,const char *args,bool isBatchFile)
#else // Win32 specific
#else // Win32 specific
if
(
isBatchFile
)
if
(
isBatchFile
)
{
{
QCString
fullCmd
=
command
;
fullCmd
+=
" "
;
fullCmd
+=
args
;
return
system
(
fullCmd
);
return
system
(
fullCmd
);
}
}
else
else
...
@@ -1107,7 +1108,7 @@ ClassDef *getResolvedClassRec(Definition *scope,
...
@@ -1107,7 +1108,7 @@ ClassDef *getResolvedClassRec(Definition *scope,
bestTemplSpec
.
resize
(
0
);
bestTemplSpec
.
resize
(
0
);
}
}
else
if
(
distance
==
minDistance
&&
else
if
(
distance
==
minDistance
&&
fileScope
&&
fileScope
&&
bestMatch
&&
fileScope
->
getUsedNamespaces
()
&&
fileScope
->
getUsedNamespaces
()
&&
d
->
getOuterScope
()
->
definitionType
()
==
Definition
::
TypeNamespace
&&
d
->
getOuterScope
()
->
definitionType
()
==
Definition
::
TypeNamespace
&&
bestMatch
->
getOuterScope
()
==
Doxygen
::
globalScope
bestMatch
->
getOuterScope
()
==
Doxygen
::
globalScope
...
@@ -1143,10 +1144,14 @@ ClassDef *getResolvedClassRec(Definition *scope,
...
@@ -1143,10 +1144,14 @@ ClassDef *getResolvedClassRec(Definition *scope,
{
{
QCString
spec
;
QCString
spec
;
minDistance
=
distance
;
minDistance
=
distance
;
bestMatch
=
newResolveTypedef
(
fileScope
,
md
,
&
spec
);
ClassDef
*
cd
=
newResolveTypedef
(
fileScope
,
md
,
&
spec
);
//printf(" bestTypeDef=%p spec=%s\n",md,spec.data());
if
(
cd
)
// shouldn't be 0, but could in some weird cases
bestTypedef
=
md
;
{
bestTemplSpec
=
spec
;
//printf(" bestTypeDef=%p spec=%s\n",md,spec.data());
bestMatch
=
cd
;
bestTypedef
=
md
;
bestTemplSpec
=
spec
;
}
}
}
}
}
}
}
...
...
wintools/Doxygen.dsp
View file @
161d3860
...
@@ -23,6 +23,8 @@ CFG=Doxygen - Win32 Debug
...
@@ -23,6 +23,8 @@ CFG=Doxygen - Win32 Debug
# Begin Project
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
CPP=cl.exe
RSC=rc.exe
RSC=rc.exe
...
@@ -151,6 +153,10 @@ SOURCE=..\src\diagram.cpp
...
@@ -151,6 +153,10 @@ SOURCE=..\src\diagram.cpp
# End Source File
# End Source File
# Begin Source File
# Begin Source File
SOURCE=..\src\dirdef.cpp
# End Source File
# Begin Source File
SOURCE=..\src\docparser.cpp
SOURCE=..\src\docparser.cpp
# End Source File
# End Source File
# Begin Source File
# Begin Source File
...
@@ -415,6 +421,10 @@ SOURCE=..\src\diagram.h
...
@@ -415,6 +421,10 @@ SOURCE=..\src\diagram.h
# End Source File
# End Source File
# Begin Source File
# Begin Source File
SOURCE=..\src\dirdef.h
# End Source File
# Begin Source File
SOURCE=..\src\docparser.h
SOURCE=..\src\docparser.h
# End Source File
# End Source File
# Begin Source File
# Begin Source File
...
...
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