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
4b77f4fc
Commit
4b77f4fc
authored
Aug 24, 2004
by
dimitri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.3.8-20040824
parent
bb18b811
Changes
34
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
606 additions
and
251 deletions
+606
-251
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
doxywizard.cpp
addon/doxywizard/doxywizard.cpp
+9
-0
doxywizard.h
addon/doxywizard/doxywizard.h
+1
-1
configure
configure
+28
-20
commands.doc
doc/commands.doc
+4
-1
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
code.l
src/code.l
+5
-0
definition.h
src/definition.h
+1
-1
dirdef.cpp
src/dirdef.cpp
+134
-0
dirdef.h
src/dirdef.h
+61
-0
docparser.cpp
src/docparser.cpp
+23
-2
docparser.h
src/docparser.h
+6
-2
dot.cpp
src/dot.cpp
+23
-3
dot.h
src/dot.h
+2
-0
doxygen.cpp
src/doxygen.cpp
+12
-4
doxygen.h
src/doxygen.h
+2
-0
filedef.cpp
src/filedef.cpp
+4
-3
filedef.h
src/filedef.h
+14
-7
groupdef.cpp
src/groupdef.cpp
+2
-1
groupdef.h
src/groupdef.h
+1
-2
htmldocvisitor.cpp
src/htmldocvisitor.cpp
+14
-1
htmlgen.cpp
src/htmlgen.cpp
+15
-20
htmlgen.h
src/htmlgen.h
+2
-2
index.cpp
src/index.cpp
+46
-23
libdoxygen.pro.in
src/libdoxygen.pro.in
+2
-0
logos.cpp
src/logos.cpp
+106
-131
memberdef.cpp
src/memberdef.cpp
+32
-13
memberdef.h
src/memberdef.h
+4
-1
membergroup.cpp
src/membergroup.cpp
+3
-1
scanner.l
src/scanner.l
+2
-2
util.cpp
src/util.cpp
+38
-2
tmake.conf
tmake/lib/aix-xlc/tmake.conf
+4
-2
No files found.
INSTALL
View file @
4b77f4fc
DOXYGEN Version 1.3.8-200408
12
DOXYGEN Version 1.3.8-200408
24
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (
12
August 2004)
Dimitri van Heesch (
24
August 2004)
README
View file @
4b77f4fc
DOXYGEN Version 1.3.8_200408
12
DOXYGEN Version 1.3.8_200408
24
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) (
12
August 2004)
Dimitri van Heesch (dimitri@stack.nl) (
24
August 2004)
VERSION
View file @
4b77f4fc
1.3.8-200408
12
1.3.8-200408
24
addon/doxywizard/doxywizard.cpp
View file @
4b77f4fc
...
...
@@ -1370,6 +1370,15 @@ int main(int argc,char **argv)
{
QApplication
a
(
argc
,
argv
);
MainWidget
main
;
if
(
argc
==
2
&&
argv
[
1
][
0
]
!=
'-'
)
// name of config file as an argument
{
main
.
loadConfigFromFile
(
argv
[
1
]);
}
else
if
(
argc
>
1
)
{
printf
(
"Usage: %s [config file]
\n
"
,
argv
[
0
]);
exit
(
1
);
}
a
.
setMainWidget
(
&
main
);
main
.
show
();
return
a
.
exec
();
...
...
addon/doxywizard/doxywizard.h
View file @
4b77f4fc
...
...
@@ -242,6 +242,7 @@ class MainWidget : public QMainWindow
public
:
MainWidget
(
QWidget
*
parent
=
0
);
~
MainWidget
();
void
loadConfigFromFile
(
const
QString
&
);
private
slots
:
void
launchWizard
();
...
...
@@ -263,7 +264,6 @@ class MainWidget : public QMainWindow
private
:
void
setConfigSaved
(
bool
);
void
loadConfigFromFile
(
const
QString
&
);
void
addRecentFile
(
const
QString
&
);
QPushButton
*
m_wizard
;
...
...
configure
View file @
4b77f4fc
...
...
@@ -234,27 +234,35 @@ if test "$f_wizard" = YES; then
if
test
-z
"
$QTDIR
"
;
then
echo
" QTDIR environment variable not set!"
echo
-n
" Checking for Qt..."
if
test
-d
"/usr/lib/qt3/lib"
;
then
if
test
-d
"/usr/lib/qt3/include"
;
then
if
test
-x
"/usr/lib/qt3/bin/moc"
;
then
QTDIR
=
"/usr/lib/qt3"
fi
fi
fi
if
test
-d
"/usr/lib/qt2/lib"
;
then
if
test
-d
"/usr/lib/qt2/include"
;
then
if
test
-x
"/usr/lib/qt2/bin/moc"
;
then
QTDIR
=
"/usr/lib/qt2"
fi
fi
fi
if
test
-d
"/usr/lib/qt/lib"
;
then
if
test
-d
"/usr/lib/qt/include"
;
then
if
test
-x
"/usr/lib/qt/bin/moc"
;
then
QTDIR
=
"/usr/lib/qt"
fi
for
d
in
/usr/lib/
{
qt-3.1,qt3,qt2,qt,qt
*
}
;
do
if
test
-d
"
$d
/lib"
-a
-d
"
$d
/include"
-a
-x
"
$d
/bin/moc"
;
then
QTDIR
=
$d
fi
fi
done
# if test -d "/usr/lib/qt3/lib"; then
# if test -d "/usr/lib/qt3/include"; then
# if test -x "/usr/lib/qt3/bin/moc"; then
# QTDIR="/usr/lib/qt3"
# fi
# fi
# fi
# if test -d "/usr/lib/qt2/lib"; then
# if test -d "/usr/lib/qt2/include"; then
# if test -x "/usr/lib/qt2/bin/moc"; then
# QTDIR="/usr/lib/qt2"
# fi
# fi
# fi
# if test -d "/usr/lib/qt/lib"; then
# if test -d "/usr/lib/qt/include"; then
# if test -x "/usr/lib/qt/bin/moc"; then
# QTDIR="/usr/lib/qt"
# fi
# fi
# fi
else
echo
" Detected Qt via the QTDIR environment variable..."
echo
-n
" "
fi
if
test
-z
"
$QTDIR
"
;
then
echo
"QTDIR not set and Qt not found at standard locations!"
...
...
doc/commands.doc
View file @
4b77f4fc
...
...
@@ -20,7 +20,7 @@
All commands in the documentation start with a backslash (<b>\\</b>) or an
at-sign (<b>\@</b>). If you prefer you can replace all commands starting with a
backslash below
,
by their counterparts that start with an at-sign.
backslash below by their counterparts that start with an at-sign.
Some commands have one or more arguments.
Each argument has a certain range:
...
...
@@ -350,6 +350,9 @@ doxygen. Unrecognized commands are treated as normal text.
for the corresponding HTML documentation that is generated by doxygen.
\endhtmlonly
\note In the above example \ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF"
has been set to YES in the configuration file.
<hr>
\section cmdfn \fn (function declaration)
...
...
packages/rpm/doxygen.spec
View file @
4b77f4fc
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.3.8_200408
12
Version: 1.3.8_200408
24
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
...
...
src/code.l
View file @
4b77f4fc
...
...
@@ -1995,6 +1995,11 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
addType();
g_name+=yytext;
}
<Body>{SCOPENAME}/{B}*[;,)\]] { // "int var;" or "var, var2" or "debug(f) macro"
generateClassOrGlobalLink(*g_code,yytext,TRUE);
addType();
g_name+=yytext;
}
<Body>{SCOPENAME}/{B}* { // p->func()
generateClassOrGlobalLink(*g_code,yytext);
addType();
...
...
src/definition.h
View file @
4b77f4fc
...
...
@@ -48,7 +48,7 @@ class Definition
enum
DefType
{
TypeClass
,
TypeMember
,
TypeFile
,
TypeGroup
,
TypeNamespace
,
TypePackage
,
TypePage
TypeNamespace
,
TypePackage
,
TypePage
,
TypeDir
};
/*! Use this for dynamic inspection of the type of the derived class */
virtual
DefType
definitionType
()
=
0
;
...
...
src/dirdef.cpp
0 → 100644
View file @
4b77f4fc
#include "dirdef.h"
#include "filename.h"
#include "doxygen.h"
#include "util.h"
//----------------------------------------------------------------------
// method implementation
DirDef
::
DirDef
(
const
char
*
path
)
:
Definition
(
path
,
1
,
path
),
m_parent
(
0
)
{
// get short name (stipping the paths mentioned in STRIP_FROM_PATH)
m_dispName
=
stripFromPath
(
path
);
m_subdirs
.
setAutoDelete
(
TRUE
);
m_fileList
=
new
FileList
;
m_classSDict
=
new
ClassSDict
(
17
);
}
DirDef
::~
DirDef
()
{
}
void
DirDef
::
addSubDir
(
DirDef
*
subdir
)
{
m_subdirs
.
append
(
subdir
);
subdir
->
m_parent
=
this
;
}
void
DirDef
::
addFile
(
FileDef
*
fd
)
{
m_fileList
->
append
(
fd
);
fd
->
setDirDef
(
this
);
}
//----------------------------------------------------------------------
// helper functions
DirDef
*
DirDef
::
createNewDir
(
const
char
*
path
)
{
ASSERT
(
path
!=
0
);
DirDef
*
dir
=
Doxygen
::
directories
.
find
(
path
);
if
(
dir
==
0
)
// new dir
{
//printf("Adding new dir %s\n",path);
dir
=
new
DirDef
(
path
);
Doxygen
::
directories
.
inSort
(
path
,
dir
);
}
return
dir
;
}
bool
DirDef
::
matchPath
(
const
QCString
&
path
,
QStrList
&
l
)
{
const
char
*
s
=
l
.
first
();
while
(
s
)
{
QCString
prefix
=
s
;
if
(
stricmp
(
prefix
.
left
(
path
.
length
()),
path
)
==
0
)
// case insensitive compare
{
return
TRUE
;
}
s
=
l
.
next
();
}
return
FALSE
;
}
/*! strip part of \a path if it matches
* one of the paths in the Config_getList("STRIP_FROM_PATH") list
*/
DirDef
*
DirDef
::
mergeDirectoryInTree
(
const
QCString
&
path
)
{
int
p
=
0
,
i
=
0
;
DirDef
*
dir
=
0
;
while
((
i
=
path
.
find
(
'/'
,
p
))
!=-
1
)
{
QCString
part
=
path
.
left
(
i
+
1
);
if
(
!
matchPath
(
part
,
Config_getList
(
"STRIP_FROM_PATH"
)))
{
dir
=
createNewDir
(
part
);
}
p
=
i
+
1
;
}
return
dir
;
}
//----------------------------------------------------------------------
// external functions
void
buildDirectories
()
{
// for each input file
FileNameListIterator
fnli
(
Doxygen
::
inputNameList
);
FileName
*
fn
;
for
(
fnli
.
toFirst
();(
fn
=
fnli
.
current
());
++
fnli
)
{
FileNameIterator
fni
(
*
fn
);
FileDef
*
fd
;
for
(;(
fd
=
fni
.
current
());
++
fni
)
{
if
(
!
fd
->
getReference
().
isEmpty
())
{
DirDef
*
dir
;
if
((
dir
=
Doxygen
::
directories
.
find
(
fd
->
getPath
()))
==
0
)
// new directory
{
dir
=
DirDef
::
mergeDirectoryInTree
(
fd
->
getPath
());
}
if
(
dir
)
dir
->
addFile
(
fd
);
}
else
{
// do something for file imported via tag files.
}
}
}
DirDef
*
root
=
new
DirDef
(
"root:"
);
// compute relations between directories => introduce container dirs.
DirDef
*
dir
;
SDict
<
DirDef
>::
Iterator
sdi
(
Doxygen
::
directories
);
for
(
sdi
.
toFirst
();(
dir
=
sdi
.
current
());
++
sdi
)
{
printf
(
"New dir %s
\n
"
,
dir
->
displayName
().
data
());
QCString
name
=
dir
->
name
();
int
i
=
name
.
findRev
(
'/'
,
name
.
length
()
-
2
);
if
(
i
!=-
1
)
{
DirDef
*
parent
=
Doxygen
::
directories
.
find
(
name
.
left
(
i
+
1
));
if
(
parent
==
0
)
parent
=
root
;
parent
->
addSubDir
(
dir
);
printf
(
"DirDef::addSubdir(): Adding subdir
\n
%s to
\n
%s
\n
"
,
dir
->
displayName
().
data
(),
parent
->
displayName
().
data
());
}
}
}
src/dirdef.h
0 → 100644
View file @
4b77f4fc
/******************************************************************************
*
*
*
* Copyright (C) 1997-2004 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#ifndef DIRDEF_H
#define DIRDEF_H
#include "qtbc.h"
#include "sortdict.h"
#include "definition.h"
class
FileList
;
class
ClassSDict
;
class
QStrList
;
class
FileDef
;
class
DirDef
:
public
Definition
{
public
:
DirDef
(
const
char
*
path
);
virtual
~
DirDef
();
virtual
DefType
definitionType
()
{
return
TypeDir
;
}
virtual
QCString
getOutputFileBase
()
const
{
return
""
;
}
virtual
bool
isLinkableInProject
()
const
{
return
FALSE
;
}
virtual
bool
isLinkable
()
const
{
return
FALSE
;
}
QCString
displayName
()
const
{
return
m_dispName
;
}
void
addSubDir
(
DirDef
*
subdir
);
FileList
*
getFiles
()
const
{
return
m_fileList
;
}
ClassSDict
*
getClasses
()
const
{
return
m_classSDict
;
}
DirDef
*
parent
()
const
{
return
m_parent
;
}
void
addFile
(
FileDef
*
fd
);
static
DirDef
*
mergeDirectoryInTree
(
const
QCString
&
path
);
private
:
static
DirDef
*
createNewDir
(
const
char
*
path
);
static
bool
matchPath
(
const
QCString
&
path
,
QStrList
&
l
);
QList
<
DirDef
>
m_subdirs
;
DirDef
*
m_parent
;
QCString
m_dispName
;
FileList
*
m_fileList
;
// list of files in the group
ClassSDict
*
m_classSDict
;
// list of classes in the group
};
void
buildDirectories
();
#endif
src/docparser.cpp
View file @
4b77f4fc
...
...
@@ -747,6 +747,7 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children)
MemberDef
*
member
=
0
;
QString
name
=
linkToText
(
g_token
->
name
,
TRUE
);
int
len
=
g_token
->
name
.
length
();
ClassDef
*
cd
=
0
;
if
(
!
g_insideHtmlLink
&&
resolveRef
(
g_context
,
g_token
->
name
,
g_inSeeBlock
,
&
compound
,
&
member
))
{
...
...
@@ -784,6 +785,16 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children)
handleLinkedWord
(
parent
,
children
);
children
.
append
(
new
DocWord
(
parent
,
":"
));
}
else
if
(
!
g_insideHtmlLink
&&
(
cd
=
getClass
(
g_token
->
name
+
"-p"
)))
{
// special case 2, where the token name is not a class, but could
// be a Obj-C protocol
children
.
append
(
new
DocLinkedWord
(
parent
,
name
,
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
""
));
}
else
// normal non-linkable word
{
children
.
append
(
new
DocWord
(
parent
,
g_token
->
name
));
...
...
@@ -4383,15 +4394,25 @@ reparsetoken:
goto
endparagraph
;
}
}
// determine list depth
int
depth
=
0
;
n
=
parent
();
while
(
n
)
{
if
(
n
->
kind
()
==
DocNode
::
Kind_AutoList
)
++
depth
;
n
=
n
->
parent
();
}
// first item or sub list => create new list
DocAutoList
*
al
=
0
;
do
{
al
=
new
DocAutoList
(
this
,
g_token
->
indent
,
g_token
->
isEnumList
);
al
=
new
DocAutoList
(
this
,
g_token
->
indent
,
g_token
->
isEnumList
,
depth
);
m_children
.
append
(
al
);
retval
=
al
->
parse
();
}
while
(
retval
==
TK_LISTITEM
&&
// new list
al
->
indent
()
==
g_token
->
indent
// at s
o
me indent level
al
->
indent
()
==
g_token
->
indent
// at s
a
me indent level
);
// check the return value
...
...
src/docparser.h
View file @
4b77f4fc
...
...
@@ -507,12 +507,15 @@ class DocCopy : public CompAccept<DocCopy>, public DocNode
class
DocAutoList
:
public
CompAccept
<
DocAutoList
>
,
public
DocNode
{
public
:
DocAutoList
(
DocNode
*
parent
,
int
indent
,
bool
isEnumList
)
:
m_parent
(
parent
),
m_indent
(
indent
),
m_isEnumList
(
isEnumList
)
{}
DocAutoList
(
DocNode
*
parent
,
int
indent
,
bool
isEnumList
,
int
depth
)
:
m_parent
(
parent
),
m_indent
(
indent
),
m_isEnumList
(
isEnumList
),
m_depth
(
depth
)
{}
Kind
kind
()
const
{
return
Kind_AutoList
;
}
bool
isEnumList
()
const
{
return
m_isEnumList
;
}
int
indent
()
const
{
return
m_indent
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
int
depth
()
const
{
return
m_depth
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocAutoList
>::
accept
(
this
,
v
);
}
int
parse
();
...
...
@@ -520,6 +523,7 @@ class DocAutoList : public CompAccept<DocAutoList>, public DocNode
DocNode
*
m_parent
;
int
m_indent
;
bool
m_isEnumList
;
int
m_depth
;
};
...
...
src/dot.cpp
View file @
4b77f4fc
...
...
@@ -962,7 +962,7 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
QDir
thisDir
;
// put each connected subgraph of the hierarchy in a row of the HTML output
out
<<
"<table border=
0 cellspacing=10 cellpadding=0
>"
<<
endl
;
out
<<
"<table border=
\"
0
\"
cellspacing=
\"
10
\"
cellpadding=
\"
0
\"
>"
<<
endl
;
QListIterator
<
DotNode
>
dnli
(
*
m_rootSubgraphs
);
DotNode
*
n
;
...
...
@@ -2105,11 +2105,21 @@ DotCallGraph::DotCallGraph(MemberDef *md,int maxRecursionDepth)
m_maxDistance
=
0
;
m_recDepth
=
maxRecursionDepth
;
m_diskName
=
md
->
getOutputFileBase
()
+
"_"
+
md
->
anchor
();
m_scope
=
md
->
getOuterScope
();
QCString
uniqueId
;
uniqueId
=
md
->
getReference
()
+
"$"
+
md
->
getOutputFileBase
()
+
"#"
+
md
->
anchor
();
QCString
name
;
if
(
Config_getBool
(
"HIDE_SCOPE_NAMES"
))
{
name
=
md
->
name
();
}
else
{
name
=
md
->
qualifiedName
();
}
m_startNode
=
new
DotNode
(
m_curNodeNumber
++
,
md
->
qualifiedName
(
),
linkToText
(
name
,
FALSE
),
uniqueId
.
data
(),
0
,
// distance
TRUE
// root node
...
...
@@ -2280,9 +2290,19 @@ void DotCallGraph::buildGraph(DotNode *n,MemberDef *md,int distance)
}
else
{
QCString
name
;
if
(
Config_getBool
(
"HIDE_SCOPE_NAMES"
))
{
name
=
rmd
->
getOuterScope
()
==
m_scope
?
rmd
->
name
()
:
rmd
->
qualifiedName
();
}
else
{
name
=
rmd
->
qualifiedName
();
}
bn
=
new
DotNode
(
m_curNodeNumber
++
,
rmd
->
qualifiedName
(
),
linkToText
(
name
,
FALSE
),
uniqueId
,
distance
);
...
...
src/dot.h
View file @
4b77f4fc
...
...
@@ -30,6 +30,7 @@ class QTextStream;
class
DotNodeList
;
class
ClassSDict
;
class
MemberDef
;
class
Definition
;
enum
GraphOutputFormat
{
BITMAP
,
EPS
};
...
...
@@ -197,6 +198,7 @@ class DotCallGraph
int
m_maxDistance
;
int
m_recDepth
;
QCString
m_diskName
;
Definition
*
m_scope
;
};
void
generateGraphLegend
(
const
char
*
path
);
...
...
src/doxygen.cpp
View file @
4b77f4fc
...
...
@@ -43,6 +43,7 @@
#include "tagreader.h"
#include "dot.h"
#include "docparser.h"
#include "dirdef.h"
#include "outputlist.h"
#include "declinfo.h"
...
...
@@ -120,6 +121,7 @@ SDict<DefinitionList> *Doxygen::symbolMap;
bool
Doxygen
::
outputToWizard
=
FALSE
;
QDict
<
int
>
*
Doxygen
::
htmlDirMap
=
0
;
QCache
<
LookupInfo
>
Doxygen
::
lookupCache
(
20000
,
20000
);
SDict
<
DirDef
>
Doxygen
::
directories
(
17
);
static
StringList
inputFiles
;
static
StringDict
excludeNameDict
(
1009
);
// sections
...
...
@@ -2731,7 +2733,8 @@ static void transferFunctionDocumentation()
mdef
->
getGroupPri
(),
mdef
->
docFile
(),
mdef
->
docLine
(),
mdef
->
hasDocumentation
()
mdef
->
hasDocumentation
(),
mdef
);
}
else
if
(
mdef
->
getGroupDef
()
==
0
&&
mdec
->
getGroupDef
()
!=
0
)
...
...
@@ -2740,7 +2743,8 @@ static void transferFunctionDocumentation()
mdec
->
getGroupPri
(),
mdec
->
docFile
(),
mdec
->
docLine
(),
mdec
->
hasDocumentation
()
mdec
->
hasDocumentation
(),
mdec
);
}
...
...
@@ -6683,13 +6687,14 @@ static void buildExampleList(Entry *root)
else
{
PageDef
*
pd
=
new
PageDef
(
root
->
fileName
,
root
->
startLine
,
root
->
name
,
root
->
doc
,
root
->
args
);
root
->
name
,
root
->
doc
,
root
->
args
);
pd
->
setFileName
(
convertNameToFile
(
pd
->
name
()
+
"-example"
));
pd
->
addSectionsToDefinition
(
root
->
anchors
);
//pi->addSections(root->anchors);
Doxygen
::
exampleSDict
->
inSort
(
root
->
name
,
pd
);
addExampleToGroups
(
root
,
pd
);
//we don't add example to groups
//addExampleToGroups(root,pd);
}
}
}
...
...
@@ -8252,6 +8257,9 @@ void parseInput()
msg
(
"Freeing input...
\n
"
);
input
.
resize
(
0
);
//msg("Building directory list...\n");
//buildDirectories();
msg
(
"Building group list...
\n
"
);
buildGroupList
(
root
);
organizeSubGroups
(
root
);
...
...
src/doxygen.h
View file @
4b77f4fc
...
...
@@ -40,6 +40,7 @@ class PageSList;
class
PageSDict
;
class
PageDef
;
class
SearchIndex
;
class
DirDef
;
typedef
QList
<
QCString
>
StringList
;
typedef
QDict
<
FileDef
>
FileDict
;
...
...
@@ -112,6 +113,7 @@ class Doxygen
static
bool
outputToWizard
;
static
QDict
<
int
>
*
htmlDirMap
;
static
QCache
<
LookupInfo
>
lookupCache
;
static
SDict
<
DirDef
>
directories
;
};
void
initDoxygen
();
...
...
src/filedef.cpp
View file @
4b77f4fc
...
...
@@ -904,6 +904,7 @@ static void mergeFileDef(Directory *root,FileDef *fd)
dirNode
->
addChild
(
e
);
}
#if 0
static void generateIndent(QTextStream &t,DirEntry *de,int level)
{
if (de->parent())
...
...
@@ -949,7 +950,6 @@ static void generateIndent(QTextStream &t,DirEntry *de,int level)
}
}
#if 0
static void writeDirTreeNode(QTextStream &t,Directory *root,int level)
{
QCString indent;
...
...
@@ -989,16 +989,17 @@ static void addDirsAsGroups(Directory *root,GroupDef *parent,int level)
{
gd
=
new
GroupDef
(
"<generated>"
,
1
,
root
->
name
(),
// name
root
->
path
(),
// name
root
->
name
()
// title
);
if
(
parent
)
{
parent
->
addGroup
(
gd
);
gd
->
makePartOfGroup
(
parent
);
}
else
{
Doxygen
::
groupSDict
.
append
(
root
->
name
(),
gd
);
Doxygen
::
groupSDict
.
append
(
root
->
path
(),
gd
);
}
}
QListIterator
<
DirEntry
>
dli
(
root
->
children
());
...
...
src/filedef.h
View file @
4b77f4fc
...
...
@@ -38,6 +38,7 @@ class NamespaceDef;
class
NamespaceSDict
;
class
MemberGroupSDict
;
class
PackageDef
;
class
DirDef
;
struct
IncludeInfo
{
...
...
@@ -133,6 +134,9 @@ class FileDef : public Definition
void
setPackageDef
(
PackageDef
*
pd
)
{
package
=
pd
;
}
PackageDef
*
packageDef
()
const
{
return
package
;
}
void
setDirDef
(
DirDef
*
dd
)
{
dir
=
dd
;
}
DirDef
*
getDirDef
()
const
{
return
dir
;
}
void
addUsingDirective
(
NamespaceDef
*
nd
);
NamespaceSDict
*
getUsedNamespaces
()
const
{
return
usingDirList
;
}
void
addUsingDeclaration
(
Definition
*
def
);
...
...
@@ -201,8 +205,8 @@ class FileDef : public Definition
QIntDict
<
MemberDef
>
*
srcMemberDict
;
bool
isSource
;
PackageDef
*
package
;
DirDef
*
dir
;
};
...
...
@@ -250,18 +254,23 @@ class DirEntry
public
:
enum
EntryKind
{
Dir
,
File
};
DirEntry
(
DirEntry
*
parent
,
FileDef
*
fd
)
:
m_parent
(
parent
),
m_kind
(
File
),
m_fd
(
fd
),
m_isLast
(
FALSE
)
{
}
DirEntry
(
DirEntry
*
parent
)
:
m_parent
(
parent
),
m_kind
(
Dir
),
m_fd
(
0
),
m_isLast
(
FALSE
)
{
}
:
m_parent
(
parent
),
m_name
(
fd
->
name
()),
m_kind
(
File
),
m_fd
(
fd
),
m_isLast
(
FALSE
)
{
}
DirEntry
(
DirEntry
*
parent
,
QCString
name
)
:
m_parent
(
parent
),
m_name
(
name
),
m_kind
(
Dir
),
m_fd
(
0
),
m_isLast
(
FALSE
)
{
}
virtual
~
DirEntry
()
{
}
EntryKind
kind
()
const
{
return
m_kind
;
}
FileDef
*
file
()
const
{
return
m_fd
;
}
bool
isLast
()
const
{
return
m_isLast
;
}
void
setLast
(
bool
b
)
{
m_isLast
=
b
;
}
DirEntry
*
parent
()
const
{
return
m_parent
;
}
QCString
name
()
const
{
return
m_name
;
}
QCString
path
()
const
{
return
parent
()
?
parent
()
->
path
()
+
"/"
+
name
()
:
name
();
}
protected
:
DirEntry
*
m_parent
;
QCString
m_name
;
private
:
EntryKind
m_kind
;
FileDef
*
m_fd
;
...
...
@@ -273,17 +282,15 @@ class Directory : public DirEntry
{
public
:
Directory
(
Directory
*
parent
,
const
QCString
&
name
)
:
DirEntry
(
parent
),
m_name
(
name
)
:
DirEntry
(
parent
,
name
)
{
m_children
.
setAutoDelete
(
TRUE
);
}
virtual
~
Directory
()
{}
void
addChild
(
DirEntry
*
d
)
{
m_children
.
append
(
d
);
d
->
setLast
(
TRUE
);
}
QList
<
DirEntry
>
&
children
()
{
return
m_children
;
}
void
rename
(
const
QCString
&
name
)
{
m_name
=
name
;
}
void
reParent
(
Directory
*
parent
)
{
m_parent
=
parent
;
}
QCString
name
()
const
{
return
m_name
;
}
private
:
QCString
m_name
;
QList
<
DirEntry
>
m_children
;
};
...
...
src/groupdef.cpp
View file @
4b77f4fc
...
...
@@ -828,7 +828,8 @@ void addMemberToGroups(Entry *root,MemberDef *md)
if
(
success
)
{
//printf("insertMember successful\n");
md
->
setGroupDef
(
fgd
,
pri
,
root
->
fileName
,
root
->
startLine
,
!
root
->
doc
.
isEmpty
());
md
->
setGroupDef
(
fgd
,
pri
,
root
->
fileName
,
root
->
startLine
,
!
root
->
doc
.
isEmpty
());
ClassDef
*
cd
=
md
->
getClassDefOfAnonymousType
();
if
(
cd
)
cd
->
setGroupDefForAllMembers
(
fgd
,
pri
,
root
->
fileName
,
root
->
startLine
,
root
->
doc
.
length
()
!=
0
);
}
...
...
src/groupdef.h
View file @
4b77f4fc
...
...
@@ -119,8 +119,7 @@ class GroupDef : public Definition
FileList
*
fileList
;
// list of files in the group
ClassSDict
*
classSDict
;
// list of classes in the group
NamespaceList
*
namespaceList
;
// list of namespaces in the group
GroupList
*
groupList
;
// list of sub groups.
//GroupList *parentGroupList; // list of parent groups.
GroupList
*
groupList
;
// list of sub groups.
PageSDict
*
pageDict
;
// list of pages in the group
PageSDict
*
exampleDict
;
// list of examples in the group
...
...
src/htmldocvisitor.cpp
View file @
4b77f4fc
...
...
@@ -29,6 +29,10 @@
#include "htmlgen.h"
static
const
int
NUM_HTML_LIST_TYPES
=
4
;
static
const
char
types
[][
NUM_HTML_LIST_TYPES
]
=
{
"1"
,
"a"
,
"i"
,
"A"
};
static
QString
htmlAttribsToString
(
const
HtmlAttribList
&
attribs
)
{
QString
result
;
...
...
@@ -327,12 +331,21 @@ void HtmlDocVisitor::visit(DocIndexEntry *)
// visitor functions for compound nodes
//--------------------------------------
void
HtmlDocVisitor
::
visitPre
(
DocAutoList
*
l
)
{
if
(
m_hide
)
return
;
if
(
l
->
isEnumList
())
{
m_t
<<
"<ol>"
;
//
// Do list type based on depth:
// 1.
// a.
// i.
// A.
// 1. (repeat)...
//
m_t
<<
"<ol type="
<<
types
[
l
->
depth
()
%
NUM_HTML_LIST_TYPES
]
<<
">"
;
}
else
{
...
...
src/htmlgen.cpp
View file @
4b77f4fc
...
...
@@ -52,42 +52,37 @@ static const char *defaultStyleSheet =
"DIV.qindex {
\n
"
" width: 100%;
\n
"
" background-color: #eeeeff;
\n
"
" border: 1px solid #
B0B0B
0;
\n
"
" border: 1px solid #
b0b0b
0;
\n
"
" text-align: center;
\n
"
" margin: 2px;
\n
"
" padding: 2px;
\n
"
" line-height: 1
2
0%;
\n
"
" line-height: 1
4
0%;
\n
"
"}
\n
"
"A.qindex {
\n
"
" text-decoration: none;
\n
"
" font-weight: bold;
\n
"
" color: #1A419D;
\n
"
" padding: 2px;
\n
"
"}
\n
"
"A.qindex:visited {
\n
"
" text-decoration: none;
\n
"
" font-weight: bold;
\n
"
" color: #1A419D
\n
"
" padding: 2px;
\n
"
"}
\n
"
"A.qindex:hover {
\n
"
" text-decoration: none;
\n
"
" background-color: #ddddff;
\n
"
" padding: 2px;
\n
"
"}
\n
"
"A.qindexHL {
\n
"
" text-decoration: none;
\n
"
" font-weight: bold;
\n
"
" background-color: #6666cc;
\n
"
" color: #ffffff;
\n
"
" padding: 2px 6px;
\n
"
" border: 1px double #9295C2;
\n
"
"}
\n
"
"A.qindexHL:hover {
\n
"
" text-decoration: none;
\n
"
" background-color: #6666cc;
\n
"
" color: #ffffff;
\n
"
" padding: 2px 6px;
\n
"
"}
\n
"
"A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
\n
"
"A.el { text-decoration: none; font-weight: bold }
\n
"
...
...
@@ -359,9 +354,9 @@ void HtmlGenerator::writeFooterFile(QFile &file)
QTextStream
t
(
&
file
);
t
<<
"<hr size=
\"
1
\"
><address style=
\"
align: right;
\"
><small>
\n
"
;
t
<<
theTranslator
->
trGeneratedAt
(
"$datetime"
,
"$projectname"
);
t
<<
"
<a href=
\"
http://www.doxygen.org/index.html
\"
>"
t
<<
"
<a href=
\"
http://www.doxygen.org/index.html
\"
>"
<<
"<img src=
\"
doxygen.png
\"
alt=
\"
doxygen
\"
"
<<
"align=
\"
middle
\"
border=
0
>"
<<
"align=
\"
middle
\"
border=
\"
0
\"
>"
<<
"</a> $doxygenversion"
;
t
<<
"</small></address>
\n
"
<<
"</body>
\n
"
...
...
@@ -446,9 +441,9 @@ static void writePageFooter(QTextStream &t,const QCString &lastTitle,
dateToString
(
TRUE
),
Config_getString
(
"PROJECT_NAME"
)
);
t
<<
endl
<<
"<a href=
\"
http://www.doxygen.org/index.html
\"
>"
;
t
<<
" "
<<
endl
<<
"<a href=
\"
http://www.doxygen.org/index.html
\"
>"
;
t
<<
endl
<<
"<img src=
\"
"
<<
relPath
<<
"doxygen.png
\"
alt=
\"
doxygen
\"
"
<<
"align=
\"
middle
\"
border=
0
>"
<<
"</a> "
<<
versionString
<<
" "
;
<<
"align=
\"
middle
\"
border=
\"
0
\"
>"
<<
"</a> "
<<
versionString
<<
" "
;
t
<<
"</small></address>"
;
if
(
Debug
::
isFlagSet
(
Debug
::
Validate
))
{
...
...
@@ -529,7 +524,7 @@ void HtmlGenerator::writeStyleInfo(int part)
void
HtmlGenerator
::
startDoxyAnchor
(
const
char
*
,
const
char
*
,
const
char
*
anchor
,
const
char
*
name
)
{
t
<<
"<a class=
\"
anchor
\"
name=
\"
"
<<
anchor
<<
"
\"
doxytag=
\"
"
<<
name
<<
"
\"
></a>"
;
t
<<
"<a class=
\"
anchor
\"
name=
\"
"
<<
anchor
<<
"
\"
doxytag=
\"
"
<<
name
<<
"
\"
></a>"
;
}
void
HtmlGenerator
::
endDoxyAnchor
(
const
char
*
,
const
char
*
)
...
...
@@ -859,9 +854,9 @@ void HtmlGenerator::startMemberItem(int annoType)
t
<<
"<tr>"
;
switch
(
annoType
)
{
case
0
:
t
<<
"<td class=
\"
memItemLeft
\"
nowrap align=
right valign=top
>"
;
break
;
case
0
:
t
<<
"<td class=
\"
memItemLeft
\"
nowrap align=
\"
right
\"
valign=
\"
top
\"
>"
;
break
;
case
1
:
t
<<
"<td class=
\"
memItemLeft
\"
nowrap>"
;
break
;
default
:
t
<<
"<td class=
\"
memItemLeft
\"
nowrap valign=
top
>"
;
break
;
default
:
t
<<
"<td class=
\"
memItemLeft
\"
nowrap valign=
\"
top
\"
>"
;
break
;
}
}
else
...
...
@@ -886,7 +881,7 @@ void HtmlGenerator::insertMemberAlign()
DBG_HTML
(
t
<<
"<!-- insertMemberAlign -->"
<<
endl
)
if
(
Config_getBool
(
"HTML_ALIGN_MEMBERS"
))
{
t
<<
" </td><td class=
\"
memItemRight
\"
valign=
bottom
>"
;
t
<<
" </td><td class=
\"
memItemRight
\"
valign=
\"
bottom
\"
>"
;
}
}
...
...
@@ -921,7 +916,7 @@ void HtmlGenerator::startMemberSections()
DBG_HTML
(
t
<<
"<!-- startMemberSections -->"
<<
endl
)
if
(
Config_getBool
(
"HTML_ALIGN_MEMBERS"
))
{
t
<<
"<table border=
0 cellpadding=0 cellspacing=0
>"
<<
endl
;
t
<<
"<table border=
\"
0
\"
cellpadding=
\"
0
\"
cellspacing=
\"
0
\"
>"
<<
endl
;
// HTML is not recursively decomposable, sorry
t
<<
"<tr><td></td></tr>"
<<
endl
;
}
...
...
@@ -941,7 +936,7 @@ void HtmlGenerator::startMemberHeader()
DBG_HTML
(
t
<<
"<!-- startMemberHeader -->"
<<
endl
)
if
(
Config_getBool
(
"HTML_ALIGN_MEMBERS"
))
{
t
<<
"<tr><td colspan=
2
><br><h2>"
;
t
<<
"<tr><td colspan=
\"
2
\"
><br><h2>"
;
}
else
{
...
...
@@ -965,7 +960,7 @@ void HtmlGenerator::endMemberHeader()
void
HtmlGenerator
::
startMemberSubtitle
()
{
DBG_HTML
(
t
<<
"<!-- startMemberSubtitle -->"
<<
endl
)
if
(
Config_getBool
(
"HTML_ALIGN_MEMBERS"
))
t
<<
"<tr><td colspan=
2
>"
;
if
(
Config_getBool
(
"HTML_ALIGN_MEMBERS"
))
t
<<
"<tr><td colspan=
\"
2
\"
>"
;
}
void
HtmlGenerator
::
endMemberSubtitle
()
...
...
@@ -1036,7 +1031,7 @@ void HtmlGenerator::startMemberDocName(bool align)
t
<<
" <tr>"
<<
endl
;
t
<<
" <td class=
\"
md
\"
nowrap valign=
\"
top
\"
"
;
if
(
align
)
t
<<
" align=
\"
right
\"
"
;
t
<<
">
"
;
t
<<
">"
;
}
void
HtmlGenerator
::
endMemberDocName
()
...
...
@@ -1213,7 +1208,7 @@ void HtmlGenerator::startIndent()
//t << "<div class=\"in\">" << endl;
t
<<
"<table cellspacing=
5 cellpadding=0 border=0
>
\n
"
t
<<
"<table cellspacing=
\"
5
\"
cellpadding=
\"
0
\"
border=
\"
0
\"
>
\n
"
" <tr>
\n
"
" <td>
\n
"
"
\n
"
...
...
src/htmlgen.h
View file @
4b77f4fc
...
...
@@ -172,11 +172,11 @@ class HtmlGenerator : public OutputGenerator
void
writeNonBreakableSpace
(
int
);
void
startDescTable
()
{
t
<<
"<table border=
0 cellspacing=2 cellpadding=0
>"
<<
endl
;
}
{
t
<<
"<table border=
\"
0
\"
cellspacing=
\"
2
\"
cellpadding=
\"
0
\"
>"
<<
endl
;
}
void
endDescTable
()
{
t
<<
"</table>"
<<
endl
;
}
void
startDescTableTitle
()
{
t
<<
"<tr><td valign=
top
><em>"
;
}
{
t
<<
"<tr><td valign=
\"
top
\"
><em>"
;
}
void
endDescTableTitle
()
{
t
<<
"</em> </td>"
;
}
void
startDescTableData
()
...
...
src/index.cpp
View file @
4b77f4fc
...
...
@@ -544,31 +544,32 @@ void writeClassTree(BaseClassList *cl,int level)
void
writeClassTreeNode
(
ClassDef
*
cd
,
bool
hasHtmlHelp
,
bool
hasFtvHelp
,
bool
&
started
,
int
level
)
{
if
(
cd
->
isVisibleInHierarchy
()
&&
!
cd
->
visited
)
//printf("writeClassTreeNode(%s) visited=%d\n",cd->name().data(),cd->visited);
if
(
cd
->
isVisibleInHierarchy
()
&&
!
cd
->
visited
)
{
if
(
!
started
)
{
if
(
!
started
)
started
=
TRUE
;
}
bool
hasChildren
=
classHasVisibleChildren
(
cd
);
//printf("node: Has children %s: %d\n",cd->name().data(),hasChildren);
if
(
cd
->
isLinkable
())
{
if
(
hasHtmlHelp
)
{
started
=
TRUE
;
HtmlHelp
::
getInstance
()
->
addContentsItem
(
hasChildren
,
cd
->
displayName
(),
cd
->
getOutputFileBase
())
;
}
bool
hasChildren
=
classHasVisibleChildren
(
cd
);
//printf("node: Has children %s: %d\n",cd->name().data(),hasChildren);
if
(
cd
->
isLinkable
())
if
(
hasFtvHelp
)
{
if
(
hasHtmlHelp
)
{
HtmlHelp
::
getInstance
()
->
addContentsItem
(
hasChildren
,
cd
->
displayName
(),
cd
->
getOutputFileBase
());
}
if
(
hasFtvHelp
)
{
FTVHelp
::
getInstance
()
->
addContentsItem
(
hasChildren
,
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
displayName
());
}
FTVHelp
::
getInstance
()
->
addContentsItem
(
hasChildren
,
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
displayName
());
}
if
(
hasChildren
)
{
writeClassTree
(
cd
->
subClasses
(),
level
+
1
);
}
cd
->
visited
=
TRUE
;
}
if
(
hasChildren
)
{
writeClassTree
(
cd
->
subClasses
(),
level
+
1
);
}
cd
->
visited
=
TRUE
;
}
}
void
writeClassTree
(
ClassList
*
cl
,
int
level
)
...
...
@@ -578,7 +579,11 @@ void writeClassTree(ClassList *cl,int level)
bool
hasFtvHelp
=
generateHtml
&&
Config_getBool
(
"GENERATE_TREEVIEW"
);
ClassListIterator
cli
(
*
cl
);
bool
started
=
FALSE
;
for
(
;
cli
.
current
()
;
++
cli
)
for
(
cli
.
toFirst
()
;
cli
.
current
()
;
++
cli
)
{
cli
.
current
()
->
visited
=
FALSE
;
}
for
(
cli
.
toFirst
()
;
cli
.
current
()
;
++
cli
)
{
writeClassTreeNode
(
cli
.
current
(),
hasHtmlHelp
,
hasFtvHelp
,
started
,
level
);
}
...
...
@@ -591,7 +596,11 @@ void writeClassTree(ClassSDict *d,int level)
bool
hasFtvHelp
=
generateHtml
&&
Config_getBool
(
"GENERATE_TREEVIEW"
);
ClassSDict
::
Iterator
cli
(
*
d
);
bool
started
=
FALSE
;
for
(
;
cli
.
current
()
;
++
cli
)
for
(
cli
.
toFirst
()
;
cli
.
current
()
;
++
cli
)
{
cli
.
current
()
->
visited
=
FALSE
;
}
for
(
cli
.
toFirst
()
;
cli
.
current
()
;
++
cli
)
{
writeClassTreeNode
(
cli
.
current
(),
hasHtmlHelp
,
hasFtvHelp
,
started
,
level
);
}
...
...
@@ -1356,7 +1365,7 @@ void writeAlphabeticalClassList(OutputList &ol)
alphaLinks
+=
"</div><p>
\n
"
;
ol
.
writeString
(
alphaLinks
);
ol
.
writeString
(
"<table align=
center
width=
\"
95%
\"
border=
\"
0
\"
cellspacing=
\"
0
\"
cellpadding=
\"
0
\"
>
\n
"
);
ol
.
writeString
(
"<table align=
\"
center
\"
width=
\"
95%
\"
border=
\"
0
\"
cellspacing=
\"
0
\"
cellpadding=
\"
0
\"
>
\n
"
);
// the number of columns in the table
const
int
columns
=
Config_getInt
(
"COLS_IN_ALPHA_INDEX"
);
...
...
@@ -2835,7 +2844,21 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level)
ftvHelp
->
incContentsDepth
();
}
writeClassTree
(
gd
->
classSDict
,
1
);
ClassDef
*
cd
;
ClassSDict
::
Iterator
cdi
(
*
gd
->
classSDict
);
for
(
cdi
.
toFirst
();(
cd
=
cdi
.
current
());
++
cdi
)
{
if
(
cd
->
isLinkable
())
{
//printf("node: Has children %s\n",cd->name().data());
if
(
htmlHelp
)
htmlHelp
->
addContentsItem
(
FALSE
,
cd
->
displayName
(),
cd
->
getOutputFileBase
());
if
(
ftvHelp
)
ftvHelp
->
addContentsItem
(
FALSE
,
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
displayName
());
}
}
//writeClassTree(gd->classSDict,1);
if
(
htmlHelp
)
htmlHelp
->
decContentsDepth
();
if
(
ftvHelp
)
ftvHelp
->
decContentsDepth
();
}
...
...
src/libdoxygen.pro.in
View file @
4b77f4fc
...
...
@@ -33,6 +33,7 @@ HEADERS = bufstr.h \
define.h \
definition.h \
diagram.h \
dirdef.h \
docparser.h \
doctokenizer.h \
docvisitor.h \
...
...
@@ -136,6 +137,7 @@ SOURCES = ce_lex.cpp \
define.cpp \
definition.cpp \
diagram.cpp \
dirdef.cpp \
docparser.cpp \
doctokenizer.cpp \
dot.cpp \
...
...
src/logos.cpp
View file @
4b77f4fc
This diff is collapsed.
Click to expand it.
src/memberdef.cpp
View file @
4b77f4fc
...
...
@@ -543,7 +543,17 @@ QCString MemberDef::anchor() const
if
(
groupAlias
)
return
groupAlias
->
anchor
();
if
(
m_templateMaster
)
return
m_templateMaster
->
anchor
();
if
(
enumScope
)
result
.
prepend
(
enumScope
->
anchor
());
if
(
group
)
result
.
prepend
(
"g"
);
if
(
group
)
{
if
(
groupMember
)
{
result
=
groupMember
->
anchor
();
}
else
{
result
.
prepend
(
"g"
);
}
}
return
result
;
}
...
...
@@ -1184,12 +1194,18 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
// name().data(),hasDocs,container->definitionType(),inGroup);
if
(
!
hasDocs
)
return
;
QCString
scopeName
=
scName
;
QCString
memAnchor
=
anchor
();
if
(
container
->
definitionType
()
==
TypeGroup
)
{
if
(
getClassDef
())
scopeName
=
getClassDef
()
->
name
();
else
if
(
getNamespaceDef
())
scopeName
=
getNamespaceDef
()
->
name
();
else
if
(
getFileDef
())
scopeName
=
getFileDef
()
->
name
();
}
else
if
(
container
->
definitionType
()
==
TypeFile
&&
getNamespaceDef
())
{
// member is in a namespace, but is written as part of the file documentation
// as well, so we need to make sure its label is unique.
memAnchor
.
prepend
(
"file_"
);
}
QCString
cname
=
container
->
name
();
QCString
cfname
=
getOutputFileBase
();
...
...
@@ -1200,7 +1216,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
if
(
Config_getBool
(
"GENERATE_HTML"
)
&&
Config_getBool
(
"GENERATE_HTMLHELP"
))
{
HtmlHelp
*
htmlHelp
=
HtmlHelp
::
getInstance
();
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
()
);
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
memAnchor
);
}
// get member name
...
...
@@ -1242,11 +1258,11 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
{
if
(
vmd
->
isEnumerate
()
&&
ldef
.
mid
(
i
,
l
)
==
vmd
->
name
())
{
ol
.
startDoxyAnchor
(
cfname
,
cname
,
anchor
()
,
doxyName
);
ol
.
startMemberDoc
(
cname
,
name
(),
anchor
()
,
name
());
ol
.
startDoxyAnchor
(
cfname
,
cname
,
memAnchor
,
doxyName
);
ol
.
startMemberDoc
(
cname
,
name
(),
memAnchor
,
name
());
if
(
hasHtmlHelp
)
{
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
()
);
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
memAnchor
);
}
linkifyText
(
TextGeneratorOLImpl
(
ol
),
container
,
getBodyDef
(),
name
(),
ldef
.
left
(
i
));
vmd
->
writeEnumDeclaration
(
ol
,
getClassDef
(),
getNamespaceDef
(),
getFileDef
(),
getGroupDef
());
...
...
@@ -1258,11 +1274,11 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
if
(
!
found
)
// anonymous compound
{
//printf("Anonymous compound `%s'\n",cname.data());
ol
.
startDoxyAnchor
(
cfname
,
cname
,
anchor
()
,
doxyName
);
ol
.
startMemberDoc
(
cname
,
name
(),
anchor
()
,
name
());
ol
.
startDoxyAnchor
(
cfname
,
cname
,
memAnchor
,
doxyName
);
ol
.
startMemberDoc
(
cname
,
name
(),
memAnchor
,
name
());
if
(
hasHtmlHelp
)
{
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
()
);
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
memAnchor
);
}
// strip anonymous compound names from definition
int
si
=
ldef
.
find
(
' '
),
pi
,
ei
=
i
+
l
;
...
...
@@ -1280,11 +1296,11 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
}
else
// not an enum value
{
ol
.
startDoxyAnchor
(
cfname
,
cname
,
anchor
()
,
doxyName
);
ol
.
startMemberDoc
(
cname
,
name
(),
anchor
()
,
name
());
ol
.
startDoxyAnchor
(
cfname
,
cname
,
memAnchor
,
doxyName
);
ol
.
startMemberDoc
(
cname
,
name
(),
memAnchor
,
name
());
if
(
hasHtmlHelp
)
{
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
()
);
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
memAnchor
);
}
ClassDef
*
cd
=
getClassDef
();
...
...
@@ -1457,7 +1473,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
ol
.
endMemberDocName
();
ol
.
endMemberDoc
(
FALSE
);
}
ol
.
endDoxyAnchor
(
cfname
,
anchor
()
);
ol
.
endDoxyAnchor
(
cfname
,
memAnchor
);
ol
.
startIndent
();
ol
.
pushGeneratorState
();
...
...
@@ -1872,7 +1888,9 @@ void MemberDef::setAnchor(const char *a)
anc
=
a
;
}
void
MemberDef
::
setGroupDef
(
GroupDef
*
gd
,
Grouping
::
GroupPri_t
pri
,
const
QCString
&
fileName
,
int
startLine
,
bool
hasDocs
)
void
MemberDef
::
setGroupDef
(
GroupDef
*
gd
,
Grouping
::
GroupPri_t
pri
,
const
QCString
&
fileName
,
int
startLine
,
bool
hasDocs
,
MemberDef
*
member
)
{
//printf("%s MemberDef::setGroupDef(%s)\n",name().data(),gd->name().data());
group
=
gd
;
...
...
@@ -1880,6 +1898,7 @@ void MemberDef::setGroupDef(GroupDef *gd,Grouping::GroupPri_t pri,const QCString
groupFileName
=
fileName
;
groupStartLine
=
startLine
;
groupHasDocs
=
hasDocs
;
groupMember
=
member
;
}
void
MemberDef
::
setEnumScope
(
MemberDef
*
md
)
...
...
src/memberdef.h
View file @
4b77f4fc
...
...
@@ -164,7 +164,9 @@ class MemberDef : public Definition
void
setMaxInitLines
(
int
lines
)
{
userInitLines
=
lines
;
}
void
setMemberClass
(
ClassDef
*
cd
);
void
setSectionList
(
Definition
*
d
,
MemberList
*
sl
);
void
setGroupDef
(
GroupDef
*
gd
,
Grouping
::
GroupPri_t
pri
,
const
QCString
&
fileName
,
int
startLine
,
bool
hasDocs
);
void
setGroupDef
(
GroupDef
*
gd
,
Grouping
::
GroupPri_t
pri
,
const
QCString
&
fileName
,
int
startLine
,
bool
hasDocs
,
MemberDef
*
member
=
0
);
void
setExplicitExternal
(
bool
b
)
{
explExt
=
b
;
}
void
setReadAccessor
(
const
char
*
r
)
{
read
=
r
;
}
void
setWriteAccessor
(
const
char
*
w
)
{
write
=
w
;
}
...
...
@@ -360,6 +362,7 @@ class MemberDef : public Definition
QCString
groupFileName
;
// file where this grouping was defined
int
groupStartLine
;
// line " " " " "
bool
groupHasDocs
;
// true if the entry that caused the grouping was documented
MemberDef
*
groupMember
;
MemberDef
*
m_templateMaster
;
SDict
<
MemberList
>
*
classSectionSDict
;
bool
docsForDefinition
;
// TRUE => documentation block is put before
...
...
src/membergroup.cpp
View file @
4b77f4fc
...
...
@@ -81,7 +81,9 @@ void MemberGroup::insertMember(MemberDef *md)
GroupDef
*
gd
;
if
(
firstMd
&&
(
gd
=
firstMd
->
getGroupDef
()))
{
md
->
setGroupDef
(
gd
,
firstMd
->
getGroupPri
(),
firstMd
->
getGroupFileName
(),
firstMd
->
getGroupStartLine
(),
firstMd
->
getGroupHasDocs
());
md
->
setGroupDef
(
gd
,
firstMd
->
getGroupPri
(),
firstMd
->
getGroupFileName
(),
firstMd
->
getGroupStartLine
(),
firstMd
->
getGroupHasDocs
());
gd
->
insertMember
(
md
);
}
}
...
...
src/scanner.l
View file @
4b77f4fc
...
...
@@ -2636,7 +2636,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<ReadBody,ReadNSBody,ReadBodyIntf>{BN}+ { current->program += yytext ;
lineCount() ;
}
<ReadBodyIntf>"@end"
{ // end of Objective C block
<ReadBodyIntf>"@end"
/[^a-z_A-Z0-9]
{ // end of Objective C block
current_root->addSubEntry( current ) ;
current=new Entry;
initEntry();
...
...
@@ -5475,7 +5475,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
unput('\n');
BEGIN( lastInternalDocContext );
}
<AfterDoc>{CMD}"brief" { BEGIN(AfterDocBrief); }
<AfterDoc>{CMD}"brief" {
current->brief.resize(0);
BEGIN(AfterDocBrief); }
<AfterDoc>"/*"|"//" { current->doc+=yytext; }
<AfterDoc>^{B}*"*"+/[^/]
<AfterDoc>\n { current->doc+=yytext; yyLineNr++; }
...
...
src/util.cpp
View file @
4b77f4fc
...
...
@@ -1203,6 +1203,7 @@ static bool findOperator(const QCString &s,int i)
}
static
const
char
constScope
[]
=
{
'c'
,
'o'
,
'n'
,
's'
,
't'
,
':'
};
static
const
char
virtualScope
[]
=
{
'v'
,
'i'
,
'r'
,
't'
,
'u'
,
'a'
,
'l'
,
':'
};
QCString
removeRedundantWhiteSpace
(
const
QCString
&
s
)
{
...
...
@@ -1211,11 +1212,13 @@ QCString removeRedundantWhiteSpace(const QCString &s)
uint
i
;
uint
l
=
s
.
length
();
uint
csp
=
0
;
uint
vsp
=
0
;
for
(
i
=
0
;
i
<
l
;
i
++
)
{
nextChar:
char
c
=
s
.
at
(
i
);
if
(
csp
<
6
&&
c
==
constScope
[
csp
])
csp
++
;
else
csp
=
0
;
if
(
vsp
<
8
&&
c
==
virtualScope
[
vsp
])
vsp
++
;
else
vsp
=
0
;
if
(
c
==
'"'
)
// quoted string
{
i
++
;
...
...
@@ -1262,9 +1265,13 @@ nextChar:
result
+=
' '
;
result
+=
s
.
at
(
i
);
}
else
if
(
c
==
't'
&&
csp
==
5
&&
!
(
isId
(
s
.
at
(
i
+
1
))
||
s
.
at
(
i
+
1
)
==
' '
||
s
.
at
(
i
+
1
)
==
')'
||
s
.
at
(
i
+
1
)
==
','
||
s
.
at
(
i
+
1
)
==
'\0'
))
// prevent const ::A from being converted to const::A
else
if
(
c
==
't'
&&
csp
==
5
&&
!
(
isId
(
s
.
at
(
i
+
1
))
/*|| s.at(i+1)==' '*/
||
s
.
at
(
i
+
1
)
==
')'
||
s
.
at
(
i
+
1
)
==
','
||
s
.
at
(
i
+
1
)
==
'\0'
))
// prevent const ::A from being converted to const::A
{
result
+=
"t "
;
if
(
s
.
at
(
i
+
1
)
==
' '
)
i
++
;
csp
=
0
;
}
else
if
(
c
==
':'
&&
csp
==
6
)
// replace const::A by const ::A
...
...
@@ -1272,6 +1279,20 @@ nextChar:
result
+=
" :"
;
csp
=
0
;
}
else
if
(
c
==
'l'
&&
vsp
==
7
&&
!
(
isId
(
s
.
at
(
i
+
1
))
/*|| s.at(i+1)==' '*/
||
s
.
at
(
i
+
1
)
==
')'
||
s
.
at
(
i
+
1
)
==
','
||
s
.
at
(
i
+
1
)
==
'\0'
))
// prevent virtual ::A from being converted to virtual::A
{
result
+=
"l "
;
if
(
s
.
at
(
i
+
1
)
==
' '
)
i
++
;
vsp
=
0
;
}
else
if
(
c
==
':'
&&
vsp
==
8
)
// replace virtual::A by virtual ::A
{
result
+=
" :"
;
vsp
=
0
;
}
else
if
(
!
isspace
((
uchar
)
c
)
||
(
i
>
0
&&
i
<
l
-
1
&&
(
isId
(
s
.
at
(
i
-
1
))
||
s
.
at
(
i
-
1
)
==
')'
||
s
.
at
(
i
-
1
)
==
','
||
s
.
at
(
i
-
1
)
==
'>'
||
s
.
at
(
i
-
1
)
==
']'
)
...
...
@@ -1399,6 +1420,16 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,
found
=
TRUE
;
}
}
else
if
((
cd
=
getClass
(
word
+
"-p"
)))
// search for Obj-C protocols as well
{
// add link to the result
if
(
external
?
cd
->
isLinkable
()
:
cd
->
isLinkableInProject
())
{
out
.
writeLink
(
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
word
);
found
=
TRUE
;
}
}
if
(
scope
&&
(
scope
->
definitionType
()
==
Definition
::
TypeClass
||
...
...
@@ -3335,7 +3366,12 @@ bool resolveLink(/* in */ const char *scName,
*
resContext
=
fd
;
return
TRUE
;
}
else
if
((
cd
=
getClass
(
linkRef
)))
else
if
((
cd
=
getClass
(
linkRef
)))
// class link
{
*
resContext
=
cd
;
return
TRUE
;
}
else
if
((
cd
=
getClass
(
linkRef
+
"-p"
)))
// Obj-C protocol link
{
*
resContext
=
cd
;
return
TRUE
;
...
...
tmake/lib/aix-xlc/tmake.conf
View file @
4b77f4fc
...
...
@@ -7,11 +7,13 @@
TEMPLATE
=
app
CONFIG
=
qt
warn_on
release
TMAKE_CC
=
xlC
TMAKE_CC
=
xlc
#TMAKE_CC = xlC
TMAKE_CFLAGS
= -+ -
qstrict
-
D_BSD
TMAKE_CFLAGS_WARN_ON
=
TMAKE_CFLAGS_WARN_OFF
=
TMAKE_CFLAGS_RELEASE
= -
O3
TMAKE_CFLAGS_RELEASE
= -
O
#TMAKE_CFLAGS_RELEASE = -O3
TMAKE_CFLAGS_DEBUG
= -
g
TMAKE_CFLAGS_SHLIB
=
TMAKE_CFLAGS_YACC
=
...
...
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