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
832e08dc
Commit
832e08dc
authored
May 28, 2000
by
dimitri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.1.3-20000528
parent
f38608d4
Changes
36
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
36 changed files
with
701 additions
and
298 deletions
+701
-298
INSTALL
INSTALL
+4
-4
README
README
+2
-2
VERSION
VERSION
+1
-1
config_templ.l
addon/configgen/config_templ.l
+7
-7
config.doc
doc/config.doc
+81
-78
faq.doc
doc/faq.doc
+1
-1
index.doc
doc/index.doc
+2
-0
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
classdef.cpp
src/classdef.cpp
+1
-3
code.l
src/code.l
+2
-2
config.l
src/config.l
+10
-7
dot.cpp
src/dot.cpp
+177
-77
dot.h
src/dot.h
+18
-8
doxygen.cpp
src/doxygen.cpp
+152
-29
entry.h
src/entry.h
+2
-1
filedef.cpp
src/filedef.cpp
+18
-7
filedef.h
src/filedef.h
+5
-2
filename.cpp
src/filename.cpp
+1
-1
groupdef.cpp
src/groupdef.cpp
+1
-1
htmlgen.cpp
src/htmlgen.cpp
+8
-9
htmlgen.h
src/htmlgen.h
+3
-3
latexgen.cpp
src/latexgen.cpp
+38
-2
latexgen.h
src/latexgen.h
+5
-5
mangen.h
src/mangen.h
+1
-1
memberdef.cpp
src/memberdef.cpp
+1
-1
message.cpp
src/message.cpp
+17
-6
namespacedef.cpp
src/namespacedef.cpp
+17
-6
namespacedef.h
src/namespacedef.h
+7
-2
outputgen.h
src/outputgen.h
+1
-1
outputlist.h
src/outputlist.h
+2
-2
pre.l
src/pre.l
+2
-1
rtfgen.cpp
src/rtfgen.cpp
+17
-11
rtfgen.h
src/rtfgen.h
+1
-1
scanner.l
src/scanner.l
+79
-9
translator.h
src/translator.h
+11
-1
util.cpp
src/util.cpp
+5
-5
No files found.
INSTALL
View file @
832e08dc
DOXYGEN Version 1.1.3-2000052
2
DOXYGEN Version 1.1.3-2000052
8
CONTENTS
--------
...
...
@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
1. Unpack the archive, unless you already have:
gunzip doxygen-1.1.3-2000052
2
.src.tar.gz # uncompress the archive
tar xf doxygen-1.1.3-2000052
2
.src.tar # unpack it
gunzip doxygen-1.1.3-2000052
8
.src.tar.gz # uncompress the archive
tar xf doxygen-1.1.3-2000052
8
.src.tar # unpack it
2. Run the configure script:
...
...
@@ -252,4 +252,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (2
2
May 2000)
Dimitri van Heesch (2
8
May 2000)
README
View file @
832e08dc
DOXYGEN Version 1.1.3-2000052
2
DOXYGEN Version 1.1.3-2000052
8
Please read INSTALL for compilation instructions.
...
...
@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (2
2
May 2000)
Dimitri van Heesch (2
8
May 2000)
VERSION
View file @
832e08dc
1.1.3-2000052
2
1.1.3-2000052
8
addon/configgen/config_templ.l
View file @
832e08dc
...
...
@@ -317,7 +317,7 @@ void configStrToVal()
static void substEnvVarsInString(QCString &s)
{
QRegExp re("\\$([a-z_A-Z0-9]+
)");
static QRegExp re("\\$\\([a-z_A-Z0-9]+\\
)");
int p=0;
int i,l;
//printf("substEnvVarInString(%s) start\n",s.data());
...
...
@@ -644,19 +644,19 @@ void checkConfig()
}
// add default pattern if needed
if (Config::filePatternList.
count()==0
)
if (Config::filePatternList.
isEmpty()
)
{
Config::filePatternList
.append("*")
;
Config::filePatternList
="*"
;
}
// add default pattern if needed
if (Config::examplePatternList.
count()==0
)
if (Config::examplePatternList.
isEmpty()
)
{
Config::examplePatternList
.append("*")
;
Config::examplePatternList
="*"
;
}
// add default pattern if needed
//if (Config::imagePatternList.
count()==0
)
//if (Config::imagePatternList.
isEmpty()
)
//{
// Config::imagePatternList.append("*");
//}
...
...
@@ -685,7 +685,7 @@ void checkConfig()
// check documentation URL
if (Config::docURL.isEmpty())
{
Config::docURL = Config::outputDir.copy().prepend("file://")
.append("html")
;
Config::docURL = Config::outputDir.copy().prepend("file://")
+"html"
;
}
else if (Config::docURL.left(7)!="http://" && Config::docURL.left(7)!="file://")
{
...
...
doc/config.doc
View file @
832e08dc
This diff is collapsed.
Click to expand it.
doc/faq.doc
View file @
832e08dc
...
...
@@ -149,7 +149,7 @@ QDict, QString, QArray, QTextStream, QRegExp etc.
The GUI front-end doxywizard uses Qt for... well... the GUI!
<li><b>Can use doxygen on my Java code?</b>
<li><b>Can
I
use doxygen on my Java code?</b>
No, at the moment there is no support for Java. I suggest to
use Sun's JavaDoc instead.
...
...
doc/index.doc
View file @
832e08dc
...
...
@@ -163,6 +163,7 @@ Thanks go to:
PDF links, and the configuration generator.
<li>Matthias Andree for providing a .spec script for building rpms from the
sources.
<li>Tim Mensch for adding the todo command.
<li>Jens Breitenstein, Christophe Bordeaux, Samuel Hägglund, Xet Erixon,
Vlastimil Havran, Ahmed Also Faisal, Alessandro Falappa, Kenji Nagamatsu,
Francisco Oltra Thennet, Olli Korhonen for providing translations into
...
...
@@ -236,6 +237,7 @@ Peter Garner,
Fred Labrosse,
Frank Schimmel,
Reinhard Nissl,
Alexander Gidon,
and many others for suggestions, patches and bug reports.
</ul>
*/
...
...
packages/rpm/doxygen.spec
View file @
832e08dc
Name: doxygen
Version: 1.1.3-2000052
2
Version: 1.1.3-2000052
8
Summary: documentation system for C, C++ and IDL
Release: 1
Source0: doxygen-%{version}.src.tar.gz
...
...
src/classdef.cpp
View file @
832e08dc
...
...
@@ -710,7 +710,6 @@ void ClassDef::writeDocumentation(OutputList &ol)
if
(
!
inheritanceGraph
.
isTrivial
())
{
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
startDotGraph
();
parseText
(
ol
,
theTranslator
->
trClassDiagram
(
name
()));
...
...
@@ -735,7 +734,6 @@ void ClassDef::writeDocumentation(OutputList &ol)
if
(
!
usageImplGraph
.
isTrivial
())
{
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
startDotGraph
();
parseText
(
ol
,
theTranslator
->
trCollaborationDiagram
(
name
()));
...
...
@@ -822,7 +820,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
disable
(
OutputGenerator
::
RTF
);
ol
.
writeAnchor
(
"_details"
);
ol
.
writeAnchor
(
0
,
"_details"
);
ol
.
popGeneratorState
();
ol
.
startGroupHeader
();
parseText
(
ol
,
theTranslator
->
trDetailedDescription
());
...
...
src/code.l
View file @
832e08dc
...
...
@@ -304,7 +304,7 @@ static void generateClassLink(OutputList &ol,char *clName,int *clNameLen=0)
//if (latexOn) ol.disable(OutputGenerator::Latex);
ol.disable(OutputGenerator::Latex);
ol.disable(OutputGenerator::RTF);
ol.writeAnchor(anchor);
ol.writeAnchor(
0,
anchor);
//if (latexOn) ol.enable(OutputGenerator::Latex);
ol.popGeneratorState();
g_anchorCount++;
...
...
@@ -347,7 +347,7 @@ static bool getLink(const char *className,
result.pushGeneratorState();
//if (latexEnabled) result.disable(OutputGenerator::Latex);
result.disable(OutputGenerator::Latex);
result.writeAnchor(anchor);
result.writeAnchor(
0,
anchor);
result.popGeneratorState();
//if (latexEnabled) result.enable(OutputGenerator::Latex);
g_anchorCount++;
...
...
src/config.l
View file @
832e08dc
...
...
@@ -47,6 +47,9 @@ void warn_cont(const char *fmt, ...)
vfprintf(stderr, fmt, args);
va_end(args);
}
void initWarningFormat()
{
}
#else
#include "doxygen.h"
#include "message.h"
...
...
@@ -1842,7 +1845,7 @@ void configStrToVal()
static void substEnvVarsInString(QCString &s)
{
QRegExp re("\\$([a-z_A-Z0-9]+
)");
static QRegExp re("\\$\\([a-z_A-Z0-9]+\\
)");
int p=0;
int i,l;
//printf("substEnvVarInString(%s) start\n",s.data());
...
...
@@ -2206,19 +2209,19 @@ void checkConfig()
}
// add default pattern if needed
if (Config::filePatternList.
count()==0
)
if (Config::filePatternList.
isEmpty()
)
{
Config::filePatternList
.append("*")
;
Config::filePatternList
="*"
;
}
// add default pattern if needed
if (Config::examplePatternList.
count()==0
)
if (Config::examplePatternList.
isEmpty()
)
{
Config::examplePatternList
.append("*")
;
Config::examplePatternList
="*"
;
}
// add default pattern if needed
//if (Config::imagePatternList.
count()==0
)
//if (Config::imagePatternList.
isEmpty()
)
//{
// Config::imagePatternList.append("*");
//}
...
...
@@ -2247,7 +2250,7 @@ void checkConfig()
// check documentation URL
if (Config::docURL.isEmpty())
{
Config::docURL = Config::outputDir.copy().prepend("file://")
.append("html")
;
Config::docURL = Config::outputDir.copy().prepend("file://")
+"html"
;
}
else if (Config::docURL.left(7)!="http://" && Config::docURL.left(7)!="file://")
{
...
...
src/dot.cpp
View file @
832e08dc
This diff is collapsed.
Click to expand it.
src/dot.h
View file @
832e08dc
...
...
@@ -25,6 +25,8 @@ class FileDef;
class
QTextStream
;
class
DotNodeList
;
enum
GraphOutputFormat
{
GIF
,
EPS
};
struct
EdgeInfo
{
enum
Colors
{
Blue
=
0
,
Green
=
1
,
Red
=
2
,
Black
=
3
,
Grey
=
4
};
...
...
@@ -44,8 +46,13 @@ class DotNode
friend
class
DotClassGraph
;
friend
class
DotInclDepGraph
;
friend
class
DotNodeList
;
friend
void
writeDotGraph
(
DotNode
*
root
,
const
QCString
&
baseName
,
bool
lrRank
,
bool
renderParents
,
int
distance
);
friend
void
writeDotGraph
(
DotNode
*
root
,
GraphOutputFormat
f
,
const
QCString
&
baseName
,
bool
lrRank
,
bool
renderParents
,
int
distance
);
public
:
DotNode
(
int
n
,
const
char
*
lab
,
const
char
*
url
,
int
distance
=
0
,
bool
rootNode
=
FALSE
);
~
DotNode
();
...
...
@@ -62,15 +69,17 @@ class DotNode
void
removeChild
(
DotNode
*
n
);
void
removeParent
(
DotNode
*
n
);
int
number
()
const
{
return
m_number
;
}
void
write
(
QTextStream
&
t
,
bool
topDown
,
bool
toChildren
,
int
maxDistance
=
1000
);
void
write
(
QTextStream
&
t
,
GraphOutputFormat
f
,
bool
topDown
,
bool
toChildren
,
int
maxDistance
=
1000
);
int
m_subgraphId
;
void
clearWriteFlag
();
private
:
void
colorConnectedNodes
(
int
curColor
);
void
writeBox
(
QTextStream
&
t
,
bool
hasNonReachableChildren
);
void
writeArrow
(
QTextStream
&
t
,
DotNode
*
cn
,
EdgeInfo
*
ei
,
bool
topDown
,
bool
pointBack
=
TRUE
);
void
writeBox
(
QTextStream
&
t
,
GraphOutputFormat
f
,
bool
hasNonReachableChildren
);
void
writeArrow
(
QTextStream
&
t
,
GraphOutputFormat
f
,
DotNode
*
cn
,
EdgeInfo
*
ei
,
bool
topDown
,
bool
pointBack
=
TRUE
);
const
DotNode
*
findDocNode
()
const
;
// only works for acyclic graphs!
int
m_number
;
QCString
m_label
;
//!< label text
...
...
@@ -108,7 +117,8 @@ class DotClassGraph
DotClassGraph
(
ClassDef
*
cd
,
GraphType
t
,
int
maxRecusionDepth
=
1000
);
~
DotClassGraph
();
bool
isTrivial
()
const
;
void
writeGraph
(
QTextStream
&
t
,
const
char
*
path
,
bool
TBRank
=
TRUE
);
void
writeGraph
(
QTextStream
&
t
,
GraphOutputFormat
f
,
const
char
*
path
,
bool
TBRank
=
TRUE
);
QCString
diskName
()
const
;
private
:
...
...
@@ -129,7 +139,7 @@ class DotInclDepGraph
public
:
DotInclDepGraph
(
FileDef
*
fd
);
~
DotInclDepGraph
();
void
writeGraph
(
QTextStream
&
t
,
const
char
*
path
);
void
writeGraph
(
QTextStream
&
t
,
GraphOutputFormat
f
,
const
char
*
path
);
bool
isTrivial
()
const
;
QCString
diskName
()
const
;
...
...
src/doxygen.cpp
View file @
832e08dc
...
...
@@ -696,6 +696,8 @@ void buildNamespaceList(Entry *root)
}
}
//----------------------------------------------------------------------
void
findUsingDirectives
(
Entry
*
root
)
{
if
(
root
->
section
==
Entry
::
USINGDIR_SEC
)
...
...
@@ -802,6 +804,83 @@ void findUsingDirectives(Entry *root)
}
}
//----------------------------------------------------------------------
void
findUsingDeclarations
(
Entry
*
root
)
{
if
(
root
->
section
==
Entry
::
USINGDECL_SEC
)
{
//printf("Found using declaration %s at line %d of %s\n",
// root->name.data(),root->startLine,root->fileName.data());
bool
ambig
;
if
(
!
root
->
name
.
isEmpty
())
{
ClassDef
*
usingCd
=
0
;
NamespaceDef
*
nd
=
0
;
FileDef
*
fd
=
findFileDef
(
&
inputNameDict
,
root
->
fileName
,
ambig
);
QCString
scName
;
// see if the using statement was found inside a namespace or inside
// the global file scope.
if
(
root
->
parent
->
section
==
Entry
::
NAMESPACE_SEC
)
{
scName
=
root
->
parent
->
name
.
copy
();
if
(
!
scName
.
isEmpty
())
{
nd
=
namespaceDict
[
scName
];
}
}
// Assume the using statement was used to import a class.
// Find the scope in which the `using' namespace is defined by prepending
// the possible scopes in which the using statement was found, starting
// with the most inner scope and going to the most outer scope (i.e.
// file scope).
int
scopeOffset
=
scName
.
length
();
do
{
QCString
scope
=
scopeOffset
>
0
?
scName
.
left
(
scopeOffset
)
+
"::"
:
QCString
();
//printf("Trying with scope=`%s'\n",scope.data());
usingCd
=
getClass
(
scope
+
root
->
name
);
if
(
scopeOffset
==
0
)
{
scopeOffset
=-
1
;
}
else
if
((
scopeOffset
=
scName
.
findRev
(
"::"
,
scopeOffset
-
1
))
==-
1
)
{
scopeOffset
=
0
;
}
}
while
(
scopeOffset
>=
0
&&
usingCd
==
0
);
//printf("%s -> %p\n",root->name.data(),usingCd);
// add the namespace the correct scope
if
(
usingCd
)
{
if
(
nd
)
{
//printf("Inside namespace %s\n",nd->name().data());
nd
->
addUsingDeclaration
(
usingCd
);
}
else
if
(
fd
)
{
//printf("Inside file %s\n",fd->name().data());
fd
->
addUsingDeclaration
(
usingCd
);
}
}
}
}
EntryListIterator
eli
(
*
root
->
sublist
);
Entry
*
e
;
for
(;(
e
=
eli
.
current
());
++
eli
)
{
findUsingDeclarations
(
e
);
}
}
//----------------------------------------------------------------------
static
MemberDef
*
addVariableToClass
(
...
...
@@ -2131,7 +2210,7 @@ void addMemberDocs(Entry *root,
// find a class definition given the scope name and (optionally) a
// template list specifier
static
ClassDef
*
findClassDefinition
(
const
char
*
scopeName
,
const
char
*
classTempList
)
static
ClassDef
*
find
Simple
ClassDefinition
(
const
char
*
scopeName
,
const
char
*
classTempList
)
{
ClassDef
*
tcd
=
0
;
if
(
classTempList
)
// try to find the correct specialization
...
...
@@ -2150,6 +2229,68 @@ static ClassDef *findClassDefinition(const char *scopeName,const char *classTemp
return
tcd
;
}
static
ClassDef
*
findClassDefinition
(
FileDef
*
fd
,
NamespaceDef
*
nd
,
const
char
*
scopeName
,
const
char
*
classTempList
)
{
ClassDef
*
tcd
=
findSimpleClassDefinition
(
scopeName
,
classTempList
);
if
(
tcd
==
0
)
// try using declaration
{
ClassList
*
cl
=
0
;
if
(
nd
)
{
cl
=
nd
->
getUsedClasses
();
}
else
{
cl
=
fd
->
getUsedClasses
();
}
if
(
cl
)
{
ClassListIterator
cli
(
*
cl
);
ClassDef
*
cd
;
for
(;(
cd
=
cli
.
current
())
&&
tcd
==
0
;
++
cli
)
{
QCString
scName
=
scopeName
;
int
scopeOffset
=
scName
.
length
();
do
{
QCString
scope
=
scName
.
left
(
scopeOffset
);
//printf("`%s'<->`%s' `%s'\n",cd->name().data(),scope.data(),scopeName);
if
(
rightScopeMatch
(
cd
->
name
(),
scope
))
{
//printf("Trying to find `%s'\n",(cd->name()+scName.right(scName.length()-scopeOffset)).data());
tcd
=
findSimpleClassDefinition
(
cd
->
name
()
+
scName
.
right
(
scName
.
length
()
-
scopeOffset
),
classTempList
);
}
scopeOffset
=
scName
.
findRev
(
"::"
,
scopeOffset
-
1
);
}
while
(
scopeOffset
>=
0
&&
tcd
==
0
);
}
}
}
if
(
tcd
==
0
)
// try using directive
{
NamespaceList
*
nl
=
0
;
if
(
nd
)
{
nl
=
nd
->
getUsedNamespaces
();
}
else
if
(
fd
)
{
nl
=
fd
->
getUsedNamespaces
();
}
if
(
nl
)
{
NamespaceListIterator
nli
(
*
nl
);
NamespaceDef
*
nd
;
for
(;(
nd
=
nli
.
current
())
&&
tcd
==
0
;
++
nli
)
{
//printf("Trying with scope=%s\n",nd->name().data());
tcd
=
findSimpleClassDefinition
(
nd
->
name
()
+
"::"
+
scopeName
,
classTempList
);
}
}
}
return
tcd
;
}
//----------------------------------------------------------------------
// Adds the documentation contained in `root' to a global function
...
...
@@ -2659,33 +2800,11 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
//printf("Member %s (member scopeName=%s) (this scopeName=%s) classTempList=%s\n",md->name().data(),cd->name().data(),scopeName.data(),classTempList.data());
ClassDef
*
tcd
=
0
;
tcd
=
findClassDefinition
(
scopeName
,
classTempList
);
if
(
tcd
==
0
)
{
bool
ambig
;
NamespaceDef
*
nd
=
0
;
FileDef
*
fd
=
0
;
NamespaceList
*
nl
=
0
;
if
(
!
namespaceName
.
isEmpty
()
&&
(
nd
=
namespaceDict
[
namespaceName
]))
{
nl
=
nd
->
getUsedNamespaces
();
}
else
if
((
fd
=
findFileDef
(
&
inputNameDict
,
root
->
fileName
,
ambig
)))
{
nl
=
fd
->
getUsedNamespaces
();
}
if
(
nl
)
{
NamespaceListIterator
nli
(
*
nl
);
NamespaceDef
*
nd
;
for
(;(
nd
=
nli
.
current
())
&&
tcd
==
0
;
++
nli
)
{
//printf("Trying with scope=%s\n",nd->name().data());
tcd
=
findClassDefinition
(
nd
->
name
()
+
"::"
+
scopeName
,
classTempList
);
}
}
}
FileDef
*
fd
=
findFileDef
(
&
inputNameDict
,
root
->
fileName
,
ambig
);
NamespaceDef
*
nd
=
0
;
if
(
!
namespaceName
.
isEmpty
())
nd
=
namespaceDict
[
namespaceName
];
tcd
=
findClassDefinition
(
fd
,
nd
,
scopeName
,
classTempList
);
if
(
cd
&&
tcd
==
cd
)
// member's classes match
{
...
...
@@ -4969,7 +5088,10 @@ int main(int argc,char **argv)
* Initialize some global constants
**************************************************************************/
spaces
.
fill
(
' '
,
Config
::
tabSize
);
spaces
.
resize
(
Config
::
tabSize
+
1
);
int
sp
;
for
(
sp
=
0
;
sp
<
Config
::
tabSize
;
sp
++
)
spaces
.
at
(
sp
)
=
' '
;
spaces
.
at
(
Config
::
tabSize
)
=
'\0'
;
compoundKeywordDict
.
insert
(
"class"
,(
void
*
)
8
);
compoundKeywordDict
.
insert
(
"struct"
,(
void
*
)
8
);
compoundKeywordDict
.
insert
(
"union"
,(
void
*
)
8
);
...
...
@@ -5134,6 +5256,7 @@ int main(int argc,char **argv)
msg
(
"Building class list...
\n
"
);
buildClassList
(
root
);
findUsingDeclarations
(
root
);
msg
(
"Building example list...
\n
"
);
buildExampleList
(
root
);
...
...
src/entry.h
View file @
832e08dc
...
...
@@ -141,7 +141,8 @@ class Entry
GROUPDOC_SEC
=
0x01000000
,
USINGDIR_SEC
=
0x01100000
,
MAINPAGEDOC_SEC
=
0x01200000
,
MEMBERGRP_SEC
=
0x01300000
MEMBERGRP_SEC
=
0x01300000
,
USINGDECL_SEC
=
0x01400000
};
Entry
();
...
...
src/filedef.cpp
View file @
832e08dc
...
...
@@ -50,7 +50,8 @@ FileDef::FileDef(const char *p,const char *nm,const char *ref)
namespaceDict
=
new
NamespaceDict
(
7
);
srcDefDict
=
0
;
srcAnchorDict
=
0
;
usingList
=
0
;
usingDirList
=
0
;
usingDeclList
=
0
;
isSource
=
FALSE
;
docname
=
nm
;
if
(
Config
::
fullPathNameFlag
)
...
...
@@ -72,7 +73,8 @@ FileDef::~FileDef()
delete
namespaceDict
;
delete
srcDefDict
;
delete
srcAnchorDict
;
delete
usingList
;
delete
usingDirList
;
delete
usingDeclList
;
delete
memberGroupList
;
delete
memberGroupDict
;
}
...
...
@@ -189,7 +191,7 @@ void FileDef::writeDocumentation(OutputList &ol)
DotInclDepGraph
incDepGraph
(
this
);
if
(
!
incDepGraph
.
isTrivial
())
{
ol
.
disable
AllBut
(
OutputGenerator
::
Html
);
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
newParagraph
();
ol
.
startInclDepGraph
();
parseText
(
ol
,
theTranslator
->
trInclDepGraph
(
name
()));
...
...
@@ -287,7 +289,7 @@ void FileDef::writeDocumentation(OutputList &ol)
//if (latexOn) ol.disable(OutputGenerator::Latex);
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
disable
(
OutputGenerator
::
RTF
);
ol
.
writeAnchor
(
"_details"
);
ol
.
writeAnchor
(
0
,
"_details"
);
//if (latexOn) ol.enable(OutputGenerator::Latex);
ol
.
popGeneratorState
();
ol
.
startGroupHeader
();
...
...
@@ -533,11 +535,20 @@ QCString FileDef::getSourceAnchor(int lineNr)
void
FileDef
::
addUsingDirective
(
NamespaceDef
*
nd
)
{
if
(
usingList
==
0
)
if
(
usingDirList
==
0
)
{
usingDirList
=
new
NamespaceList
;
}
usingDirList
->
append
(
nd
);
}
void
FileDef
::
addUsingDeclaration
(
ClassDef
*
cd
)
{
if
(
usingDeclList
==
0
)
{
using
List
=
new
Namespace
List
;
using
DeclList
=
new
Class
List
;
}
using
List
->
append
(
n
d
);
using
DeclList
->
append
(
c
d
);
}
void
FileDef
::
addIncludeDependency
(
FileDef
*
fd
,
const
char
*
incName
,
bool
local
)
...
...
src/filedef.h
View file @
832e08dc
...
...
@@ -117,7 +117,9 @@ class FileDef : public Definition
void
computeAnchors
();
void
addUsingDirective
(
NamespaceDef
*
nd
);
NamespaceList
*
getUsedNamespaces
()
const
{
return
usingList
;
}
NamespaceList
*
getUsedNamespaces
()
const
{
return
usingDirList
;
}
void
addUsingDeclaration
(
ClassDef
*
cd
);
ClassList
*
getUsedClasses
()
const
{
return
usingDeclList
;
}
void
setGenerateSource
(
bool
b
)
{
isSource
=
b
;
}
bool
generateSource
()
const
{
return
isSource
;
}
...
...
@@ -142,7 +144,8 @@ class FileDef : public Definition
QList
<
IncludeInfo
>
*
includeList
;
NamespaceDict
*
namespaceDict
;
NamespaceList
*
namespaceList
;
NamespaceList
*
usingList
;
NamespaceList
*
usingDirList
;
ClassList
*
usingDeclList
;
//DefineList *defineList;
QCString
path
;
QCString
filepath
;
...
...
src/filename.cpp
View file @
832e08dc
...
...
@@ -38,7 +38,7 @@ FileName::~FileName()
void
FileName
::
generateDiskNames
()
{
QCString
commonPrefix
;
//
QCString commonPrefix;
FileDef
*
fd
=
first
();
int
count
=
0
;
while
(
fd
)
{
if
(
!
fd
->
isReference
())
count
++
;
fd
=
next
();
}
...
...
src/groupdef.cpp
View file @
832e08dc
...
...
@@ -280,7 +280,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
disable
(
OutputGenerator
::
RTF
);
ol
.
writeAnchor
(
"_details"
);
ol
.
writeAnchor
(
0
,
"_details"
);
ol
.
popGeneratorState
();
ol
.
startGroupHeader
();
parseText
(
ol
,
theTranslator
->
trDetailedDescription
());
...
...
src/htmlgen.cpp
View file @
832e08dc
...
...
@@ -173,7 +173,7 @@ void HtmlGenerator::endFile()
void
HtmlGenerator
::
startProjectNumber
()
{
t
<<
"<h3 align=
center
>"
;
t
<<
"<h3 align=
\"
center
\"
>"
;
}
void
HtmlGenerator
::
endProjectNumber
()
...
...
@@ -230,12 +230,11 @@ void HtmlGenerator::writeStyleInfo(int part)
void
HtmlGenerator
::
startDoxyAnchor
(
const
char
*
,
const
char
*
,
const
char
*
anchor
,
const
char
*
name
)
{
t
<<
"<a name=
\"
"
<<
anchor
<<
"
\"
doxytag=
\"
"
<<
name
<<
"
\"
>"
;
t
<<
"<a name=
\"
"
<<
anchor
<<
"
\"
doxytag=
\"
"
<<
name
<<
"
\"
>
</a>
"
;
}
void
HtmlGenerator
::
endDoxyAnchor
()
{
t
<<
"</a>"
<<
endl
;
}
void
HtmlGenerator
::
newParagraph
()
...
...
@@ -752,10 +751,10 @@ void HtmlGenerator::startMemberDoc(const char *,const char *,const char *,const
{
DBG_HTML
(
t
<<
"<!-- startMemberDoc -->"
<<
endl
;)
t
<<
"<p>"
<<
endl
;
t
<<
"<table width=
100% cellpadding=2 cellspacing=0 border=0
>"
<<
endl
;
t
<<
"<table width=
\"
100%
\"
cellpadding=
\"
2
\"
cellspacing=
\"
0
\"
border=
\"
0
\"
>"
<<
endl
;
t
<<
" <tr>"
<<
endl
;
t
<<
" <td class=
\"
md
\"
><b>"
<<
endl
;
t
<<
" <table cellspadding=
0 cellspacing=0 border=0
>"
<<
endl
;
t
<<
" <table cellspadding=
\"
0
\"
cellspacing=
\"
0
\"
border=
\"
0
\"
>"
<<
endl
;
}
void
HtmlGenerator
::
startMemberDocPrefixItem
()
...
...
@@ -837,7 +836,7 @@ void HtmlGenerator::startDotGraph()
void
HtmlGenerator
::
endDotGraph
(
DotClassGraph
&
g
)
{
g
.
writeGraph
(
t
,
Config
::
htmlOutputDir
);
g
.
writeGraph
(
t
,
GIF
,
Config
::
htmlOutputDir
);
}
void
HtmlGenerator
::
startInclDepGraph
()
...
...
@@ -846,7 +845,7 @@ void HtmlGenerator::startInclDepGraph()
void
HtmlGenerator
::
endInclDepGraph
(
DotInclDepGraph
&
g
)
{
g
.
writeGraph
(
t
,
Config
::
htmlOutputDir
);
g
.
writeGraph
(
t
,
GIF
,
Config
::
htmlOutputDir
);
}
void
HtmlGenerator
::
writeGraphicalHierarchy
(
DotGfxHierarchyTable
&
g
)
...
...
@@ -865,7 +864,7 @@ void HtmlGenerator::startMemberGroupHeader()
//t << " <td class=\"groupLine\"><img src=\"null.gif\" width=1></td>" << endl;
//t << " <td><div class=\"groupHeader\"> ";
t
<<
"<tr><td colspan=
2
><div class=
\"
groupHeader
\"
>"
;
t
<<
"<tr><td colspan=
\"
2
\"
><div class=
\"
groupHeader
\"
>"
;
}
void
HtmlGenerator
::
endMemberGroupHeader
()
...
...
@@ -885,7 +884,7 @@ void HtmlGenerator::endMemberGroupHeader()
void
HtmlGenerator
::
startMemberGroupDocs
()
{
//t << "<tr><td colspan=2><img src=\"null.gif\" height=4></td></tr>" << endl;
t
<<
"<tr><td colspan=
2
><div class=
\"
groupText
\"
>"
;
t
<<
"<tr><td colspan=
\"
2
\"
><div class=
\"
groupText
\"
>"
;
}
void
HtmlGenerator
::
endMemberGroupDocs
()
...
...
src/htmlgen.h
View file @
832e08dc
...
...
@@ -111,7 +111,7 @@ class HtmlGenerator : public OutputGenerator
void
endMemberDescription
();
void
writeRuler
()
{
t
<<
"<hr>"
;
}
void
writeAnchor
(
const
char
*
name
)
void
writeAnchor
(
const
char
*
,
const
char
*
name
)
{
t
<<
"<a name=
\"
"
<<
name
<<
"
\"
></a>"
;
}
void
startCodeFragment
()
{
t
<<
"<div class=
\"
fragment
\"
><pre>"
;
}
void
endCodeFragment
()
{
t
<<
"</div></pre>"
;
}
// <- I know this is
...
...
@@ -142,8 +142,8 @@ class HtmlGenerator : public OutputGenerator
void
startDoxyAnchor
(
const
char
*
fName
,
const
char
*
clName
,
const
char
*
anchor
,
const
char
*
name
);
void
endDoxyAnchor
();
void
startCodeAnchor
(
const
char
*
label
)
{
t
<<
"<a name=
\"
"
<<
label
<<
"
\"
>"
;
}
void
endCodeAnchor
()
{
t
<<
"</a>"
;
}
void
startCodeAnchor
(
const
char
*
label
)
{
t
<<
"<a name=
\"
"
<<
label
<<
"
\"
>
</a>
"
;
}
void
endCodeAnchor
()
{
}
void
writeLatexSpacing
()
{}
//void writeLatexLabel(const char *,const char *) {}
void
writeStartAnnoItem
(
const
char
*
type
,
const
char
*
file
,
...
...
src/latexgen.cpp
View file @
832e08dc
...
...
@@ -27,6 +27,7 @@
#include "diagram.h"
#include "language.h"
#include "version.h"
#include "dot.h"
static
QCString
filterTitle
(
const
char
*
s
)
{
...
...
@@ -549,7 +550,7 @@ void LatexGenerator::writeStyleInfo(int part)
{
case
0
:
{
QCString
pname
=
Config
::
projectName
.
stripWhiteSpace
();
//
QCString pname=Config::projectName.stripWhiteSpace();
startPlainFile
(
"doxygen.sty"
);
t
<<
"
\\
NeedsTeXFormat{LaTeX2e}
\n
"
;
t
<<
"
\\
ProvidesPackage{doxygen}
\n
"
;
...
...
@@ -765,7 +766,8 @@ void LatexGenerator::writeObjectLink(const char *ref, const char *f,
{
t
<<
"
\\
hyperlink{"
;
if
(
f
)
t
<<
f
;
if
(
anchor
)
t
<<
"_"
<<
anchor
;
if
(
f
&&
anchor
)
t
<<
"_"
;
if
(
anchor
)
t
<<
anchor
;
t
<<
"}{"
;
docify
(
text
);
t
<<
"}"
;
...
...
@@ -910,6 +912,15 @@ void LatexGenerator::endDoxyAnchor()
}
}
void
LatexGenerator
::
writeAnchor
(
const
char
*
fName
,
const
char
*
name
)
{
t
<<
"
\\
label{"
<<
name
<<
"}"
<<
endl
;
if
(
fName
&&
Config
::
pdfHyperFlag
)
{
t
<<
"
\\
hypertarget{"
<<
fName
<<
"_"
<<
name
<<
"}{}"
<<
endl
;
}
}
//void LatexGenerator::writeLatexLabel(const char *clName,const char *anchor)
//{
...
...
@@ -939,6 +950,10 @@ void LatexGenerator::writeSection(const char *lab,const char *title,bool sub)
if
(
sub
)
t
<<
"subsection{"
;
else
t
<<
"section{"
;
docify
(
title
);
t
<<
"}
\\
label{"
<<
lab
<<
"}"
<<
endl
;
if
(
Config
::
pdfHyperFlag
)
{
t
<<
"
\\
hypertarget{"
<<
lab
<<
"}{}"
;
}
}
void
LatexGenerator
::
writeSectionRef
(
const
char
*
,
const
char
*
lab
,
...
...
@@ -955,6 +970,7 @@ void LatexGenerator::writeSectionRefItem(const char *,const char *lab,
t
<<
"}{
\\
ref{"
<<
lab
<<
"}}{}"
<<
endl
;
}
// TODO: remove this function
void
LatexGenerator
::
writeSectionRefAnchor
(
const
char
*
,
const
char
*
lab
,
const
char
*
title
)
{
...
...
@@ -1277,3 +1293,23 @@ void LatexGenerator::endMemberGroup(bool)
{
t
<<
"
\\
end{Indent}"
<<
endl
;
}
void
LatexGenerator
::
startDotGraph
()
{
}
void
LatexGenerator
::
endDotGraph
(
DotClassGraph
&
g
)
{
g
.
writeGraph
(
t
,
EPS
,
Config
::
latexOutputDir
);
}
void
LatexGenerator
::
startInclDepGraph
()
{
}
void
LatexGenerator
::
endInclDepGraph
(
DotInclDepGraph
&
g
)
{
g
.
writeGraph
(
t
,
EPS
,
Config
::
latexOutputDir
);
}
src/latexgen.h
View file @
832e08dc
...
...
@@ -105,7 +105,7 @@ class LatexGenerator : public OutputGenerator
void
insertMemberAlign
()
{}
void
writeRuler
()
{
t
<<
endl
<<
endl
;
/*t << "\\vspace{0.4cm}\\hrule\\vspace{0.2cm}" << endl; */
}
void
writeAnchor
(
const
char
*
name
)
{
t
<<
"
\\
label{"
<<
name
<<
"}"
<<
endl
;
}
void
writeAnchor
(
const
char
*
fileName
,
const
char
*
name
);
void
startCodeFragment
()
{
t
<<
"
\\
small
\\
begin{verbatim}"
;
}
void
endCodeFragment
()
{
t
<<
"
\\
end{verbatim}
\\
normalsize "
<<
endl
;
}
void
startCodeLine
()
{
col
=
0
;
}
...
...
@@ -211,10 +211,10 @@ class LatexGenerator : public OutputGenerator
//static void docifyStatic(QTextStream &t,const char *str);
void
startDotGraph
()
{}
void
endDotGraph
(
DotClassGraph
&
)
{}
void
startInclDepGraph
()
{}
void
endInclDepGraph
(
DotInclDepGraph
&
)
{}
void
startDotGraph
()
;
void
endDotGraph
(
DotClassGraph
&
)
;
void
startInclDepGraph
()
;
void
endInclDepGraph
(
DotInclDepGraph
&
)
;
void
writeGraphicalHierarchy
(
DotGfxHierarchyTable
&
)
{}
void
startTextBlock
(
bool
)
{}
...
...
src/mangen.h
View file @
832e08dc
...
...
@@ -103,7 +103,7 @@ class ManGenerator : public OutputGenerator
void
endMemberGroup
(
bool
);
void
writeRuler
()
{}
void
writeAnchor
(
const
char
*
)
{}
void
writeAnchor
(
const
char
*
,
const
char
*
)
{}
void
startCodeFragment
();
void
endCodeFragment
();
void
startCodeLine
()
{}
...
...
src/memberdef.cpp
View file @
832e08dc
...
...
@@ -250,7 +250,7 @@ MemberDef::MemberDef(const char *df,int dl,
membTAL
=
0
;
type
=
substituteClassNames
(
t
);
args
=
substituteClassNames
(
a
);
if
(
type
.
is
Null
())
decl
=
name
()
+
args
;
else
decl
=
type
+
" "
+
name
()
+
args
;
if
(
type
.
is
Empty
())
decl
=
name
()
+
args
;
else
decl
=
type
+
" "
+
name
()
+
args
;
declLine
=
0
;
memberGroup
=
0
;
virt
=
v
;
...
...
src/message.cpp
View file @
832e08dc
...
...
@@ -18,7 +18,7 @@
#include <stdarg.h>
#include <stdio.h>
#include "config.h"
#include
<qregexp.h>
#include
"util.h"
static
QCString
outputFormat
;
static
int
warnFormatOrder
;
// 1 = $file,$line,$text
...
...
@@ -62,11 +62,22 @@ void initWarningFormat()
{
warnFormatOrder
=
6
;
}
outputFormat
=
Config
::
warnFormat
.
replace
(
QRegExp
(
"
\\
$file"
),
"%s"
).
replace
(
QRegExp
(
"
\\
$text"
),
"%s"
).
replace
(
QRegExp
(
"
\\
$line"
),
"%d"
)
+
'\n'
;
outputFormat
=
substitute
(
substitute
(
substitute
(
Config
::
warnFormat
,
"$file"
,
"%s"
),
"$text"
,
"%s"
),
"$line"
,
"%d"
)
+
'\n'
;
// replace(QRegExp("\\$file"),"%s").
// replace(QRegExp("\\$text"),"%s").
// replace(QRegExp("\\$line"),"%d")+
// '\n';
}
...
...
src/namespacedef.cpp
View file @
832e08dc
...
...
@@ -35,7 +35,8 @@ NamespaceDef::NamespaceDef(const char *df,int dl,
classList
=
new
ClassList
;
classDict
=
new
ClassDict
(
1009
);
//memList = new MemberList;
usingList
=
0
;
usingDirList
=
0
;
usingDeclList
=
0
;
setReference
(
ref
);
memberGroupList
=
new
MemberGroupList
;
memberGroupList
->
setAutoDelete
(
TRUE
);
...
...
@@ -48,7 +49,8 @@ NamespaceDef::~NamespaceDef()
{
delete
classList
;
delete
classDict
;
delete
usingList
;
delete
usingDirList
;
delete
usingDeclList
;
delete
memberGroupList
;
delete
memberGroupDict
;
}
...
...
@@ -182,7 +184,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
//bool latexOn = ol.isEnabled(OutputGenerator::Latex);
//if (latexOn) ol.disable(OutputGenerator::Latex);
ol
.
writeAnchor
(
"_details"
);
ol
.
writeAnchor
(
0
,
"_details"
);
//if (latexOn) ol.enable(OutputGenerator::Latex);
ol
.
popGeneratorState
();
ol
.
startGroupHeader
();
...
...
@@ -293,9 +295,18 @@ int NamespaceDef::countMembers()
void
NamespaceDef
::
addUsingDirective
(
NamespaceDef
*
nd
)
{
if
(
usingList
==
0
)
if
(
using
Dir
List
==
0
)
{
usingList
=
new
NamespaceList
;
using
Dir
List
=
new
NamespaceList
;
}
usingList
->
append
(
nd
);
usingDirList
->
append
(
nd
);
}
void
NamespaceDef
::
addUsingDeclaration
(
ClassDef
*
cd
)
{
if
(
usingDeclList
==
0
)
{
usingDeclList
=
new
ClassList
;
}
usingDeclList
->
append
(
cd
);
}
src/namespacedef.h
View file @
832e08dc
...
...
@@ -49,7 +49,11 @@ class NamespaceDef : public Definition
void
computeAnchors
();
int
countMembers
();
void
addUsingDirective
(
NamespaceDef
*
nd
);
NamespaceList
*
getUsedNamespaces
()
const
{
return
usingList
;
}
NamespaceList
*
getUsedNamespaces
()
const
{
return
usingDirList
;
}
void
addUsingDeclaration
(
ClassDef
*
cd
);
ClassList
*
getUsedClasses
()
const
{
return
usingDeclList
;
}
//const char *getReference() { return reference; }
//bool isVisible()
//{
...
...
@@ -81,7 +85,8 @@ class NamespaceDef : public Definition
QStrList
files
;
ClassList
*
classList
;
ClassDict
*
classDict
;
NamespaceList
*
usingList
;
NamespaceList
*
usingDirList
;
ClassList
*
usingDeclList
;
MemberList
allMemberList
;
MemberList
defineMembers
;
...
...
src/outputgen.h
View file @
832e08dc
...
...
@@ -112,7 +112,7 @@ class OutputGenerator
virtual
void
insertMemberAlign
()
=
0
;
virtual
void
writeRuler
()
=
0
;
virtual
void
writeAnchor
(
const
char
*
name
)
=
0
;
virtual
void
writeAnchor
(
const
char
*
fileName
,
const
char
*
name
)
=
0
;
virtual
void
startCodeFragment
()
=
0
;
virtual
void
endCodeFragment
()
=
0
;
virtual
void
startCodeLine
()
=
0
;
...
...
src/outputlist.h
View file @
832e08dc
...
...
@@ -180,8 +180,8 @@ class OutputList
{
forall
(
&
OutputGenerator
::
insertMemberAlign
);
}
void
writeRuler
()
{
forall
(
&
OutputGenerator
::
writeRuler
);
}
void
writeAnchor
(
const
char
*
name
)
{
forall
(
&
OutputGenerator
::
writeAnchor
,
name
);
}
void
writeAnchor
(
const
char
*
fileName
,
const
char
*
name
)
{
forall
(
&
OutputGenerator
::
writeAnchor
,
fileName
,
name
);
}
void
startCodeFragment
()
{
forall
(
&
OutputGenerator
::
startCodeFragment
);
}
void
endCodeFragment
()
...
...
src/pre.l
View file @
832e08dc
...
...
@@ -35,6 +35,7 @@
#include <qregexp.h>
#include <qfileinfo.h>
#include "pre.h"
#include "constexp.h"
#include "define.h"
#include "doxygen.h"
...
...
@@ -1459,7 +1460,7 @@ BN [ \t\r\n]
if (!g_quoteArg) g_defText+=' ';
g_defText+='@';
QCString numStr;
numStr.s
etNum(
*n);
numStr.s
printf("%d",
*n);
g_defText+=numStr;
if (!g_quoteArg) g_defText+=' ';
}
...
...
src/rtfgen.cpp
View file @
832e08dc
...
...
@@ -358,7 +358,7 @@ void RTFGenerator::endProjectNumber()
void
RTFGenerator
::
startIndexSection
(
IndexSections
is
)
{
QCString
paperName
;
//
QCString paperName;
m_listLevel
=
0
;
...
...
@@ -1148,14 +1148,16 @@ void RTFGenerator::endTitleHead(const char *fileName,const char *name)
// make an index entry
addToIndex
(
name
,
NULL
);
// make a bookmark for referencing
writeAnchor
(
name
);
if
(
fileName
)
{
// doxygen expects different anchors for pdf and if "FULL PATHS"
if
(
strcmp
(
name
,
fileName
)
!=
0
)
writeAnchor
(
fileName
);
writeAnchor
(
fileName
,
0
);
}
else
{
// make a bookmark for referencing
writeAnchor
(
0
,
name
);
}
}
}
...
...
@@ -1408,7 +1410,7 @@ void RTFGenerator::writeSection(const char *lab,const char *title,bool sub)
newParagraph
();
// make bookmark
writeAnchor
(
lab
);
writeAnchor
(
0
,
lab
);
t
<<
"}"
;
}
...
...
@@ -1547,9 +1549,13 @@ void RTFGenerator::endMemberItem(bool)
newParagraph
();
}
void
RTFGenerator
::
writeAnchor
(
const
char
*
name
)
void
RTFGenerator
::
writeAnchor
(
const
char
*
fileName
,
const
char
*
name
)
{
t
<<
"{
\\
bkmkstart "
<<
formatBmkStr
(
name
)
<<
"}"
<<
endl
;
t
<<
"{
\\
bkmkstart "
;
if
(
fileName
)
t
<<
formatBmkStr
(
fileName
);
if
(
fileName
&&
name
)
t
<<
"_"
;
if
(
name
)
t
<<
formatBmkStr
(
name
);
t
<<
"}"
<<
endl
;
t
<<
"{
\\
bkmkend "
<<
formatBmkStr
(
name
)
<<
"}"
<<
endl
;
}
...
...
@@ -1936,7 +1942,7 @@ void RTFGenerator::endDotGraph(DotClassGraph &g)
newParagraph
();
t
<<
"{
\\
comment This would be an image map..."
<<
endl
;
g
.
writeGraph
(
t
,
Config
::
rtfOutputDir
);
g
.
writeGraph
(
t
,
GIF
,
Config
::
rtfOutputDir
);
t
<<
"}"
<<
endl
;
...
...
@@ -1958,11 +1964,11 @@ void RTFGenerator::endInclDepGraph(DotInclDepGraph &g)
newParagraph
();
t
<<
"{
\\
comment This would be an image map..."
<<
endl
;
g
.
writeGraph
(
t
,
Config
::
rtfOutputDir
);
g
.
writeGraph
(
t
,
GIF
,
Config
::
rtfOutputDir
);
t
<<
"}"
<<
endl
;
QCString
diskName
=
g
.
diskName
();
//
QCString diskName = g.diskName();
// display the file
t
<<
"{"
<<
endl
;
...
...
src/rtfgen.h
View file @
832e08dc
...
...
@@ -101,7 +101,7 @@ class RTFGenerator : public OutputGenerator
void
writeRuler
(){
RtfwriteRuler_thin
();};
void
writeAnchor
(
const
char
*
name
);
void
writeAnchor
(
const
char
*
fileName
,
const
char
*
name
);
void
startCodeFragment
();
void
endCodeFragment
();
void
startCodeLine
()
{
col
=
0
;
}
...
...
src/scanner.l
View file @
832e08dc
...
...
@@ -92,6 +92,9 @@ static int roundCount = 0 ;
static int curlyCount = 0 ;
static int squareCount = 0 ;
static int ifCount = 0 ;
static int todoAnchor = 0 ;
static int todoStartContext = 0;
static QCString todoString = 0;
static Entry* current_root = 0 ;
static Entry* global_root = 0 ;
static Entry* current = 0 ;
...
...
@@ -889,7 +892,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
SCOPEID {ID}({ID}*{BN}*"::"{BN}*)*({ID}?)
SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
SCOPEMASK {ID}?(("::"|"#")?(~)?{ID})+
URLMASK [a-z_A-Z0-9\~\:\?\@\#\.\-\+\/]+
URLMASK [a-z_A-Z0-9\~\:\?\@\#\.\-\+\/
\=
]+
NONTERM [\{\}\[\]\`\~\@\|\-\+\#\$\/\\\!\%\^\&\*()a-z_A-Z<>0-9]
WORD ({NONTERM}+([^\n\t ]*{NONTERM}+)?)|("\""[^\n\"]"\"")
ATTR ({B}+[^>\n]*)?
...
...
@@ -933,7 +936,7 @@ TR [tT][rR]
TT [tT][tT]
UL [uU][lL]
VAR [vV][aA][rR]
DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
DOCPARAM ([a-z_A-Z0-9:\
<\>\=\
.\-]+)|("\"".*"\"")
%option noyywrap
...
...
@@ -1067,6 +1070,7 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
%x DocHtmlImageName
%x DocLatexImageName
%x DocLatexImageWidth
%x TodoParam
%x SectionLabel
%x SectionTitle
%x SkipTemplate
...
...
@@ -1583,7 +1587,7 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
<DocParam>({DOCPARAM}{BN}*","{BN}*)*{DOCPARAM} {
outDoc->startDescTableTitle();
outDoc->startEmphasis();
outDoc->docify(
yytext
);
outDoc->docify(
substitute(yytext,"\"","")
);
outDoc->endEmphasis();
outDoc->endDescTableTitle();
outDoc->startDescTableData();
...
...
@@ -1616,7 +1620,8 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
SectionInfo *sec;
if ((sec=sectionDict[secName]))
{
outDoc->writeAnchor(sec->label);
//printf("writeAnchor %s_%s\n",sec->fileName.data(),sec->label.data());
outDoc->writeAnchor(sec->fileName,sec->label);
}
}
<DocScan>{CMD}"ref" {
...
...
@@ -1662,7 +1667,10 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
text=sec->title;
if (sec->type==SectionInfo::Anchor)
{
outDoc->writeSectionRefAnchor(sec->fileName,sec->label,text);
//outDoc->writeSectionRefAnchor(sec->fileName,sec->label,text);
outDoc->writeObjectLink(0,sec->fileName,sec->label,text);
//printf("Writing page ref `%s'\n",sec->label.data());
writePageRef(*outDoc,sec->label,0);
}
else
{
...
...
@@ -1693,7 +1701,10 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
{
if (sec->type==SectionInfo::Anchor)
{
outDoc->writeSectionRefAnchor(sec->fileName,sec->label,text);
//outDoc->writeSectionRefAnchor(sec->fileName,sec->label,text);
outDoc->writeObjectLink(0,sec->fileName,sec->label,text);
//printf("Writing page ref `%s'\n",sec->label.data());
writePageRef(*outDoc,sec->label,0);
}
else
{
...
...
@@ -2028,7 +2039,7 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
<DocScan>"<"{H3}{ATTR}">" { outDoc->startSubsubsection(); }
<DocScan>"</"{H3}{ATTR}">" { outDoc->endSubsubsection(); }
<DocHtmlLink>{NAME}{BN}*"="{BN}*("\""?) { BEGIN(DocHtmlAnchor); }
<DocHtmlAnchor>[a-z_A-Z0-9.\-\+\/]+ { outDoc->writeAnchor(yytext); }
<DocHtmlAnchor>[a-z_A-Z0-9.\-\+\/]+ { outDoc->writeAnchor(
0,
yytext); }
<DocHtmlLink>{HREF}{BN}*"="{BN}*("\""?) {
htmlUrl.resize(0);
htmlText.resize(0);
...
...
@@ -2434,7 +2445,21 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
BEGIN(Using);
}
<Using>"namespace"{BN}+ { lineCount(); BEGIN(UsingDirective); }
<Using>";" { BEGIN(FindMembers); }
<Using>{ID}{BN}*"::"{BN}*{ID}({BN}*"::"{BN}*{ID})* {
current->name=yytext;
current->fileName = yyFileName;
current->section=Entry::USINGDECL_SEC;
//printf("Found using declaration %s\n",yytext);
current_root->addSubEntry(current);
current = new Entry ;
current->protection = protection ;
current->sig = sig;
current->virt = virt;
current->stat = gstat;
current->slot = slot;
current->mGrpId = memberGroupId;
BEGIN(Using);
}
<UsingDirective>{SCOPENAME} { current->name=yytext;
current->fileName = yyFileName;
current->section=Entry::USINGDIR_SEC;
...
...
@@ -2449,6 +2474,7 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
current->mGrpId = memberGroupId;
BEGIN(Using);
}
<Using>";" { BEGIN(FindMembers); }
<FindMembers>{SCOPENAME}{BN}*"<>" { // guided template decl
QCString n=yytext;
addType( current );
...
...
@@ -3775,7 +3801,7 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
{
if (isTypedef)
{
QCString dest = extractName(current->name);
//
QCString dest = extractName(current->name);
typedefDict.insert(yytext,new QCString(current->name));
//current->extends->append(
// new BaseInfo(yytext,Public,Normal)
...
...
@@ -4171,6 +4197,50 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
memberGroupDocs.resize(0);
BEGIN(GroupHeader);
}
<LineDoc,Doc,JavaDoc,ClassDoc,PageDoc>{CMD}"todo"{B}+ {
todoStartContext = YY_START;
todoString.resize(0);
BEGIN(TodoParam);
}
<TodoParam>[^*/\n]+ {
todoString+=yytext;
}
<TodoParam>. {
todoString+=*yytext;
}
<TodoParam>"\n"|"*/" {
char anchorLabel[12];
sprintf(anchorLabel,"_todo%06d",todoAnchor++);
QCString todoItemNum;
todoItemNum.sprintf("%d",todoAnchor);
sectionType=SectionInfo::Anchor;
sectionLabel=anchorLabel;
addSection();
current->doc += "\\anchor "+sectionLabel+"\n";
current->doc += "<p><b>\\link todo ";
current->doc += theTranslator->trTodo();
current->doc += ":\\endlink </b>";
current->doc += todoString + "<p>";
Entry *page = new Entry;
page->section = Entry::PAGEDOC_SEC;
page->fileName = yyFileName;
page->startLine = yyLineNr;
page->name = "todo";
page->args = theTranslator->trTodoList();
page->doc += "\\ref ";
page->doc += anchorLabel;
page->doc += " \""+todoItemNum+"\"\n"+todoString+"<p>";
global_root->addSubEntry(page);
if (*yytext=='*')
{
unput('/');unput('*');
}
else
{
unput('\n');
}
BEGIN(todoStartContext);
}
<ExampleDocArg1>{FILE} {
current->name = stripQuotes(yytext);
BEGIN( ExampleDoc );
...
...
src/translator.h
View file @
832e08dc
...
...
@@ -863,9 +863,19 @@ class Translator
}
//////////////////////////////////////////////////////////////////////////
// new since 1.1.
1
// new since 1.1.
3
//////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a todo item */
virtual
QCString
trTodo
()
{
return
"Todo"
;
}
/*! Used as the header of the todo list */
virtual
QCString
trTodoList
()
{
return
"Todo List"
;
}
};
#endif
src/util.cpp
View file @
832e08dc
...
...
@@ -1070,8 +1070,8 @@ bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl,
// (assuming a using statement was used)
trimNamespaceScope
(
srcAType
,
dstAType
);
QCString
srcScope
;
QCString
dstScope
;
//
QCString srcScope;
//
QCString dstScope;
// strip redundant scope specifiers
if
(
!
className
.
isEmpty
())
...
...
@@ -1400,7 +1400,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
QCString
className
=
scopeName
.
left
(
scopeOffset
);
if
(
!
className
.
isEmpty
()
&&
!
mScope
.
isEmpty
())
{
className
.
append
(
"::"
+
mScope
)
;
className
+=
"::"
+
mScope
;
}
else
if
(
!
mScope
.
isEmpty
())
{
...
...
@@ -1507,7 +1507,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
QCString
namespaceName
=
scopeName
.
left
(
scopeOffset
);
if
(
!
namespaceName
.
isEmpty
()
&&
!
mScope
.
isEmpty
())
{
namespaceName
.
append
(
"::"
+
mScope
)
;
namespaceName
+=
"::"
+
mScope
;
}
else
if
(
!
mScope
.
isEmpty
())
{
...
...
@@ -2247,7 +2247,7 @@ void extractNamespaceName(const QCString &scopeName,
QCString
&
className
,
QCString
&
namespaceName
)
{
QCString
clName
=
scopeName
.
copy
();
QCString
nsName
;
//
QCString nsName;
if
(
!
clName
.
isEmpty
()
&&
namespaceDict
[
clName
]
&&
getClass
(
clName
)
==
0
)
{
// the whole name is a namespace (and not a class)
namespaceName
=
clName
.
copy
();
...
...
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