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
a17029cb
Commit
a17029cb
authored
Dec 13, 2004
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.3.9.1-20041213
parent
6042e1bf
Changes
33
Hide whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
698 additions
and
157 deletions
+698
-157
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
configure
configure
+1
-1
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
qstring.cpp
qtools/qstring.cpp
+7
-5
scstring.cpp
qtools/scstring.cpp
+1
-1
scstring.h
qtools/scstring.h
+1
-0
classdef.cpp
src/classdef.cpp
+1
-1
code.l
src/code.l
+1
-0
config.l
src/config.l
+7
-0
definition.h
src/definition.h
+2
-0
dirdef.cpp
src/dirdef.cpp
+3
-1
dirdef.h
src/dirdef.h
+1
-3
dot.cpp
src/dot.cpp
+409
-0
dot.h
src/dot.h
+69
-0
doxygen.cpp
src/doxygen.cpp
+1
-0
groupdef.cpp
src/groupdef.cpp
+18
-0
groupdef.h
src/groupdef.h
+1
-0
htmlgen.cpp
src/htmlgen.cpp
+11
-0
htmlgen.h
src/htmlgen.h
+2
-0
htmlhelp.cpp
src/htmlhelp.cpp
+1
-1
latexgen.cpp
src/latexgen.cpp
+9
-0
latexgen.h
src/latexgen.h
+2
-0
mangen.h
src/mangen.h
+2
-0
outputgen.h
src/outputgen.h
+4
-0
outputlist.cpp
src/outputlist.cpp
+1
-0
outputlist.h
src/outputlist.h
+6
-0
rtfgen.cpp
src/rtfgen.cpp
+8
-0
rtfgen.h
src/rtfgen.h
+2
-0
scanner.l
src/scanner.l
+10
-1
xmlgen.cpp
src/xmlgen.cpp
+110
-136
qtools.dsp
wintools/qtools.dsp
+1
-1
No files found.
INSTALL
View file @
a17029cb
DOXYGEN Version 1.3.9.1-200412
06
DOXYGEN Version 1.3.9.1-200412
13
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 (
06
December 2004)
Dimitri van Heesch (
13
December 2004)
README
View file @
a17029cb
DOXYGEN Version 1.3.9.1_200412
06
DOXYGEN Version 1.3.9.1_200412
13
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) (
06
December 2004)
Dimitri van Heesch (dimitri@stack.nl) (
13
December 2004)
VERSION
View file @
a17029cb
1.3.9.1-200412
06
1.3.9.1-200412
13
configure
View file @
a17029cb
#! /bin/sh
#! /bin/
ba
sh
#
#
# $Id$
# $Id$
#
#
...
...
packages/rpm/doxygen.spec
View file @
a17029cb
Summary: A documentation system for C/C++.
Summary: A documentation system for C/C++.
Name: doxygen
Name: doxygen
Version: 1.3.9.1_200412
06
Version: 1.3.9.1_200412
13
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
...
...
qtools/qstring.cpp
View file @
a17029cb
...
@@ -15156,16 +15156,18 @@ QCString qt_winQString2MB( const QString& s, int uclen )
...
@@ -15156,16 +15156,18 @@ QCString qt_winQString2MB( const QString& s, int uclen )
if
(
uclen
==
0
)
if
(
uclen
==
0
)
return
QCString
();
return
QCString
();
BOOL
used_def
;
BOOL
used_def
;
QCString
mb
(
4096
);
int
bufSize
=
4096
;
QCString
mb
(
bufSize
);
int
len
;
int
len
;
while
(
!
(
len
=
WideCharToMultiByte
(
CP_ACP
,
0
,
(
const
WCHAR
*
)
s
.
unicode
(),
uclen
,
while
(
!
(
len
=
WideCharToMultiByte
(
CP_ACP
,
0
,
(
const
WCHAR
*
)
s
.
unicode
(),
uclen
,
mb
.
data
(),
mb
.
size
()
-
1
,
0
,
&
used_def
))
)
mb
.
data
(),
bufSize
-
1
,
0
,
&
used_def
))
)
{
{
int
r
=
GetLastError
();
int
r
=
GetLastError
();
if
(
r
==
ERROR_INSUFFICIENT_BUFFER
)
{
if
(
r
==
ERROR_INSUFFICIENT_BUFFER
)
{
mb
.
resize
(
1
+
WideCharToMultiByte
(
CP_ACP
,
0
,
bufSize
=
1
+
WideCharToMultiByte
(
CP_ACP
,
0
,
(
const
WCHAR
*
)
s
.
unicode
(),
uclen
,
(
const
WCHAR
*
)
s
.
unicode
(),
uclen
,
0
,
0
,
0
,
&
used_def
));
0
,
0
,
0
,
&
used_def
);
mb
.
resize
(
bufSize
);
// and try again...
// and try again...
}
else
{
}
else
{
// Fail.
// Fail.
...
...
qtools/scstring.cpp
View file @
a17029cb
...
@@ -34,7 +34,7 @@ SCString::SCString(int size)
...
@@ -34,7 +34,7 @@ SCString::SCString(int size)
m_data
=
(
char
*
)
malloc
(
size
);
m_data
=
(
char
*
)
malloc
(
size
);
if
(
m_data
)
if
(
m_data
)
{
{
m_data
[
0
]
=
'\0'
;
if
(
size
>
1
)
memset
(
m_data
,
' '
,
size
-
1
)
;
m_data
[
size
-
1
]
=
'\0'
;
m_data
[
size
-
1
]
=
'\0'
;
}
}
}
}
...
...
qtools/scstring.h
View file @
a17029cb
...
@@ -144,6 +144,7 @@ inline void SCString::duplicate( const char *str)
...
@@ -144,6 +144,7 @@ inline void SCString::duplicate( const char *str)
}
}
inline
SCString
&
SCString
::
duplicate
(
const
char
*
str
,
int
)
inline
SCString
&
SCString
::
duplicate
(
const
char
*
str
,
int
)
{
{
if
(
m_data
)
free
(
m_data
);
duplicate
(
str
);
duplicate
(
str
);
return
*
this
;
return
*
this
;
}
}
...
...
src/classdef.cpp
View file @
a17029cb
...
@@ -2497,8 +2497,8 @@ QCString ClassDef::compoundTypeString() const
...
@@ -2497,8 +2497,8 @@ QCString ClassDef::compoundTypeString() const
case
Protocol
:
return
"protocol"
;
case
Protocol
:
return
"protocol"
;
case
Category
:
return
"category"
;
case
Category
:
return
"category"
;
case
Exception
:
return
"exception"
;
case
Exception
:
return
"exception"
;
default
:
return
"unknown"
;
}
}
return
"unknown"
;
}
}
QCString
ClassDef
::
getOutputFileBase
()
const
QCString
ClassDef
::
getOutputFileBase
()
const
...
...
src/code.l
View file @
a17029cb
...
@@ -716,6 +716,7 @@ static MemberDef *setCallContextForVar(const QCString &name)
...
@@ -716,6 +716,7 @@ static MemberDef *setCallContextForVar(const QCString &name)
static void addDocCrossReference(MemberDef *src,MemberDef *dst)
static void addDocCrossReference(MemberDef *src,MemberDef *dst)
{
{
if (dst->isTypedef() || dst->isEnumerate()) return; // don't add types
//printf("addDocCrossReference src=%s,dst=%s\n",src->name().data(),dst->name().data());
//printf("addDocCrossReference src=%s,dst=%s\n",src->name().data(),dst->name().data());
if (Config_getBool("REFERENCED_BY_RELATION") &&
if (Config_getBool("REFERENCED_BY_RELATION") &&
(src->isFunction() || src->isSlot())
(src->isFunction() || src->isSlot())
...
...
src/config.l
View file @
a17029cb
...
@@ -2655,6 +2655,13 @@ void Config::create()
...
@@ -2655,6 +2655,13 @@ void Config::create()
TRUE
TRUE
);
);
cb->addDependency("HAVE_DOT");
cb->addDependency("HAVE_DOT");
cb = addBool(
"GROUP_GRAPHS",
"If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen \n"
"will generate a graph for groups, showing the direct groups dependencies\n",
TRUE
);
cb->addDependency("HAVE_DOT");
cb = addBool(
cb = addBool(
"UML_LOOK",
"UML_LOOK",
"If the UML_LOOK tag is set to YES doxygen will generate inheritance and \n"
"If the UML_LOOK tag is set to YES doxygen will generate inheritance and \n"
...
...
src/definition.h
View file @
a17029cb
...
@@ -197,6 +197,8 @@ class Definition
...
@@ -197,6 +197,8 @@ class Definition
void
writeNavigationPath
(
OutputList
&
ol
)
const
;
void
writeNavigationPath
(
OutputList
&
ol
)
const
;
protected
:
protected
:
void
setLocalName
(
const
QCString
name
)
{
m_localName
=
name
;
}
int
m_startBodyLine
;
// line number of the start of the definition
int
m_startBodyLine
;
// line number of the start of the definition
int
m_endBodyLine
;
// line number of the end of the definition
int
m_endBodyLine
;
// line number of the end of the definition
FileDef
*
m_bodyDef
;
// file definition containing the function body
FileDef
*
m_bodyDef
;
// file definition containing the function body
...
...
src/dirdef.cpp
View file @
a17029cb
...
@@ -27,9 +27,9 @@ DirDef::DirDef(const char *path) : Definition(path,1,path)
...
@@ -27,9 +27,9 @@ DirDef::DirDef(const char *path) : Definition(path,1,path)
{
// remove everything till the last /
{
// remove everything till the last /
m_shortName
=
m_shortName
.
mid
(
pi
+
1
);
m_shortName
=
m_shortName
.
mid
(
pi
+
1
);
}
}
setLocalName
(
m_shortName
);
m_fileList
=
new
FileList
;
m_fileList
=
new
FileList
;
m_classSDict
=
new
ClassSDict
(
17
);
m_usedDirs
=
new
QDict
<
UsedDir
>
(
257
);
m_usedDirs
=
new
QDict
<
UsedDir
>
(
257
);
m_usedDirs
->
setAutoDelete
(
TRUE
);
m_usedDirs
->
setAutoDelete
(
TRUE
);
m_dirCount
=
g_dirCount
++
;
m_dirCount
=
g_dirCount
++
;
...
@@ -39,6 +39,8 @@ DirDef::DirDef(const char *path) : Definition(path,1,path)
...
@@ -39,6 +39,8 @@ DirDef::DirDef(const char *path) : Definition(path,1,path)
DirDef
::~
DirDef
()
DirDef
::~
DirDef
()
{
{
delete
m_fileList
;
delete
m_usedDirs
;
}
}
bool
DirDef
::
isLinkableInProject
()
const
bool
DirDef
::
isLinkableInProject
()
const
...
...
src/dirdef.h
View file @
a17029cb
...
@@ -57,9 +57,8 @@ class DirDef : public Definition
...
@@ -57,9 +57,8 @@ class DirDef : public Definition
QCString
shortName
()
const
{
return
m_shortName
;
}
QCString
shortName
()
const
{
return
m_shortName
;
}
void
addSubDir
(
DirDef
*
subdir
);
void
addSubDir
(
DirDef
*
subdir
);
FileList
*
getFiles
()
const
{
return
m_fileList
;
}
FileList
*
getFiles
()
const
{
return
m_fileList
;
}
ClassSDict
*
getClasses
()
const
{
return
m_classSDict
;
}
void
addFile
(
FileDef
*
fd
);
void
addFile
(
FileDef
*
fd
);
const
QList
<
DirDef
>
&
subDirs
()
const
{
return
m_subdirs
;
}
const
DirList
&
subDirs
()
const
{
return
m_subdirs
;
}
bool
isCluster
()
const
{
return
m_subdirs
.
count
()
>
0
;
}
bool
isCluster
()
const
{
return
m_subdirs
.
count
()
>
0
;
}
int
level
()
const
{
return
m_level
;
}
int
level
()
const
{
return
m_level
;
}
DirDef
*
parent
()
const
{
return
m_parent
;
}
DirDef
*
parent
()
const
{
return
m_parent
;
}
...
@@ -90,7 +89,6 @@ class DirDef : public Definition
...
@@ -90,7 +89,6 @@ class DirDef : public Definition
QCString
m_dispName
;
QCString
m_dispName
;
QCString
m_shortName
;
QCString
m_shortName
;
FileList
*
m_fileList
;
// list of files in the group
FileList
*
m_fileList
;
// list of files in the group
ClassSDict
*
m_classSDict
;
// list of classes in the group
int
m_dirCount
;
int
m_dirCount
;
int
m_level
;
int
m_level
;
DirDef
*
m_parent
;
DirDef
*
m_parent
;
...
...
src/dot.cpp
View file @
a17029cb
...
@@ -28,6 +28,7 @@
...
@@ -28,6 +28,7 @@
#include "defargs.h"
#include "defargs.h"
#include "docparser.h"
#include "docparser.h"
#include "debug.h"
#include "debug.h"
#include "pagedef.h"
#include <qdir.h>
#include <qdir.h>
#include <qfile.h>
#include <qfile.h>
...
@@ -2646,4 +2647,412 @@ QString getDotImageMapFromFile(const QString& inFile, const QString& outDir,
...
@@ -2646,4 +2647,412 @@ QString getDotImageMapFromFile(const QString& inFile, const QString& outDir,
}
}
// end MDG mods
// end MDG mods
//-------------------------------------------------------------
DotGroupCollaboration
::
DotGroupCollaboration
(
GroupDef
*
gd
)
{
m_curNodeId
=
0
;
QCString
tmp_url
=
gd
->
getReference
()
+
"$"
+
gd
->
getOutputFileBase
();
m_usedNodes
=
new
QDict
<
DotNode
>
(
1009
);
m_rootNode
=
new
DotNode
(
m_curNodeId
++
,
gd
->
groupTitle
(),
tmp_url
,
0
,
TRUE
);
m_usedNodes
->
insert
(
gd
->
name
(),
m_rootNode
);
m_edges
.
setAutoDelete
(
TRUE
);
m_diskName
=
gd
->
getOutputFileBase
();
buildGraph
(
gd
,
0
);
}
DotGroupCollaboration
::~
DotGroupCollaboration
()
{
delete
m_usedNodes
;
}
void
DotGroupCollaboration
::
buildGraph
(
GroupDef
*
gd
,
int
)
{
QCString
tmp_url
;
//===========================
// hierarchy.
// Write parents
if
(
gd
->
partOfGroups
()
)
{
GroupListIterator
gli
(
*
gd
->
partOfGroups
());
GroupDef
*
d
;
for
(
gli
.
toFirst
();(
d
=
gli
.
current
());
++
gli
)
{
DotNode
*
nnode
=
m_usedNodes
->
find
(
d
->
name
());
if
(
!
nnode
)
{
// add node
tmp_url
=
d
->
getReference
()
+
"$"
+
d
->
getOutputFileBase
();
nnode
=
new
DotNode
(
m_curNodeId
++
,
d
->
groupTitle
(),
tmp_url
);
m_usedNodes
->
insert
(
d
->
name
(),
nnode
);
}
tmp_url
=
""
;
addEdge
(
nnode
,
m_rootNode
,
DotGroupCollaboration
::
thierarchy
,
tmp_url
,
tmp_url
);
}
}
// Add subgroups
if
(
gd
->
getSubGroups
()
&&
gd
->
getSubGroups
()
->
count
()
)
{
QListIterator
<
GroupDef
>
defli
(
*
gd
->
getSubGroups
());
GroupDef
*
def
;
for
(;(
def
=
defli
.
current
());
++
defli
)
{
DotNode
*
nnode
=
m_usedNodes
->
find
(
def
->
name
());
if
(
!
nnode
)
{
// add node
tmp_url
=
def
->
getReference
()
+
"$"
+
def
->
getOutputFileBase
();
nnode
=
new
DotNode
(
m_curNodeId
++
,
def
->
groupTitle
(),
tmp_url
);
m_usedNodes
->
insert
(
def
->
name
(),
nnode
);
}
tmp_url
=
""
;
addEdge
(
m_rootNode
,
nnode
,
DotGroupCollaboration
::
thierarchy
,
tmp_url
,
tmp_url
);
}
}
//=======================
// Write collaboration
// Add members
addMemberList
(
gd
->
getMembers
()
);
// Add classes
if
(
gd
->
getClasses
()
&&
gd
->
getClasses
()
->
count
()
)
{
ClassSDict
::
Iterator
defli
(
*
gd
->
getClasses
());
ClassDef
*
def
;
for
(;(
def
=
defli
.
current
());
++
defli
)
{
tmp_url
=
def
->
getReference
()
+
"$"
+
def
->
getOutputFileBase
()
+
Doxygen
::
htmlFileExtension
;
addCollaborationMember
(
def
,
tmp_url
,
DotGroupCollaboration
::
tclass
);
}
}
// Add namespaces
if
(
gd
->
getNamespaces
()
&&
gd
->
getNamespaces
()
->
count
()
)
{
NamespaceSDict
::
Iterator
defli
(
*
gd
->
getNamespaces
());
NamespaceDef
*
def
;
for
(;(
def
=
defli
.
current
());
++
defli
)
{
tmp_url
=
def
->
getReference
()
+
"$"
+
def
->
getOutputFileBase
()
+
Doxygen
::
htmlFileExtension
;
addCollaborationMember
(
def
,
tmp_url
,
DotGroupCollaboration
::
tnamespace
);
}
}
// Add files
if
(
gd
->
getFiles
()
&&
gd
->
getFiles
()
->
count
()
)
{
QListIterator
<
FileDef
>
defli
(
*
gd
->
getFiles
());
FileDef
*
def
;
for
(;(
def
=
defli
.
current
());
++
defli
)
{
tmp_url
=
def
->
getReference
()
+
"$"
+
def
->
getOutputFileBase
()
+
Doxygen
::
htmlFileExtension
;
addCollaborationMember
(
def
,
tmp_url
,
DotGroupCollaboration
::
tfile
);
}
}
// Add pages
if
(
gd
->
getPages
()
&&
gd
->
getPages
()
->
count
()
)
{
PageSDict
::
Iterator
defli
(
*
gd
->
getPages
());
PageDef
*
def
;
for
(;(
def
=
defli
.
current
());
++
defli
)
{
tmp_url
=
def
->
getReference
()
+
"$"
+
def
->
getOutputFileBase
()
+
Doxygen
::
htmlFileExtension
;
addCollaborationMember
(
def
,
tmp_url
,
DotGroupCollaboration
::
tpages
);
}
}
// Add directories
if
(
gd
->
getDirs
()
&&
gd
->
getDirs
()
->
count
()
)
{
QListIterator
<
DirDef
>
defli
(
*
gd
->
getDirs
());
DirDef
*
def
;
for
(;(
def
=
defli
.
current
());
++
defli
)
{
tmp_url
=
def
->
getReference
()
+
"$"
+
def
->
getOutputFileBase
()
+
Doxygen
::
htmlFileExtension
;
addCollaborationMember
(
def
,
tmp_url
,
DotGroupCollaboration
::
tdir
);
}
}
}
void
DotGroupCollaboration
::
addMemberList
(
MemberList
*
ml
)
{
if
(
!
(
ml
&&
ml
->
count
())
)
return
;
MemberListIterator
defli
(
*
ml
);
MemberDef
*
def
;
for
(;(
def
=
defli
.
current
());
++
defli
)
{
QCString
tmp_url
=
def
->
getReference
()
+
"$"
+
def
->
getOutputFileBase
()
+
Doxygen
::
htmlFileExtension
+
"#"
+
def
->
anchor
();
addCollaborationMember
(
def
,
tmp_url
,
DotGroupCollaboration
::
tmember
);
}
}
DotGroupCollaboration
::
Edge
*
DotGroupCollaboration
::
addEdge
(
DotNode
*
_pNStart
,
DotNode
*
_pNEnd
,
EdgeType
_eType
,
const
QCString
&
_label
,
const
QCString
&
_url
)
{
// search a existing link.
QListIterator
<
Edge
>
lli
(
m_edges
);
Edge
*
newEdge
=
0
;
for
(
lli
.
toFirst
();
(
newEdge
=
lli
.
current
());
++
lli
)
{
if
(
newEdge
->
pNStart
==
_pNStart
&&
newEdge
->
pNEnd
==
_pNEnd
&&
newEdge
->
eType
==
_eType
)
{
// edge already found
break
;
}
}
if
(
newEdge
==
0
)
// new link
{
newEdge
=
new
Edge
(
_pNStart
,
_pNEnd
,
_eType
);
m_edges
.
append
(
newEdge
);
}
if
(
!
_label
.
isEmpty
())
{
newEdge
->
links
.
append
(
new
Link
(
_label
,
_url
));
}
return
newEdge
;
}
void
DotGroupCollaboration
::
addCollaborationMember
(
Definition
*
def
,
QCString
&
url
,
EdgeType
eType
)
{
// Create group nodes
if
(
!
def
->
partOfGroups
()
)
return
;
GroupListIterator
gli
(
*
def
->
partOfGroups
());
GroupDef
*
d
;
QCString
tmp_str
;
for
(;(
d
=
gli
.
current
());
++
gli
)
{
DotNode
*
nnode
=
m_usedNodes
->
find
(
d
->
name
());
if
(
nnode
!=
m_rootNode
)
{
if
(
nnode
==
0
)
{
// add node
tmp_str
=
d
->
getReference
()
+
"$"
+
d
->
getOutputFileBase
();
nnode
=
new
DotNode
(
m_curNodeId
++
,
d
->
groupTitle
(),
tmp_str
);
m_usedNodes
->
insert
(
d
->
name
(),
nnode
);
}
tmp_str
=
def
->
qualifiedName
();
addEdge
(
m_rootNode
,
nnode
,
eType
,
tmp_str
,
url
);
}
}
}
QCString
DotGroupCollaboration
::
writeGraph
(
QTextStream
&
t
,
GraphOutputFormat
format
,
const
char
*
path
,
const
char
*
,
bool
writeImageMap
)
{
QDir
d
(
path
);
// store the original directory
if
(
!
d
.
exists
())
{
err
(
"Error: Output dir %s does not exist!
\n
"
,
path
);
exit
(
1
);
}
QCString
oldDir
=
convertToQCString
(
QDir
::
currentDirPath
());
// go to the output directory (i.e. path)
QDir
::
setCurrent
(
d
.
absPath
());
QDir
thisDir
;
QCString
baseName
=
m_diskName
;
QFile
dotfile
(
baseName
+
".dot"
);
if
(
dotfile
.
open
(
IO_WriteOnly
))
{
QTextStream
tdot
(
&
dotfile
);
writeGraphHeader
(
tdot
);
// clean write flags
QDictIterator
<
DotNode
>
dni
(
*
m_usedNodes
);
DotNode
*
pn
;
for
(
dni
.
toFirst
();(
pn
=
dni
.
current
());
++
dni
)
pn
->
clearWriteFlag
();
// write other nodes.
for
(
dni
.
toFirst
();(
pn
=
dni
.
current
());
++
dni
)
{
pn
->
write
(
tdot
,
DotNode
::
Inheritance
,
format
,
TRUE
,
FALSE
,
1
,
FALSE
,
FALSE
);
}
// write edges
QListIterator
<
Edge
>
eli
(
m_edges
);
Edge
*
edge
;
for
(
eli
.
toFirst
();(
edge
=
eli
.
current
());
++
eli
)
{
edge
->
write
(
tdot
,
m_curNodeId
);
}
writeGraphFooter
(
tdot
);
dotfile
.
close
();
}
QCString
imgExt
=
Config_getEnum
(
"DOT_IMAGE_FORMAT"
);
if
(
format
==
BITMAP
)
// run dot to create a bitmap image
{
QCString
dotArgs
(
maxCmdLine
);
QCString
imgName
=
baseName
+
"."
+
imgExt
;
dotArgs
.
sprintf
(
"
\"
%s.dot
\"
-T%s -o
\"
%s
\"
"
,
baseName
.
data
(),
imgExt
.
data
(),
imgName
.
data
());
QCString
mapName
=
baseName
+
".map"
;
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
)
{
QCString
mapLabel
=
convertNameToFile
(
baseName
);
t
<<
"<center><table><tr><td><img src=
\"
"
<<
imgName
<<
"
\"
border=
\"
0
\"
alt=
\"\"
usemap=
\"
#"
<<
mapLabel
<<
"_map
\"
>"
<<
endl
;
t
<<
"<map name=
\"
"
<<
mapLabel
<<
"_map
\"
>"
<<
endl
;
convertMapFile
(
t
,
mapName
,
""
);
t
<<
"</map></td></tr></table></center>"
<<
endl
;
thisDir
.
remove
(
mapName
);
}
}
else
if
(
format
==
EPS
)
{
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"
))
{
QCString
epstopdfArgs
(
maxCmdLine
);
epstopdfArgs
.
sprintf
(
"
\"
%s.eps
\"
--outfile=
\"
%s.pdf
\"
"
,
baseName
.
data
(),
baseName
.
data
());
if
(
iSystem
(
"epstopdf"
,
epstopdfArgs
,
TRUE
)
!=
0
)
{
err
(
"Error: Problems running epstopdf. Check your TeX installation!
\n
"
);
QDir
::
setCurrent
(
oldDir
);
return
baseName
;
}
}
int
width
,
height
;
if
(
!
readBoundingBoxEPS
(
baseName
+
".eps"
,
&
width
,
&
height
))
{
err
(
"Error: Could not extract bounding box from .eps!
\n
"
);
QDir
::
setCurrent
(
oldDir
);
return
baseName
;
}
int
maxWidth
=
420
;
/* approx. page width in points */
t
<<
"
\\
begin{figure}[H]
\n
"
"
\\
begin{center}
\n
"
"
\\
leavevmode
\n
"
"
\\
includegraphics[width="
<<
QMIN
(
width
/
2
,
maxWidth
)
<<
"pt]{"
<<
baseName
<<
"}
\n
"
"
\\
end{center}
\n
"
"
\\
end{figure}
\n
"
;
}
if
(
Config_getBool
(
"DOT_CLEANUP"
))
{
thisDir
.
remove
(
baseName
+
".dot"
);
}
QDir
::
setCurrent
(
oldDir
);
return
baseName
;
}
void
DotGroupCollaboration
::
Edge
::
write
(
QTextStream
&
t
,
int
&
)
{
const
char
*
linkTypeColor
[]
=
{
"darkorchid3"
,
"orange"
,
"blueviolet"
,
"darkgreen"
,
"firebrick4"
,
"grey75"
,
"midnightblue"
};
QCString
arrowStyle
=
"dir=
\"
none
\"
, style=
\"
dashed
\"
"
;
t
<<
" Node"
<<
pNStart
->
number
();
t
<<
"->"
;
t
<<
"Node"
<<
pNEnd
->
number
();
t
<<
" [shape=plaintext"
;
if
(
links
.
count
()
>
0
)
// there are links
{
t
<<
", "
;
// HTML-like edge labels crash on my Mac with Graphviz 2.0! and
// are not supported by older version of dot.
//
//t << label=<<TABLE BORDER=\"0\" CELLBORDER=\"0\">";
//QListIterator<Link> lli(links);
//Link *link;
//for( lli.toFirst(); (link=lli.current()); ++lli)
//{
// t << "<TR><TD";
// if ( !link->url.isEmpty() )
// t << " HREF=\"" << link->url << "\"";
// t << ">" << link->label << "</TD></TR>";
//}
//t << "</TABLE>>";
t
<<
"label=
\"
"
;
QListIterator
<
Link
>
lli
(
links
);
Link
*
link
;
bool
first
=
TRUE
;
for
(
lli
.
toFirst
();
(
link
=
lli
.
current
());
++
lli
)
{
if
(
first
)
first
=
FALSE
;
else
t
<<
"
\\
n"
;
t
<<
link
->
label
;
}
t
<<
"
\"
"
;
}
switch
(
eType
)
{
case
thierarchy
:
arrowStyle
=
"dir=
\"
back
\"
, style=
\"
solid
\"
"
;
default
:
t
<<
", color=
\"
"
<<
linkTypeColor
[(
int
)
eType
]
<<
"
\"
"
;
break
;
}
t
<<
", "
<<
arrowStyle
;
t
<<
"];"
<<
endl
;
}
bool
DotGroupCollaboration
::
isTrivial
()
const
{
return
m_usedNodes
->
count
()
<=
1
;
}
void
DotGroupCollaboration
::
writeGraphHeader
(
QTextStream
&
t
)
{
t
<<
"digraph structs"
<<
endl
;
t
<<
"{"
<<
endl
;
#if defined(DOT_TRANSPARENT)
t
<<
" bgcolor=
\"
transparent
\"
"
<<
endl
;
#endif
t
<<
" edge [fontname=
\"
Helvetica
\"
,fontsize=8,"
"labelfontname=
\"
Helvetica
\"
,labelfontsize=8];
\n
"
;
t
<<
" node [fontname=
\"
Helvetica
\"
,fontsize=10,shape=record];
\n
"
;
t
<<
"rankdir=LR;
\n
"
;
}
src/dot.h
View file @
a17029cb
...
@@ -32,6 +32,8 @@ class ClassSDict;
...
@@ -32,6 +32,8 @@ class ClassSDict;
class
MemberDef
;
class
MemberDef
;
class
Definition
;
class
Definition
;
class
DirDef
;
class
DirDef
;
class
GroupDef
;
class
DotGroupCollaboration
;
enum
GraphOutputFormat
{
BITMAP
,
EPS
};
enum
GraphOutputFormat
{
BITMAP
,
EPS
};
...
@@ -66,6 +68,7 @@ class DotNode
...
@@ -66,6 +68,7 @@ class DotNode
void
deleteNode
(
DotNodeList
&
deletedList
,
SDict
<
DotNode
>
*
skipNodes
=
0
);
void
deleteNode
(
DotNodeList
&
deletedList
,
SDict
<
DotNode
>
*
skipNodes
=
0
);
void
removeChild
(
DotNode
*
n
);
void
removeChild
(
DotNode
*
n
);
void
removeParent
(
DotNode
*
n
);
void
removeParent
(
DotNode
*
n
);
int
findParent
(
DotNode
*
n
);
void
write
(
QTextStream
&
t
,
GraphType
gt
,
GraphOutputFormat
f
,
void
write
(
QTextStream
&
t
,
GraphType
gt
,
GraphOutputFormat
f
,
bool
topDown
,
bool
toChildren
,
int
maxDistance
,
bool
backArrows
,
bool
reNumber
);
bool
topDown
,
bool
toChildren
,
int
maxDistance
,
bool
backArrows
,
bool
reNumber
);
int
m_subgraphId
;
int
m_subgraphId
;
...
@@ -100,6 +103,8 @@ class DotNode
...
@@ -100,6 +103,8 @@ class DotNode
friend
class
DotInclDepGraph
;
friend
class
DotInclDepGraph
;
friend
class
DotNodeList
;
friend
class
DotNodeList
;
friend
class
DotCallGraph
;
friend
class
DotCallGraph
;
friend
class
DotGroupCollaboration
;
friend
void
writeDotGraph
(
friend
void
writeDotGraph
(
DotNode
*
root
,
GraphType
gt
,
DotNode
*
root
,
GraphType
gt
,
GraphOutputFormat
f
,
const
QCString
&
baseName
,
GraphOutputFormat
f
,
const
QCString
&
baseName
,
...
@@ -113,6 +118,13 @@ class DotNode
...
@@ -113,6 +118,13 @@ class DotNode
int
distance
,
bool
backArrows
int
distance
,
bool
backArrows
);
);
};
};
inline
int
DotNode
::
findParent
(
DotNode
*
n
)
{
if
(
!
m_parents
)
return
-
1
;
return
m_parents
->
find
(
n
);
}
class
DotGfxHierarchyTable
class
DotGfxHierarchyTable
{
{
...
@@ -217,6 +229,63 @@ class DotDirDeps
...
@@ -217,6 +229,63 @@ class DotDirDeps
DirDef
*
m_dir
;
DirDef
*
m_dir
;
};
};
class
DotGroupCollaboration
{
public
:
enum
EdgeType
{
tmember
=
0
,
tclass
,
tnamespace
,
tfile
,
tpages
,
tdir
,
thierarchy
};
class
Link
{
public
:
Link
(
const
QCString
lab
,
const
QCString
&
u
)
:
label
(
lab
),
url
(
u
)
{}
QCString
label
;
QCString
url
;
};
class
Edge
{
public
:
Edge
(
DotNode
*
start
,
DotNode
*
end
,
EdgeType
type
)
:
pNStart
(
start
),
pNEnd
(
end
),
eType
(
type
)
{
links
.
setAutoDelete
(
TRUE
);
}
DotNode
*
pNStart
;
DotNode
*
pNEnd
;
EdgeType
eType
;
QList
<
Link
>
links
;
void
write
(
QTextStream
&
t
,
int
&
curNodeId
);
};
DotGroupCollaboration
(
GroupDef
*
gd
);
~
DotGroupCollaboration
();
QCString
writeGraph
(
QTextStream
&
t
,
GraphOutputFormat
format
,
const
char
*
path
,
const
char
*
relPath
,
bool
writeImageMap
=
TRUE
);
void
buildGraph
(
GroupDef
*
gd
,
int
distance
);
bool
isTrivial
()
const
;
private
:
void
addCollaborationMember
(
Definition
*
def
,
QCString
&
url
,
EdgeType
eType
);
void
addMemberList
(
class
MemberList
*
ml
);
void
writeGraphHeader
(
QTextStream
&
t
);
Edge
*
addEdge
(
DotNode
*
_pNStart
,
DotNode
*
_pNEnd
,
EdgeType
_eType
,
const
QCString
&
_label
,
const
QCString
&
_url
);
DotNode
*
m_rootNode
;
int
m_curNodeId
;
QDict
<
DotNode
>
*
m_usedNodes
;
QCString
m_diskName
;
QList
<
Edge
>
m_edges
;
};
void
generateGraphLegend
(
const
char
*
path
);
void
generateGraphLegend
(
const
char
*
path
);
void
writeDotGraphFromFile
(
const
char
*
inFile
,
const
char
*
outDir
,
void
writeDotGraphFromFile
(
const
char
*
inFile
,
const
char
*
outDir
,
const
char
*
outFile
,
GraphOutputFormat
format
);
const
char
*
outFile
,
GraphOutputFormat
format
);
...
...
src/doxygen.cpp
View file @
a17029cb
...
@@ -8470,6 +8470,7 @@ void parseInput()
...
@@ -8470,6 +8470,7 @@ void parseInput()
if
(
fi
.
size
()
==
0
)
if
(
fi
.
size
()
==
0
)
{
{
err
(
"No input read, no output generated!
\n
"
);
err
(
"No input read, no output generated!
\n
"
);
QDir
().
remove
(
tmpName
);
delete
root
;
delete
root
;
cleanUpDoxygen
();
cleanUpDoxygen
();
exit
(
1
);
exit
(
1
);
...
...
src/groupdef.cpp
View file @
a17029cb
...
@@ -33,6 +33,7 @@
...
@@ -33,6 +33,7 @@
#include "pagedef.h"
#include "pagedef.h"
#include "docparser.h"
#include "docparser.h"
#include "searchindex.h"
#include "searchindex.h"
#include "dot.h"
GroupDef
::
GroupDef
(
const
char
*
df
,
int
dl
,
const
char
*
na
,
const
char
*
t
,
GroupDef
::
GroupDef
(
const
char
*
df
,
int
dl
,
const
char
*
na
,
const
char
*
t
,
const
char
*
refFileName
)
:
Definition
(
df
,
dl
,
na
)
const
char
*
refFileName
)
:
Definition
(
df
,
dl
,
na
)
...
@@ -483,6 +484,23 @@ void GroupDef::writeDocumentation(OutputList &ol)
...
@@ -483,6 +484,23 @@ void GroupDef::writeDocumentation(OutputList &ol)
}
}
}
}
if
(
Config_getBool
(
"HAVE_DOT"
)
&&
Config_getBool
(
"GROUP_GRAPHS"
)
)
{
DotGroupCollaboration
graph
(
this
);
if
(
!
graph
.
isTrivial
())
{
msg
(
"Generating dependency graph for group %s
\n
"
,
qualifiedName
().
data
());
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
newParagraph
();
ol
.
startGroupCollaboration
();
ol
.
parseText
(
theTranslator
->
trCollaborationDiagram
(
title
));
ol
.
endGroupCollaboration
(
graph
);
ol
.
popGeneratorState
();
}
}
if
(
Config_getBool
(
"DETAILS_AT_TOP"
))
if
(
Config_getBool
(
"DETAILS_AT_TOP"
))
{
{
writeDetailedDocumentation
(
ol
);
writeDetailedDocumentation
(
ol
);
...
...
src/groupdef.h
View file @
a17029cb
...
@@ -112,6 +112,7 @@ class GroupDef : public Definition
...
@@ -112,6 +112,7 @@ class GroupDef : public Definition
GroupList
*
getSubGroups
()
const
{
return
groupList
;
}
GroupList
*
getSubGroups
()
const
{
return
groupList
;
}
PageSDict
*
getPages
()
const
{
return
pageDict
;
}
PageSDict
*
getPages
()
const
{
return
pageDict
;
}
DirList
*
getDirs
()
const
{
return
dirList
;
}
DirList
*
getDirs
()
const
{
return
dirList
;
}
MemberList
*
getMembers
()
const
{
return
allMemberList
;
}
protected
:
protected
:
void
addMemberListToGroup
(
MemberList
*
,
bool
(
MemberDef
::*
)()
const
);
void
addMemberListToGroup
(
MemberList
*
,
bool
(
MemberDef
::*
)()
const
);
...
...
src/htmlgen.cpp
View file @
a17029cb
...
@@ -1260,6 +1260,17 @@ void HtmlGenerator::endInclDepGraph(DotInclDepGraph &g)
...
@@ -1260,6 +1260,17 @@ void HtmlGenerator::endInclDepGraph(DotInclDepGraph &g)
g
.
writeGraph
(
t
,
BITMAP
,
dir
,
relPath
);
g
.
writeGraph
(
t
,
BITMAP
,
dir
,
relPath
);
}
}
void
HtmlGenerator
::
startGroupCollaboration
()
{
}
void
HtmlGenerator
::
endGroupCollaboration
(
DotGroupCollaboration
&
g
)
{
g
.
writeGraph
(
t
,
BITMAP
,
dir
,
relPath
);
}
void
HtmlGenerator
::
startCallGraph
()
void
HtmlGenerator
::
startCallGraph
()
{
{
}
}
...
...
src/htmlgen.h
View file @
a17029cb
...
@@ -190,6 +190,8 @@ class HtmlGenerator : public OutputGenerator
...
@@ -190,6 +190,8 @@ class HtmlGenerator : public OutputGenerator
void
endDotGraph
(
DotClassGraph
&
g
);
void
endDotGraph
(
DotClassGraph
&
g
);
void
startInclDepGraph
();
void
startInclDepGraph
();
void
endInclDepGraph
(
DotInclDepGraph
&
g
);
void
endInclDepGraph
(
DotInclDepGraph
&
g
);
void
startGroupCollaboration
();
void
endGroupCollaboration
(
DotGroupCollaboration
&
g
);
void
startCallGraph
();
void
startCallGraph
();
void
endCallGraph
(
DotCallGraph
&
g
);
void
endCallGraph
(
DotCallGraph
&
g
);
void
startDirDepGraph
();
void
startDirDepGraph
();
...
...
src/htmlhelp.cpp
View file @
a17029cb
...
@@ -174,7 +174,7 @@ void HtmlHelpIndex::writeFields(QTextStream &t)
...
@@ -174,7 +174,7 @@ void HtmlHelpIndex::writeFields(QTextStream &t)
{
// finish old list at level 2
{
// finish old list at level 2
if
(
level2Started
)
t
<<
" </UL>"
<<
endl
;
if
(
level2Started
)
t
<<
" </UL>"
<<
endl
;
level2Started
=
FALSE
;
level2Started
=
FALSE
;
// <Antony>
// <Antony>
// Added this code so that an item with only one subitem is written
// Added this code so that an item with only one subitem is written
// without any subitem.
// without any subitem.
...
...
src/latexgen.cpp
View file @
a17029cb
...
@@ -1448,6 +1448,15 @@ void LatexGenerator::endInclDepGraph(DotInclDepGraph &g)
...
@@ -1448,6 +1448,15 @@ void LatexGenerator::endInclDepGraph(DotInclDepGraph &g)
g
.
writeGraph
(
t
,
EPS
,
Config_getString
(
"LATEX_OUTPUT"
),
relPath
);
g
.
writeGraph
(
t
,
EPS
,
Config_getString
(
"LATEX_OUTPUT"
),
relPath
);
}
}
void
LatexGenerator
::
startGroupCollaboration
()
{
}
void
LatexGenerator
::
endGroupCollaboration
(
DotGroupCollaboration
&
g
)
{
g
.
writeGraph
(
t
,
EPS
,
Config_getString
(
"LATEX_OUTPUT"
),
relPath
);
}
void
LatexGenerator
::
startCallGraph
()
void
LatexGenerator
::
startCallGraph
()
{
{
}
}
...
...
src/latexgen.h
View file @
a17029cb
...
@@ -184,6 +184,8 @@ class LatexGenerator : public OutputGenerator
...
@@ -184,6 +184,8 @@ class LatexGenerator : public OutputGenerator
void
startInclDepGraph
();
void
startInclDepGraph
();
void
endInclDepGraph
(
DotInclDepGraph
&
);
void
endInclDepGraph
(
DotInclDepGraph
&
);
void
startCallGraph
();
void
startCallGraph
();
void
startGroupCollaboration
();
void
endGroupCollaboration
(
DotGroupCollaboration
&
g
);
void
endCallGraph
(
DotCallGraph
&
);
void
endCallGraph
(
DotCallGraph
&
);
void
startDirDepGraph
();
void
startDirDepGraph
();
void
endDirDepGraph
(
DotDirDeps
&
g
);
void
endDirDepGraph
(
DotDirDeps
&
g
);
...
...
src/mangen.h
View file @
a17029cb
...
@@ -229,6 +229,8 @@ class ManGenerator : public OutputGenerator
...
@@ -229,6 +229,8 @@ class ManGenerator : public OutputGenerator
void
endDotGraph
(
DotClassGraph
&
)
{}
void
endDotGraph
(
DotClassGraph
&
)
{}
void
startInclDepGraph
()
{}
void
startInclDepGraph
()
{}
void
endInclDepGraph
(
DotInclDepGraph
&
)
{}
void
endInclDepGraph
(
DotInclDepGraph
&
)
{}
void
startGroupCollaboration
()
{}
void
endGroupCollaboration
(
DotGroupCollaboration
&
)
{}
void
startCallGraph
()
{}
void
startCallGraph
()
{}
void
endCallGraph
(
DotCallGraph
&
)
{}
void
endCallGraph
(
DotCallGraph
&
)
{}
void
startDirDepGraph
()
{}
void
startDirDepGraph
()
{}
...
...
src/outputgen.h
View file @
a17029cb
...
@@ -32,8 +32,10 @@ class DotInclDepGraph;
...
@@ -32,8 +32,10 @@ class DotInclDepGraph;
class
DotCallGraph
;
class
DotCallGraph
;
class
DotDirDeps
;
class
DotDirDeps
;
class
DotGfxHierarchyTable
;
class
DotGfxHierarchyTable
;
class
DotGroupCollaboration
;
class
DocNode
;
class
DocNode
;
class
MemberDef
;
class
MemberDef
;
class
GroupDef
;
/*! \brief Output interface for code parser.
/*! \brief Output interface for code parser.
*/
*/
...
@@ -338,6 +340,8 @@ class OutputGenerator : public BaseOutputDocInterface
...
@@ -338,6 +340,8 @@ class OutputGenerator : public BaseOutputDocInterface
virtual
void
endDotGraph
(
DotClassGraph
&
g
)
=
0
;
virtual
void
endDotGraph
(
DotClassGraph
&
g
)
=
0
;
virtual
void
startInclDepGraph
()
=
0
;
virtual
void
startInclDepGraph
()
=
0
;
virtual
void
endInclDepGraph
(
DotInclDepGraph
&
g
)
=
0
;
virtual
void
endInclDepGraph
(
DotInclDepGraph
&
g
)
=
0
;
virtual
void
startGroupCollaboration
()
=
0
;
virtual
void
endGroupCollaboration
(
DotGroupCollaboration
&
g
)
=
0
;
virtual
void
startCallGraph
()
=
0
;
virtual
void
startCallGraph
()
=
0
;
virtual
void
endCallGraph
(
DotCallGraph
&
g
)
=
0
;
virtual
void
endCallGraph
(
DotCallGraph
&
g
)
=
0
;
virtual
void
startDirDepGraph
()
=
0
;
virtual
void
startDirDepGraph
()
=
0
;
...
...
src/outputlist.cpp
View file @
a17029cb
...
@@ -268,6 +268,7 @@ FORALL1(DotInclDepGraph &a1,a1)
...
@@ -268,6 +268,7 @@ FORALL1(DotInclDepGraph &a1,a1)
FORALL1
(
DotCallGraph
&
a1
,
a1
)
FORALL1
(
DotCallGraph
&
a1
,
a1
)
FORALL1
(
DotDirDeps
&
a1
,
a1
)
FORALL1
(
DotDirDeps
&
a1
,
a1
)
FORALL1
(
DotGfxHierarchyTable
&
a1
,
a1
)
FORALL1
(
DotGfxHierarchyTable
&
a1
,
a1
)
FORALL1
(
DotGroupCollaboration
&
a1
,
a1
)
FORALL1
(
SectionTypes
a1
,
a1
)
FORALL1
(
SectionTypes
a1
,
a1
)
#if defined(HAS_BOOL_TYPE) || defined(Q_HAS_BOOL_TYPE)
#if defined(HAS_BOOL_TYPE) || defined(Q_HAS_BOOL_TYPE)
FORALL1
(
bool
a1
,
a1
)
FORALL1
(
bool
a1
,
a1
)
...
...
src/outputlist.h
View file @
a17029cb
...
@@ -38,6 +38,7 @@ class DotDirDeps;
...
@@ -38,6 +38,7 @@ class DotDirDeps;
class
DotInclDepGraph
;
class
DotInclDepGraph
;
class
DotGfxHierarchyTable
;
class
DotGfxHierarchyTable
;
class
SectionDict
;
class
SectionDict
;
class
DotGroupCollaboration
;
class
OutputList
:
public
OutputDocInterface
class
OutputList
:
public
OutputDocInterface
{
{
...
@@ -327,6 +328,10 @@ class OutputList : public OutputDocInterface
...
@@ -327,6 +328,10 @@ class OutputList : public OutputDocInterface
{
forall
(
&
OutputGenerator
::
startDirDepGraph
);
}
{
forall
(
&
OutputGenerator
::
startDirDepGraph
);
}
void
endDirDepGraph
(
DotDirDeps
&
g
)
void
endDirDepGraph
(
DotDirDeps
&
g
)
{
forall
(
&
OutputGenerator
::
endDirDepGraph
,
g
);
}
{
forall
(
&
OutputGenerator
::
endDirDepGraph
,
g
);
}
void
startGroupCollaboration
()
{
forall
(
&
OutputGenerator
::
startGroupCollaboration
);
}
void
endGroupCollaboration
(
DotGroupCollaboration
&
g
)
{
forall
(
&
OutputGenerator
::
endGroupCollaboration
,
g
);
}
void
writeGraphicalHierarchy
(
DotGfxHierarchyTable
&
g
)
void
writeGraphicalHierarchy
(
DotGfxHierarchyTable
&
g
)
{
forall
(
&
OutputGenerator
::
writeGraphicalHierarchy
,
g
);
}
{
forall
(
&
OutputGenerator
::
writeGraphicalHierarchy
,
g
);
}
void
startTextBlock
(
bool
dense
=
FALSE
)
void
startTextBlock
(
bool
dense
=
FALSE
)
...
@@ -392,6 +397,7 @@ class OutputList : public OutputDocInterface
...
@@ -392,6 +397,7 @@ class OutputList : public OutputDocInterface
FORALLPROTO1
(
DotClassGraph
&
);
FORALLPROTO1
(
DotClassGraph
&
);
FORALLPROTO1
(
DotInclDepGraph
&
);
FORALLPROTO1
(
DotInclDepGraph
&
);
FORALLPROTO1
(
DotCallGraph
&
);
FORALLPROTO1
(
DotCallGraph
&
);
FORALLPROTO1
(
DotGroupCollaboration
&
);
FORALLPROTO1
(
DotDirDeps
&
);
FORALLPROTO1
(
DotDirDeps
&
);
FORALLPROTO1
(
DotGfxHierarchyTable
&
);
FORALLPROTO1
(
DotGfxHierarchyTable
&
);
FORALLPROTO1
(
SectionTypes
);
FORALLPROTO1
(
SectionTypes
);
...
...
src/rtfgen.cpp
View file @
a17029cb
...
@@ -2236,6 +2236,14 @@ void RTFGenerator::endInclDepGraph(DotInclDepGraph &g)
...
@@ -2236,6 +2236,14 @@ void RTFGenerator::endInclDepGraph(DotInclDepGraph &g)
DBG_RTF
(
t
<<
"{
\\
comment (endInclDepGraph)}"
<<
endl
)
DBG_RTF
(
t
<<
"{
\\
comment (endInclDepGraph)}"
<<
endl
)
}
}
void
RTFGenerator
::
startGroupCollaboration
()
{
}
void
RTFGenerator
::
endGroupCollaboration
(
DotGroupCollaboration
&
)
{
}
void
RTFGenerator
::
startCallGraph
()
void
RTFGenerator
::
startCallGraph
()
{
{
DBG_RTF
(
t
<<
"{
\\
comment (startCallGraph)}"
<<
endl
)
DBG_RTF
(
t
<<
"{
\\
comment (startCallGraph)}"
<<
endl
)
...
...
src/rtfgen.h
View file @
a17029cb
...
@@ -225,6 +225,8 @@ class RTFGenerator : public OutputGenerator
...
@@ -225,6 +225,8 @@ class RTFGenerator : public OutputGenerator
void
endDotGraph
(
DotClassGraph
&
);
void
endDotGraph
(
DotClassGraph
&
);
void
startInclDepGraph
();
void
startInclDepGraph
();
void
endInclDepGraph
(
DotInclDepGraph
&
);
void
endInclDepGraph
(
DotInclDepGraph
&
);
void
startGroupCollaboration
();
void
endGroupCollaboration
(
DotGroupCollaboration
&
g
);
void
startCallGraph
();
void
startCallGraph
();
void
endCallGraph
(
DotCallGraph
&
);
void
endCallGraph
(
DotCallGraph
&
);
void
startDirDepGraph
();
void
startDirDepGraph
();
...
...
src/scanner.l
View file @
a17029cb
...
@@ -376,7 +376,7 @@ static void addXRefItem(const char *listName,const char *itemTitle,const char *l
...
@@ -376,7 +376,7 @@ static void addXRefItem(const char *listName,const char *itemTitle,const char *l
SectionInfo *si=new SectionInfo(listName,anchorLabel,
SectionInfo *si=new SectionInfo(listName,anchorLabel,
sectionTitle,SectionInfo::Anchor);
sectionTitle,SectionInfo::Anchor);
Doxygen::sectionDict.insert(anchorLabel,si);
Doxygen::sectionDict.insert(anchorLabel,si);
current->anchors->append(
new SectionInfo(*si)
);
current->anchors->append(
si
);
}
}
current->brief = slString.copy(); // restore orginial brief desc.
current->brief = slString.copy(); // restore orginial brief desc.
}
}
...
@@ -2303,6 +2303,10 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -2303,6 +2303,10 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->startLine = yyLineNr;
current->startLine = yyLineNr;
current_root->addSubEntry( current ) ;
current_root->addSubEntry( current ) ;
}
}
else
{
delete current;
}
if ( *yytext == ',')
if ( *yytext == ',')
{
{
current = new Entry(*current);
current = new Entry(*current);
...
@@ -3665,6 +3669,10 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -3665,6 +3669,10 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
}
}
else
else
{
{
if (current->section == Entry::ENUM_SEC)
{ // found "enum a b" -> variable
current->section = Entry::VARIABLE_SEC ;
}
current->type += ' ' ;
current->type += ' ' ;
current->type += current->name ;
current->type += current->name ;
current->name = yytext ;
current->name = yytext ;
...
@@ -5983,6 +5991,7 @@ static void parseCompounds(Entry *rt)
...
@@ -5983,6 +5991,7 @@ static void parseCompounds(Entry *rt)
insideObjC = ce->objc;
insideObjC = ce->objc;
//printf("---> Inner block starts at line %d\n",yyLineNr);
//printf("---> Inner block starts at line %d\n",yyLineNr);
//current->reset();
//current->reset();
if (current) delete current;
current = new Entry;
current = new Entry;
gstat = FALSE;
gstat = FALSE;
int ni=ce->name.findRev("::"); if (ni==-1) ni=0; else ni+=2;
int ni=ce->name.findRev("::"); if (ni==-1) ni=0; else ni+=2;
...
...
src/xmlgen.cpp
View file @
a17029cb
...
@@ -888,6 +888,102 @@ static void writeListOfAllMembers(ClassDef *cd,QTextStream &t)
...
@@ -888,6 +888,102 @@ static void writeListOfAllMembers(ClassDef *cd,QTextStream &t)
t
<<
" </listofallmembers>"
<<
endl
;
t
<<
" </listofallmembers>"
<<
endl
;
}
}
static
void
writeInnerClasses
(
const
ClassSDict
*
cl
,
QTextStream
&
t
)
{
if
(
cl
)
{
ClassSDict
::
Iterator
cli
(
*
cl
);
ClassDef
*
cd
;
for
(
cli
.
toFirst
();(
cd
=
cli
.
current
());
++
cli
)
{
if
(
cd
->
name
().
find
(
'@'
)
!=-
1
)
// skip anonymous scopes
{
t
<<
" <innerclass refid=
\"
"
<<
cd
->
getOutputFileBase
()
<<
"
\"
>"
<<
convertToXML
(
cd
->
name
())
<<
"</innerclass>"
<<
endl
;
}
}
}
}
static
void
writeInnerNamespaces
(
const
NamespaceSDict
*
nl
,
QTextStream
&
t
)
{
if
(
nl
)
{
NamespaceSDict
::
Iterator
nli
(
*
nl
);
NamespaceDef
*
nd
;
for
(
nli
.
toFirst
();(
nd
=
nli
.
current
());
++
nli
)
{
if
(
nd
->
name
().
find
(
'@'
)
!=-
1
)
// skip anonymouse scopes
{
t
<<
" <innernamespace refid=
\"
"
<<
nd
->
getOutputFileBase
()
<<
"
\"
>"
<<
convertToXML
(
nd
->
name
())
<<
"</innernamespace>"
<<
endl
;
}
}
}
}
static
void
writeInnerFiles
(
const
FileList
*
fl
,
QTextStream
&
t
)
{
if
(
fl
)
{
QListIterator
<
FileDef
>
fli
(
*
fl
);
FileDef
*
fd
;
for
(
fli
.
toFirst
();(
fd
=
fli
.
current
());
++
fli
)
{
t
<<
" <innerfile refid=
\"
"
<<
fd
->
getOutputFileBase
()
<<
"
\"
>"
<<
convertToXML
(
fd
->
name
())
<<
"</innerfile>"
<<
endl
;
}
}
}
static
void
writeInnerPages
(
const
PageSDict
*
pl
,
QTextStream
&
t
)
{
if
(
pl
)
{
PageSDict
::
Iterator
pli
(
*
pl
);
PageDef
*
pd
;
for
(
pli
.
toFirst
();(
pd
=
pli
.
current
());
++
pli
)
{
t
<<
" <innerpage refid=
\"
"
<<
pd
->
getOutputFileBase
();
if
(
pd
->
getGroupDef
())
{
t
<<
"_"
<<
pd
->
name
();
}
t
<<
"
\"
>"
<<
convertToXML
(
pd
->
title
())
<<
"</innerpage>"
<<
endl
;
}
}
}
static
void
writeInnerGroups
(
const
GroupList
*
gl
,
QTextStream
&
t
)
{
if
(
gl
)
{
GroupListIterator
gli
(
*
gl
);
GroupDef
*
sgd
;
for
(
gli
.
toFirst
();(
sgd
=
gli
.
current
());
++
gli
)
{
t
<<
" <innergroup refid=
\"
"
<<
sgd
->
getOutputFileBase
()
<<
"
\"
>"
<<
convertToXML
(
sgd
->
groupTitle
())
<<
"</innergroup>"
<<
endl
;
}
}
}
static
void
writeInnerDirs
(
const
DirList
*
dl
,
QTextStream
&
t
)
{
if
(
dl
)
{
QListIterator
<
DirDef
>
subdirs
(
*
dl
);
DirDef
*
subdir
;
for
(
subdirs
.
toFirst
();(
subdir
=
subdirs
.
current
());
++
subdirs
)
{
t
<<
" <innerdir refid=
\"
"
<<
subdir
->
getOutputFileBase
()
<<
"
\"
>"
<<
convertToXML
(
subdir
->
displayName
())
<<
"</innerdir>"
<<
endl
;
}
}
}
static
void
generateXMLForClass
(
ClassDef
*
cd
,
QTextStream
&
ti
)
static
void
generateXMLForClass
(
ClassDef
*
cd
,
QTextStream
&
ti
)
{
{
// + brief description
// + brief description
...
@@ -1027,18 +1123,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
...
@@ -1027,18 +1123,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
}
}
}
}
ClassSDict
*
cl
=
cd
->
getInnerClasses
();
writeInnerClasses
(
cd
->
getInnerClasses
(),
t
);
if
(
cl
)
{
ClassSDict
::
Iterator
cli
(
*
cl
);
ClassDef
*
cd
;
for
(
cli
.
toFirst
();(
cd
=
cli
.
current
());
++
cli
)
{
t
<<
" <innerclass refid=
\"
"
<<
cd
->
getOutputFileBase
()
<<
"
\"
>"
<<
convertToXML
(
cd
->
name
())
<<
"</innerclass>"
<<
endl
;
}
}
writeTemplateList
(
cd
,
t
);
writeTemplateList
(
cd
,
t
);
MemberGroupSDict
::
Iterator
mgli
(
*
cd
->
memberGroupSDict
);
MemberGroupSDict
::
Iterator
mgli
(
*
cd
->
memberGroupSDict
);
...
@@ -1152,28 +1237,9 @@ static void generateXMLForNamespace(NamespaceDef *nd,QTextStream &ti)
...
@@ -1152,28 +1237,9 @@ static void generateXMLForNamespace(NamespaceDef *nd,QTextStream &ti)
writeXMLString
(
t
,
nd
->
name
());
writeXMLString
(
t
,
nd
->
name
());
t
<<
"</compoundname>"
<<
endl
;
t
<<
"</compoundname>"
<<
endl
;
ClassSDict
*
cl
=
nd
->
classSDict
;
writeInnerClasses
(
nd
->
classSDict
,
t
);
if
(
cl
)
writeInnerNamespaces
(
nd
->
namespaceSDict
,
t
);
{
ClassSDict
::
Iterator
cli
(
*
cl
);
ClassDef
*
cd
;
for
(
cli
.
toFirst
();(
cd
=
cli
.
current
());
++
cli
)
{
t
<<
" <innerclass refid=
\"
"
<<
cd
->
getOutputFileBase
()
<<
"
\"
>"
<<
convertToXML
(
cd
->
name
())
<<
"</innerclass>"
<<
endl
;
}
}
NamespaceSDict
*
nl
=
nd
->
namespaceSDict
;
if
(
nl
)
{
NamespaceSDict
::
Iterator
nli
(
*
nl
);
NamespaceDef
*
nd
;
for
(
nli
.
toFirst
();(
nd
=
nli
.
current
());
++
nli
)
{
t
<<
" <innernamespace refid=
\"
"
<<
nd
->
getOutputFileBase
()
<<
"
\"
>"
<<
convertToXML
(
nd
->
name
())
<<
"</innernamespace>"
<<
endl
;
}
}
MemberGroupSDict
::
Iterator
mgli
(
*
nd
->
memberGroupSDict
);
MemberGroupSDict
::
Iterator
mgli
(
*
nd
->
memberGroupSDict
);
MemberGroup
*
mg
;
MemberGroup
*
mg
;
for
(;(
mg
=
mgli
.
current
());
++
mgli
)
for
(;(
mg
=
mgli
.
current
());
++
mgli
)
...
@@ -1287,28 +1353,8 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti)
...
@@ -1287,28 +1353,8 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti)
t
<<
" </invincdepgraph>"
<<
endl
;
t
<<
" </invincdepgraph>"
<<
endl
;
}
}
ClassSDict
*
cl
=
fd
->
classSDict
;
writeInnerClasses
(
fd
->
classSDict
,
t
);
if
(
cl
)
writeInnerNamespaces
(
fd
->
namespaceSDict
,
t
);
{
ClassSDict
::
Iterator
cli
(
*
cl
);
ClassDef
*
cd
;
for
(
cli
.
toFirst
();(
cd
=
cli
.
current
());
++
cli
)
{
t
<<
" <innerclass refid=
\"
"
<<
cd
->
getOutputFileBase
()
<<
"
\"
>"
<<
convertToXML
(
cd
->
name
())
<<
"</innerclass>"
<<
endl
;
}
}
NamespaceSDict
*
nl
=
fd
->
namespaceSDict
;
if
(
nl
)
{
NamespaceSDict
::
Iterator
nli
(
*
nl
);
NamespaceDef
*
nd
;
for
(
nli
.
toFirst
();(
nd
=
nli
.
current
());
++
nli
)
{
t
<<
" <innernamespace refid=
\"
"
<<
nd
->
getOutputFileBase
()
<<
"
\"
>"
<<
convertToXML
(
nd
->
name
())
<<
"</innernamespace>"
<<
endl
;
}
}
MemberGroupSDict
::
Iterator
mgli
(
*
fd
->
memberGroupSDict
);
MemberGroupSDict
::
Iterator
mgli
(
*
fd
->
memberGroupSDict
);
MemberGroup
*
mg
;
MemberGroup
*
mg
;
...
@@ -1380,67 +1426,11 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
...
@@ -1380,67 +1426,11 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
t
<<
" <compoundname>"
<<
convertToXML
(
gd
->
name
())
<<
"</compoundname>"
<<
endl
;
t
<<
" <compoundname>"
<<
convertToXML
(
gd
->
name
())
<<
"</compoundname>"
<<
endl
;
t
<<
" <title>"
<<
convertToXML
(
gd
->
groupTitle
())
<<
"</title>"
<<
endl
;
t
<<
" <title>"
<<
convertToXML
(
gd
->
groupTitle
())
<<
"</title>"
<<
endl
;
FileList
*
fl
=
gd
->
getFiles
();
writeInnerFiles
(
gd
->
getFiles
(),
t
);
if
(
fl
)
writeInnerClasses
(
gd
->
getClasses
(),
t
);
{
writeInnerNamespaces
(
gd
->
getNamespaces
(),
t
);
QListIterator
<
FileDef
>
fli
(
*
fl
);
writeInnerPages
(
gd
->
getPages
(),
t
);
FileDef
*
fd
=
fl
->
first
();
writeInnerGroups
(
gd
->
getSubGroups
(),
t
);
for
(
fli
.
toFirst
();(
fd
=
fli
.
current
());
++
fli
)
{
t
<<
" <innerfile refid=
\"
"
<<
fd
->
getOutputFileBase
()
<<
"
\"
>"
<<
convertToXML
(
fd
->
name
())
<<
"</innerfile>"
<<
endl
;
}
}
ClassSDict
*
cl
=
gd
->
getClasses
();
if
(
cl
)
{
ClassSDict
::
Iterator
cli
(
*
cl
);
ClassDef
*
cd
;
for
(
cli
.
toFirst
();(
cd
=
cli
.
current
());
++
cli
)
{
t
<<
" <innerclass refid=
\"
"
<<
cd
->
getOutputFileBase
()
<<
"
\"
>"
<<
convertToXML
(
cd
->
name
())
<<
"</innerclass>"
<<
endl
;
}
}
NamespaceSDict
*
nl
=
gd
->
getNamespaces
();
if
(
nl
)
{
NamespaceSDict
::
Iterator
nli
(
*
nl
);
NamespaceDef
*
nd
;
for
(
nli
.
toFirst
();(
nd
=
nli
.
current
());
++
nli
)
{
t
<<
" <innernamespace refid=
\"
"
<<
nd
->
getOutputFileBase
()
<<
"
\"
>"
<<
convertToXML
(
nd
->
name
())
<<
"</innernamespace>"
<<
endl
;
}
}
PageSDict
*
pl
=
gd
->
getPages
();
if
(
pl
)
{
PageSDict
::
Iterator
pli
(
*
pl
);
PageDef
*
pd
;
for
(
pli
.
toFirst
();(
pd
=
pli
.
current
());
++
pli
)
{
t
<<
" <innerpage refid=
\"
"
<<
pd
->
getOutputFileBase
();
if
(
pd
->
getGroupDef
())
{
t
<<
"_"
<<
pd
->
name
();
}
t
<<
"
\"
>"
<<
convertToXML
(
pd
->
title
())
<<
"</innerpage>"
<<
endl
;
}
}
GroupList
*
gl
=
gd
->
getSubGroups
();
if
(
gl
)
{
GroupListIterator
gli
(
*
gl
);
GroupDef
*
sgd
;
for
(
gli
.
toFirst
();(
sgd
=
gli
.
current
());
++
gli
)
{
t
<<
" <innergroup refid=
\"
"
<<
sgd
->
getOutputFileBase
()
<<
"
\"
>"
<<
convertToXML
(
sgd
->
groupTitle
())
<<
"</innergroup>"
<<
endl
;
}
}
MemberGroupSDict
::
Iterator
mgli
(
*
gd
->
memberGroupSDict
);
MemberGroupSDict
::
Iterator
mgli
(
*
gd
->
memberGroupSDict
);
MemberGroup
*
mg
;
MemberGroup
*
mg
;
...
@@ -1492,25 +1482,9 @@ static void generateXMLForDir(DirDef *dd,QTextStream &ti)
...
@@ -1492,25 +1482,9 @@ static void generateXMLForDir(DirDef *dd,QTextStream &ti)
<<
dd
->
getOutputFileBase
()
<<
"
\"
kind=
\"
dir
\"
>"
<<
endl
;
<<
dd
->
getOutputFileBase
()
<<
"
\"
kind=
\"
dir
\"
>"
<<
endl
;
t
<<
" <compoundname>"
<<
convertToXML
(
dd
->
displayName
())
<<
"</compoundname>"
<<
endl
;
t
<<
" <compoundname>"
<<
convertToXML
(
dd
->
displayName
())
<<
"</compoundname>"
<<
endl
;
QListIterator
<
DirDef
>
subdirs
(
dd
->
subDirs
());
writeInnerDirs
(
&
dd
->
subDirs
(),
t
);
DirDef
*
subdir
;
writeInnerFiles
(
dd
->
getFiles
(),
t
);
for
(
subdirs
.
toFirst
();(
subdir
=
subdirs
.
current
());
++
subdirs
)
{
t
<<
" <innerdir refid=
\"
"
<<
subdir
->
getOutputFileBase
()
<<
"
\"
>"
<<
convertToXML
(
subdir
->
displayName
())
<<
"</innerdir>"
<<
endl
;
}
FileList
*
fl
=
dd
->
getFiles
();
if
(
fl
)
{
QListIterator
<
FileDef
>
fli
(
*
fl
);
FileDef
*
fd
=
fl
->
first
();
for
(
fli
.
toFirst
();(
fd
=
fli
.
current
());
++
fli
)
{
t
<<
" <innerfile refid=
\"
"
<<
fd
->
getOutputFileBase
()
<<
"
\"
>"
<<
convertToXML
(
fd
->
name
())
<<
"</innerfile>"
<<
endl
;
}
}
t
<<
" <briefdescription>"
<<
endl
;
t
<<
" <briefdescription>"
<<
endl
;
writeXMLDocBlock
(
t
,
dd
->
briefFile
(),
dd
->
briefLine
(),
dd
,
0
,
dd
->
briefDescription
());
writeXMLDocBlock
(
t
,
dd
->
briefFile
(),
dd
->
briefLine
(),
dd
,
0
,
dd
->
briefDescription
());
t
<<
" </briefdescription>"
<<
endl
;
t
<<
" </briefdescription>"
<<
endl
;
...
...
wintools/qtools.dsp
View file @
a17029cb
...
@@ -92,7 +92,7 @@ SOURCE=..\qtools\qcollection.cpp
...
@@ -92,7 +92,7 @@ SOURCE=..\qtools\qcollection.cpp
# End Source File
# End Source File
# Begin Source File
# Begin Source File
SOURCE=..\qtools\
q
cstring.cpp
SOURCE=..\qtools\
s
cstring.cpp
# 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