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
50828c3c
Commit
50828c3c
authored
Oct 10, 2004
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.3.9.1
parent
89f2e4c8
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 @
50828c3c
...
...
@@ -83,7 +83,6 @@ EXCLUDE = src/code.cpp \
src/tag.cpp \
src/doctokenizer.cpp \
src/logos.cpp \
src/doxysearch.cpp \
src/suffixtree.cpp \
src/suffixtree.h \
src/searchindex.cpp \
...
...
INSTALL
View file @
50828c3c
DOXYGEN Version 1.3.9
DOXYGEN Version 1.3.9
.1
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (
05
October 2004)
Dimitri van Heesch (
10
October 2004)
README
View file @
50828c3c
DOXYGEN Version 1.3.9
DOXYGEN Version 1.3.9
.1
Please read INSTALL for compilation instructions.
...
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (
05
October 2004)
Dimitri van Heesch (dimitri@stack.nl) (
10
October 2004)
VERSION
View file @
50828c3c
1.3.9
1.3.9
.1
doc/faq.doc
View file @
50828c3c
...
...
@@ -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>
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
on a very large generated file (\>
1
6K lines), where the built-in preprocessor
converted it into an empty file (with \>
1
6K of newlines). Another case
more than
25
6K of input characters in one go. I've seen this happening
on a very large generated file (\>
25
6K lines), where the built-in preprocessor
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
1
6K characters.
25
6K characters.
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
...
...
@@ -263,6 +263,19 @@ namespace std {
I'm still looking for someone who can provide me with definitions
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>
Doxygen got its name from playing with the words
...
...
doc/translator.py
View file @
50828c3c
...
...
@@ -10,7 +10,7 @@
translator report only for some languages, pass their codes as arguments
to the script. In that case, the language.doc will not be generated.
Example:
python translator.py en nl cz
Originally, the script was written in Perl and was known as translator.pl.
...
...
@@ -44,6 +44,7 @@
explicitly via script arguments.
2004/07/26 - Better reporting of not-needed adapters.
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
...
...
@@ -1204,7 +1205,7 @@ class TrManager:
# 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
# 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.
self
.
lastModificationTime
=
os
.
path
.
getmtime
(
self
.
script
)
...
...
@@ -1361,26 +1362,24 @@ class TrManager:
def
__getNoTrSourceFilesLst
(
self
):
"""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
are searched in doxygen
directory recursively."""
lst
=
[]
for
path
,
dirs
,
files
in
os
.
walk
(
self
.
doxy_path
):
# Files in doxygen/src should be processed first.
if
path
==
self
.
doxy_path
:
dirs
.
remove
(
'src'
)
dirs
.
insert
(
0
,
'src'
)
are searched in doxygen
/src directory.
"""
srcdir
=
os
.
path
.
join
(
self
.
doxy_path
,
'src'
)
files
=
[]
for
item
in
os
.
listdir
(
srcdir
):
# Split the bare name to get the extension.
name
,
ext
=
os
.
path
.
splitext
(
item
)
ext
=
ext
.
lower
(
)
# Search for names with .cpp extension (case independent)
# and append them to the output list.
for
fname
in
files
:
name
,
ext
=
os
.
path
.
splitext
(
fname
)
ext
=
ext
.
lower
()
if
ext
==
'.cpp'
or
(
ext
==
'.h'
and
name
.
find
(
'translator'
)
==
-
1
):
lst
.
append
(
os
.
path
.
join
(
path
,
fname
))
return
lst
# Include only .cpp and .h files (case independent) and exclude
# the files where the checked identifiers are defined.
if
ext
==
'.cpp'
or
(
ext
==
'.h'
and
name
.
find
(
'translator'
)
==
-
1
):
fname
=
os
.
path
.
join
(
srcdir
,
item
)
assert
os
.
path
.
isfile
(
fname
)
# assumes no directory with the ext
files
.
append
(
fname
)
# full name
return
files
def
__removeUsedInFiles
(
self
,
fname
,
dic
):
...
...
@@ -1562,12 +1561,12 @@ class TrManager:
if
not
self
.
script_argLst
:
dic
=
self
.
__checkForNotUsedTrMethods
()
if
dic
:
s
=
'''WARNING
FOR DEVELOPERS: The following translator
methods are declared in the Translator class but thei
r
i
dentifiers do not appear in source files. The situation
should be checked. The .cpp files and .h files excluding
the 'translator*.h' files were simply searched for
o
ccurence o
f the method identifiers:'''
s
=
'''WARNING
: The following translator methods are declared
in the Translator class but their identifiers do not appea
r
i
n 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:'''
f
.
write
(
'
\n
'
+
'='
*
70
+
'
\n
'
)
f
.
write
(
fill
(
s
)
+
'
\n\n
'
)
...
...
doc/translator_report.txt
View file @
50828c3c
...
...
@@ -64,6 +64,25 @@ version of the translator for the language:
TranslatorJapaneseEn 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):
...
...
packages/rpm/doxygen.spec
View file @
50828c3c
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.3.9
Version: 1.3.9
.1
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
...
...
src/code.l
View file @
50828c3c
...
...
@@ -843,18 +843,18 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
}
}
static bool getLink(const char *className,
const char *memberName,
BaseCodeDocInterface &ol,
const char *text=0)
static bool getLinkInScope(const QCString &c, // scope
const QCString &m, // member
const char *memberText, // exact text
BaseCodeDocInterface &ol,
const char *text
)
{
MemberDef *md;
ClassDef *cd;
FileDef *fd;
NamespaceDef *nd;
GroupDef *gd;
QCString m=removeRedundantWhiteSpace(memberName);
QCString c=className;
//printf("Trying `%s'::`%s'\n",c.data(),m.data());
if (getDefs(c,m,"()",md,cd,fd,nd,gd,FALSE,g_sourceFileDef) &&
md->isLinkable())
...
...
@@ -894,14 +894,34 @@ static bool getLink(const char *className,
writeMultiLineCodeLink(ol,md->getReference(),
md->getOutputFileBase(),
md->anchor(),
text ? text : member
Name
);
addToSearchIndex(text ? text : member
Name
);
text ? text : member
Text
);
addToSearchIndex(text ? text : member
Text
);
return TRUE;
}
}
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)
{
if (mcd)
...
...
@@ -1761,7 +1781,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
BEGIN( Body );
}
<ClassName,ClassVar>[*&]+ {
g_type=g_curClassName;
g_type=g_curClassName
.copy()
;
g_name.resize(0);
g_code->codify(yytext);
BEGIN( Body ); // variable of type struct *
...
...
src/definition.cpp
View file @
50828c3c
...
...
@@ -164,7 +164,9 @@ void Definition::writeDocAnchorsToTagFile()
{
//printf("write an entry!\n");
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 @
50828c3c
...
...
@@ -1021,11 +1021,13 @@ static void buildNamespaceList(Entry *root)
else
// fresh namespace
{
QCString
tagName
;
QCString
tagFileName
;
if
(
root
->
tagInfo
)
{
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
->
setBriefDescription
(
root
->
brief
,
root
->
briefFile
,
root
->
briefLine
);
nd
->
addSectionsToDefinition
(
root
->
anchors
);
...
...
@@ -1143,8 +1145,7 @@ static void findUsingDirectives(Entry *root)
}
else
// unknown namespace, but add it anyway.
{
NamespaceDef
*
nd
=
new
NamespaceDef
(
root
->
fileName
,
root
->
startLine
,
name
);
NamespaceDef
*
nd
=
new
NamespaceDef
(
root
->
fileName
,
root
->
startLine
,
name
);
nd
->
setDocumentation
(
root
->
doc
,
root
->
docFile
,
root
->
docLine
);
// copy docs to definition
nd
->
setBriefDescription
(
root
->
brief
,
root
->
briefFile
,
root
->
briefLine
);
nd
->
addSectionsToDefinition
(
root
->
anchors
);
...
...
@@ -4241,6 +4242,49 @@ static bool findGlobalMember(Entry *root,
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
(
const
QList
<
ArgumentList
>
&
srcTempArgLists
,
const
QList
<
ArgumentList
>
&
dstTempArgLists
,
...
...
@@ -4253,51 +4297,22 @@ static void substituteTemplatesInArgList(
for
(
sali
.
toFirst
();(
sa
=
sali
.
current
());
++
sali
)
// for each member argument
{
QCString
srcType
=
sa
->
type
;
QRegExp
re
(
idMask
);
//printf("type=%s\n",sa->type.data());
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
);
QCString
dstType
=
substituteTemplatesInString
(
srcTempArgLists
,
dstTempArgLists
,
sa
->
type
);
QCString
dstArray
=
substituteTemplatesInString
(
srcTempArgLists
,
dstTempArgLists
,
sa
->
array
);
if
(
da
==
0
)
{
da
=
new
Argument
(
*
sa
);
dst
->
append
(
da
);
da
->
type
=
dstType
;
da
->
array
=
dstArray
;
da
=
0
;
}
else
{
da
->
type
=
dstType
;
da
->
type
=
dstArray
;
da
=
dst
->
next
();
}
}
...
...
src/htmlgen.cpp
View file @
50828c3c
...
...
@@ -1145,7 +1145,7 @@ void HtmlGenerator::startParameterType(bool first,const char *key)
t
<<
" <td class=
\"
md
\"
nowrap align=
\"
right
\"
>"
;
if
(
key
)
t
<<
key
;
t
<<
"</td>"
<<
endl
;
t
<<
" <td></td>"
<<
endl
;
t
<<
" <td
class=
\"
md
\"
></td>"
<<
endl
;
t
<<
" <td class=
\"
md
\"
nowrap>"
;
}
}
...
...
@@ -1185,7 +1185,7 @@ void HtmlGenerator::endParameterName(bool last,bool emptyList,bool closeBracket)
t
<<
"</td>"
<<
endl
;
t
<<
" </tr>"
<<
endl
;
t
<<
" <tr>"
<<
endl
;
t
<<
" <td></td>"
<<
endl
;
t
<<
" <td
class=
\"
md
\"
></td>"
<<
endl
;
t
<<
" <td class=
\"
md
\"
>"
;
if
(
closeBracket
)
t
<<
")"
;
t
<<
" </td>"
<<
endl
;
...
...
src/namespacedef.cpp
View file @
50828c3c
...
...
@@ -29,11 +29,19 @@
#include "searchindex.h"
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
)
{
fileName
=
"namespace"
;
fileName
+=
name
;
if
(
fName
)
{
fileName
=
stripExtension
(
fName
);
}
else
{
fileName
=
"namespace"
;
fileName
+=
name
;
}
classSDict
=
new
ClassSDict
(
17
);
namespaceSDict
=
new
NamespaceSDict
(
17
);
m_innerCompounds
=
new
SDict
<
Definition
>
(
257
);
...
...
@@ -414,7 +422,14 @@ void NamespaceDef::addUsingDeclaration(Definition *d)
QCString
NamespaceDef
::
getOutputFileBase
()
const
{
return
convertNameToFile
(
fileName
);
if
(
isReference
())
{
return
fileName
;
}
else
{
return
convertNameToFile
(
fileName
);
}
}
Definition
*
NamespaceDef
::
findInnerCompound
(
const
char
*
n
)
...
...
src/namespacedef.h
View file @
50828c3c
...
...
@@ -38,7 +38,8 @@ class NamespaceDef : public Definition
{
public
:
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
();
DefType
definitionType
()
{
return
TypeNamespace
;
}
QCString
getOutputFileBase
()
const
;
...
...
src/pre.l
View file @
50828c3c
...
...
@@ -856,9 +856,15 @@ QCString removeIdsAndMarkers(const char *s)
}
p++;
}
else // oops, not comment but division
{
result+=pc;
goto nextChar;
}
}
else
{
nextChar:
result+=c;
char lc=tolower(c);
if (!isId(lc) && lc!='.' && lc!='-' && lc!='+') inNum=FALSE;
...
...
@@ -1507,6 +1513,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<Guard>"defined"/{B}+ {
BEGIN(DefinedExpr1);
}
<Guard>{ID} { g_guardExpr+=yytext; }
<Guard>. { g_guardExpr+=*yytext; }
<Guard>\n {
outputChar('\n');
...
...
src/tagreader.cpp
View file @
50828c3c
...
...
@@ -35,6 +35,22 @@
#include "defargs.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 */
class
TagMemberInfo
{
...
...
@@ -45,7 +61,7 @@ class TagMemberInfo
QString
anchor
;
QString
arglist
;
QString
kind
;
QStr
List
docAnchors
;
TagAnchorInfo
List
docAnchors
;
Protection
prot
;
Specifier
virt
;
bool
isStatic
;
...
...
@@ -60,7 +76,7 @@ class TagClassInfo
~
TagClassInfo
()
{
delete
bases
;
delete
templateArguments
;
}
QString
name
;
QString
filename
;
QStr
List
docAnchors
;
TagAnchorInfo
List
docAnchors
;
QList
<
BaseInfo
>
*
bases
;
QList
<
TagMemberInfo
>
members
;
QList
<
QString
>
*
templateArguments
;
...
...
@@ -75,7 +91,7 @@ class TagNamespaceInfo
TagNamespaceInfo
()
{
members
.
setAutoDelete
(
TRUE
);
}
QString
name
;
QString
filename
;
QStr
List
docAnchors
;
TagAnchorInfo
List
docAnchors
;
QList
<
TagMemberInfo
>
members
;
QStringList
classList
;
};
...
...
@@ -87,7 +103,7 @@ class TagPackageInfo
TagPackageInfo
()
{
members
.
setAutoDelete
(
TRUE
);
}
QString
name
;
QString
filename
;
QStr
List
docAnchors
;
TagAnchorInfo
List
docAnchors
;
QList
<
TagMemberInfo
>
members
;
QStringList
classList
;
};
...
...
@@ -110,7 +126,7 @@ class TagFileInfo
QString
name
;
QString
path
;
QString
filename
;
QStr
List
docAnchors
;
TagAnchorInfo
List
docAnchors
;
QList
<
TagMemberInfo
>
members
;
QStringList
classList
;
QStringList
namespaceList
;
...
...
@@ -125,7 +141,7 @@ class TagGroupInfo
QString
name
;
QString
title
;
QString
filename
;
QStr
List
docAnchors
;
TagAnchorInfo
List
docAnchors
;
QList
<
TagMemberInfo
>
members
;
QStringList
subgroupList
;
QStringList
classList
;
...
...
@@ -142,7 +158,7 @@ class TagPageInfo
QString
name
;
QString
title
;
QString
filename
;
QStr
List
docAnchors
;
TagAnchorInfo
List
docAnchors
;
};
/*! Container for directory specific info that can be read from a tagfile */
...
...
@@ -154,7 +170,7 @@ class TagDirInfo
QString
path
;
QStringList
subdirList
;
QStringList
fileList
;
QStr
List
docAnchors
;
TagAnchorInfo
List
docAnchors
;
};
/*! Tag file parser.
...
...
@@ -317,8 +333,8 @@ class TagFileParser : public QXmlDefaultHandler
{
m_curMember
=
new
TagMemberInfo
;
m_curMember
->
kind
=
attrib
.
value
(
"kind"
);
QString
protStr
=
attrib
.
value
(
"protection"
);
QString
virtStr
=
attrib
.
value
(
"virtualness"
);
QString
protStr
=
attrib
.
value
(
"protection"
);
QString
virtStr
=
attrib
.
value
(
"virtualness"
);
QString
staticStr
=
attrib
.
value
(
"static"
);
if
(
protStr
==
"protected"
)
{
...
...
@@ -364,14 +380,14 @@ class TagFileParser : public QXmlDefaultHandler
{
switch
(
m_state
)
{
case
InClass
:
m_curClass
->
docAnchors
.
append
(
m_curString
);
break
;
case
InFile
:
m_curFile
->
docAnchors
.
append
(
m_curString
);
break
;
case
InNamespace
:
m_curNamespace
->
docAnchors
.
append
(
m_curString
);
break
;
case
InGroup
:
m_curGroup
->
docAnchors
.
append
(
m_curString
);
break
;
case
InPage
:
m_curPage
->
docAnchors
.
append
(
m_curString
);
break
;
case
InMember
:
m_curMember
->
docAnchors
.
append
(
m_curString
);
break
;
case
InPackage
:
m_curPackage
->
docAnchors
.
append
(
m_curString
);
break
;
case
InDir
:
m_curDir
->
docAnchors
.
append
(
m_curString
);
break
;
case
InClass
:
m_curClass
->
docAnchors
.
append
(
new
TagAnchorInfo
(
m_fileName
,
m_curString
)
);
break
;
case
InFile
:
m_curFile
->
docAnchors
.
append
(
new
TagAnchorInfo
(
m_fileName
,
m_curString
)
);
break
;
case
InNamespace
:
m_curNamespace
->
docAnchors
.
append
(
new
TagAnchorInfo
(
m_fileName
,
m_curString
)
);
break
;
case
InGroup
:
m_curGroup
->
docAnchors
.
append
(
new
TagAnchorInfo
(
m_fileName
,
m_curString
)
);
break
;
case
InPage
:
m_curPage
->
docAnchors
.
append
(
new
TagAnchorInfo
(
m_fileName
,
m_curString
)
);
break
;
case
InMember
:
m_curMember
->
docAnchors
.
append
(
new
TagAnchorInfo
(
m_fileName
,
m_curString
)
);
break
;
case
InPackage
:
m_curPackage
->
docAnchors
.
append
(
new
TagAnchorInfo
(
m_fileName
,
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
;
}
}
...
...
@@ -424,6 +440,11 @@ class TagFileParser : public QXmlDefaultHandler
{
m_curString
=
""
;
}
void
startDocAnchor
(
const
QXmlAttributes
&
attrib
)
{
m_fileName
=
attrib
.
value
(
"file"
);
m_curString
=
""
;
}
void
endType
()
{
if
(
m_state
==
InMember
)
...
...
@@ -640,7 +661,7 @@ class TagFileParser : public QXmlDefaultHandler
m_startElementHandlers
.
insert
(
"file"
,
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
(
"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
(
"templarg"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startStringValue
));
m_startElementHandlers
.
insert
(
"type"
,
new
StartElementHandler
(
this
,
&
TagFileParser
::
startStringValue
));
...
...
@@ -708,7 +729,7 @@ class TagFileParser : public QXmlDefaultHandler
private
:
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
<
TagFileInfo
>
m_tagFileFiles
;
QList
<
TagNamespaceInfo
>
m_tagFileNamespaces
;
...
...
@@ -729,6 +750,7 @@ class TagFileParser : public QXmlDefaultHandler
TagIncludeInfo
*
m_curIncludes
;
QCString
m_curString
;
QString
m_tagName
;
QString
m_fileName
;
State
m_state
;
QStack
<
State
>
m_stateStack
;
};
...
...
@@ -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
();
while
(
s
)
QListIterator
<
TagAnchorInfo
>
tli
(
l
);
TagAnchorInfo
*
ta
;
for
(
tli
.
toFirst
();(
ta
=
tli
.
current
());
++
tli
)
{
QCString
*
anchorName
=
new
QCString
(
s
);
if
(
Doxygen
::
sectionDict
.
find
(
*
anchorName
)
==
0
)
if
(
Doxygen
::
sectionDict
.
find
(
ta
->
label
)
==
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
);
Doxygen
::
sectionDict
.
insert
(
*
anchorName
,
si
);
Doxygen
::
sectionDict
.
insert
(
ta
->
label
,
si
);
e
->
anchors
->
append
(
si
);
}
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 @
50828c3c
...
...
@@ -128,23 +128,31 @@ int iSystem(const char *command,const char *args,bool isBatchFile)
{
QTime
time
;
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__)
isBatchFile
=
isBatchFile
;
/*! taken from the system() manpage on my Linux box */
int
pid
,
status
=
0
;
if
(
command
==
0
)
return
1
;
#ifdef _OS_SOLARIS // for Solaris we use vfork since it is more memory efficient
// on Solaris fork() duplicates the memory usage
// so we use vfork instead
char
buf
[
4096
];
strcpy
(
buf
,
command
);
strcat
(
buf
,
" "
);
strcat
(
buf
,
args
);
// spawn shell
if
((
pid
=
vfork
())
<
0
)
{
...
...
@@ -152,7 +160,7 @@ int iSystem(const char *command,const char *args,bool isBatchFile)
}
else
if
(
pid
==
0
)
{
execl
(
"/bin/sh"
,
"sh"
,
"-c"
,
buf
,(
char
*
)
0
);
execl
(
"/bin/sh"
,
"sh"
,
"-c"
,
fullCmd
.
data
()
,(
char
*
)
0
);
_exit
(
127
);
}
else
...
...
@@ -175,14 +183,10 @@ int iSystem(const char *command,const char *args,bool isBatchFile)
if
(
pid
==-
1
)
return
-
1
;
if
(
pid
==
0
)
{
char
buf
[
4096
];
strcpy
(
buf
,
command
);
strcat
(
buf
,
" "
);
strcat
(
buf
,
args
);
const
char
*
argv
[
4
];
argv
[
0
]
=
"sh"
;
argv
[
1
]
=
"-c"
;
argv
[
2
]
=
buf
;
argv
[
2
]
=
fullCmd
.
data
()
;
argv
[
3
]
=
0
;
execve
(
"/bin/sh"
,(
char
*
const
*
)
argv
,
environ
);
exit
(
127
);
...
...
@@ -204,9 +208,6 @@ int iSystem(const char *command,const char *args,bool isBatchFile)
#else // Win32 specific
if
(
isBatchFile
)
{
QCString
fullCmd
=
command
;
fullCmd
+=
" "
;
fullCmd
+=
args
;
return
system
(
fullCmd
);
}
else
...
...
@@ -1107,7 +1108,7 @@ ClassDef *getResolvedClassRec(Definition *scope,
bestTemplSpec
.
resize
(
0
);
}
else
if
(
distance
==
minDistance
&&
fileScope
&&
fileScope
&&
bestMatch
&&
fileScope
->
getUsedNamespaces
()
&&
d
->
getOuterScope
()
->
definitionType
()
==
Definition
::
TypeNamespace
&&
bestMatch
->
getOuterScope
()
==
Doxygen
::
globalScope
...
...
@@ -1143,10 +1144,14 @@ ClassDef *getResolvedClassRec(Definition *scope,
{
QCString
spec
;
minDistance
=
distance
;
bestMatch
=
newResolveTypedef
(
fileScope
,
md
,
&
spec
);
//printf(" bestTypeDef=%p spec=%s\n",md,spec.data());
bestTypedef
=
md
;
bestTemplSpec
=
spec
;
ClassDef
*
cd
=
newResolveTypedef
(
fileScope
,
md
,
&
spec
);
if
(
cd
)
// shouldn't be 0, but could in some weird cases
{
//printf(" bestTypeDef=%p spec=%s\n",md,spec.data());
bestMatch
=
cd
;
bestTypedef
=
md
;
bestTemplSpec
=
spec
;
}
}
}
}
...
...
wintools/Doxygen.dsp
View file @
50828c3c
...
...
@@ -23,6 +23,8 @@ CFG=Doxygen - Win32 Debug
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
...
...
@@ -151,6 +153,10 @@ SOURCE=..\src\diagram.cpp
# End Source File
# Begin Source File
SOURCE=..\src\dirdef.cpp
# End Source File
# Begin Source File
SOURCE=..\src\docparser.cpp
# End Source File
# Begin Source File
...
...
@@ -415,6 +421,10 @@ SOURCE=..\src\diagram.h
# End Source File
# Begin Source File
SOURCE=..\src\dirdef.h
# End Source File
# Begin Source File
SOURCE=..\src\docparser.h
# End 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