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
2999d273
Commit
2999d273
authored
May 20, 2002
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.2.16
parent
bcf2f33d
Changes
25
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
217 additions
and
100 deletions
+217
-100
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
Doxyfile
doc/Doxyfile
+1
-0
Makefile.latex
doc/Makefile.latex
+8
-8
config.doc
doc/config.doc
+9
-0
docblocks.doc
doc/docblocks.doc
+21
-21
doxygen_manual.tex
doc/doxygen_manual.tex
+3
-2
faq.doc
doc/faq.doc
+4
-1
install.doc
doc/install.doc
+4
-5
language.doc
doc/language.doc
+1
-1
preprocessing.doc
doc/preprocessing.doc
+8
-3
trouble.doc
doc/trouble.doc
+1
-1
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
classdef.cpp
src/classdef.cpp
+2
-2
code.l
src/code.l
+6
-1
commentcnv.l
src/commentcnv.l
+29
-6
debug.cpp
src/debug.cpp
+2
-0
debug.h
src/debug.h
+2
-1
doxygen.cpp
src/doxygen.cpp
+38
-16
latexgen.cpp
src/latexgen.cpp
+4
-0
pre.l
src/pre.l
+7
-10
scanner.l
src/scanner.l
+14
-11
util.cpp
src/util.cpp
+36
-2
xmlgen.cpp
src/xmlgen.cpp
+11
-3
No files found.
INSTALL
View file @
2999d273
DOXYGEN Version 1.2.1
5-20020512
DOXYGEN Version 1.2.1
6
Please read the installation section of the manual for instructions.
--------
Dimitri van Heesch (
12
May 2002)
Dimitri van Heesch (
20
May 2002)
README
View file @
2999d273
DOXYGEN Version 1.2.1
5_20020512
DOXYGEN Version 1.2.1
6
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
May 2002)
Dimitri van Heesch (dimitri@stack.nl) (
20
May 2002)
VERSION
View file @
2999d273
1.2.1
5-20020512
1.2.1
6
doc/Doxyfile
View file @
2999d273
...
...
@@ -51,3 +51,4 @@ DOC_ABSPATH =
BIN_ABSPATH = /usr/local/bin/
EXT_DOC_PATHS =
PDF_HYPERLINKS = YES
USE_PDFLATEX = YES
doc/Makefile.latex
View file @
2999d273
...
...
@@ -14,18 +14,18 @@
all
:
doxygen_manual.pdf
doxygen_manual.pdf
:
doxygen_manual.ps
ps2pdf doxygen_manual.ps doxygen_manual.pdf
#
doxygen_manual.pdf: doxygen_manual.ps
#
ps2pdf doxygen_manual.ps doxygen_manual.pdf
doxygen_manual.ps
:
doxygen_manual.dvi
dvips
-o
doxygen_manual.ps doxygen_manual.dvi
#
doxygen_manual.ps: doxygen_manual.dvi
#
dvips -o doxygen_manual.ps doxygen_manual.dvi
doxygen_manual.
dvi
:
doxygen_manual.tex doxygen.sty
doxygen_manual.
pdf
:
doxygen_manual.tex doxygen.sty
echo
"Running latex..."
latex doxygen_manual.tex
pdf
latex doxygen_manual.tex
echo
"Running makeindex..."
makeindex doxygen_manual.idx
echo
"Rerunning latex...."
latex doxygen_manual.tex
pdf
latex doxygen_manual.tex
clean
:
rm
-f
*
.ps
*
.dvi
*
.aux
*
.toc
*
.idx
*
.ind
*
.ilg
*
.log
rm
-f
*
.ps
*
.dvi
*
.aux
*
.toc
*
.idx
*
.ind
*
.ilg
*
.log
*
.pdf
doc/config.doc
View file @
2999d273
...
...
@@ -79,6 +79,7 @@ followed by the descriptions of the tags grouped by category.
<
li
>
\
refitem
cfg_cols_in_alpha_index
COLS_IN_ALPHA_INDEX
<
li
>
\
refitem
cfg_compact_latex
COMPACT_LATEX
<
li
>
\
refitem
cfg_compact_rtf
COMPACT_RTF
<
li
>
\
refitem
cfg_details_at_top
DETAILS_AT_TOP
<
li
>
\
refitem
cfg_disable_index
DISABLE_INDEX
<
li
>
\
refitem
cfg_distribute_group_doc
DISTRIBUTE_GROUP_DOC
<
li
>
\
refitem
cfg_doc_abspath
DOC_ABSPATH
...
...
@@ -400,6 +401,14 @@ followed by the descriptions of the tags grouped by category.
comment as the brief description. If set to NO (the default), the
Javadoc-style will behave just like the Qt-style comments.
\anchor cfg_details_at_top
<dt>\c DETAILS_AT_TOP <dd>
\addindex DETAILS_AT_TOP
If the DETAILS_AT_TOP tag is set to YES then Doxygen
will output the detailed description near the top, like JavaDoc.
If set to NO, the detailed description appears after the member
documentation.
\anchor cfg_inherit_docs
<dt>\c INHERIT_DOCS <dd>
\addindex INHERIT_DOCS
...
...
doc/docblocks.doc
View file @
2999d273
...
...
@@ -63,40 +63,32 @@ In both cases the intermediate *'s are optional, so
is also valid.
<li> A third alternative is to use a block of at least two C++ comment
lines, where
the first
starts with an additional slash or an
lines, where
each line
starts with an additional slash or an
exclamation mark. Here are examples of the two cases:
\verbatim
///
// ... text ...
//
//
/
... text ...
//
/
\endverbatim
or
\verbatim
//!
//
... text ...
//
//
!
... text ...
//
!
\endverbatim
<li>
One could also repeat the special markers for each line as shown in
the following examples:
\verbatim
///
/// ... text ....
///
\endverbatim
or
Some people like to make their comment blocks more visible in the
documentation. For this purpose you can use the following:
\verbatim
//
!
//
!
... text ...
//
!
//
///////////////////////////////////////////////
//
/
... text ...
//
///////////////////////////////////////////////
\endverbatim
</ol>
...
...
@@ -117,7 +109,8 @@ Here is an example:
*/
\endverbatim
<li>If \ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" is set to YES in the configuration file,
<li>If \ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" is set to \c YES
in the configuration file,
then using JavaDoc style comment
blocks will automatically start a brief description which ends at the
first dot followed by a space or new line. Here is an example:
...
...
@@ -127,6 +120,11 @@ Here is an example:
* here.
*/
\endverbatim
The option has the same effect for multi-line special C++ comments:
\verbatim
/// Brief description which ends at this dot. Details follow
/// here.
\endverbatim
<li>A third option is to use a special C++ style comment which does not
span more than one line. Here are two examples:
...
...
@@ -145,7 +143,9 @@ or
\endverbatim
Note the blank line in the last example, which is required to separate the
brief description from the block containing the detailed description.
brief description from the block containing the detailed description. The
\ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" should also be set to \c NO
for this case.
</ol>
...
...
@@ -215,7 +215,7 @@ implementer of the members more direct access to the documentation.
As a compromise the brief description could be placed before the
declaration and the detailed description before the member definition.
\subsection memberdoc
Documenting members afterwards
\subsection memberdoc
Putting documentation after members
If you want to document the members of a file, struct, union, class, or enum,
and you want to put the documentation for these members inside the compound,
...
...
doc/doxygen_manual.tex
View file @
2999d273
...
...
@@ -12,7 +12,7 @@
% Documents produced by Doxygen are derivative works derived from the
% input used in their production; they are not affected by this license.
\documentclass
[a4paper
,ps2pdf
]
{
article
}
\documentclass
[a4paper]
{
article
}
\usepackage
{
a4wide
}
\usepackage
{
makeidx
}
\usepackage
{
fancyhdr
}
...
...
@@ -23,7 +23,8 @@
\usepackage
{
multicol
}
\usepackage
{
times
}
\usepackage
{
alltt
}
\usepackage
[pagebackref=true,
\usepackage
[pdftex,
pagebackref=true,
colorlinks=true,
linkcolor=blue
]
{
hyperref
}
...
...
doc/faq.doc
View file @
2999d273
...
...
@@ -195,7 +195,10 @@ more than 16K input character in one go. I've seen this happening
on a very large generated file (>16K lines), where the built-in preprocessor
converted it into an empty file (with >16K of newlines). Another case
where this might happen is if you have lines in your code with more than
16K characters.
16K characters.
If you have ran into such a case and want me to fix it, you
should send me a code fragment that triggers the message.
<li><b>How did doxygen get it's name?</b>
...
...
doc/install.doc
View file @
2999d273
...
...
@@ -212,15 +212,14 @@ Now install doxygen as described above.
<b>Bison problems</b>
Versions 1.31
and 1.32
of bison contain a "bug" that results in a
compiler error like this:
Versions 1.31
to 1.34
of bison contain a "bug" that results in a
compiler error
s
like this:
ce_parse.cpp:348: member `class CPPValue yyalloc::yyvs' with
constructor not allowed in union
There is no real solution to this problem, but it is discussed on the
bison mailing list. I recomment to use version 1.29 until the problems
with bison are resolved.
This problem has been solved in version 1.35 (versions before 1.31
will also work).
<b>Latex problems</b>
...
...
doc/language.doc
View file @
2999d273
...
...
@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time.
Currently (version 1.2.15-20020
430
), 26 languages
Currently (version 1.2.15-20020
512
), 26 languages
are supported (sorted alphabetically):
Brazilian Portuguese, Chinese, Chinesetraditional, Croatian, Czech,
Danish, Dutch, English, Finnish, French,
...
...
doc/preprocessing.doc
View file @
2999d273
...
...
@@ -28,7 +28,7 @@ So if you have the following code fragment
#define VERSION 200
#define CONST_STRING const char *
#if VERSION
>=
200
#if VERSION
<
200
static CONST_STRING version = "2.xx";
#else
static CONST_STRING version = "1.xx";
...
...
@@ -46,8 +46,13 @@ Then by default doxygen will feed the following to its parser:
You can disable all preprocessing by setting
\ref cfg_enable_preprocessing "ENABLE_PREPROCESSING" to \c
NO in the configuation file. In the case above doxygen will then reads
both statements!
NO in the configuation file. In the case above doxygen will then read
both statements, i.e:
\verbatim
static CONST_STRING version = "2.xx";
static CONST_STRING version = "1.xx";
\endverbatim
In case you want to expand the \c CONST_STRING macro, you should set the
\ref cfg_macro_expansion "MACRO_EXPANSION" tag in the config file
...
...
doc/trouble.doc
View file @
2999d273
...
...
@@ -104,6 +104,6 @@ If you send only a (vague) description of a bug, you are usually not very
helpful and will costs me much more time to figure out what you mean.
In the worst-case your bug report may even be completely ignored by me!
My e-mail address:
<a href="mailto:dimitri@stack.nl">dimitri@stack.nl</a>
My e-mail address:
dimitri@stack.nl
*/
packages/rpm/doxygen.spec
View file @
2999d273
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.2.1
5_20020512
Version: 1.2.1
6
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
...
...
src/classdef.cpp
View file @
2999d273
...
...
@@ -2318,8 +2318,8 @@ void ClassDef::addMembersToTemplateInstance(ClassDef *cd,const char *templSpec)
//printf("%s->setMemberClass(%p)\n",imd->name().data(),this);
imd
->
setMemberClass
(
this
);
imd
->
setTemplateMaster
(
md
);
//imd->setDocumentation(md->documentation
());
//imd->setBriefDescription(md->briefDescription
());
imd
->
setDocumentation
(
md
->
documentation
(),
md
->
docFile
(),
md
->
docLine
());
imd
->
setBriefDescription
(
md
->
briefDescription
(),
md
->
briefFile
(),
md
->
briefLine
());
imd
->
setMemberSpecifiers
(
md
->
getMemberSpecifiers
());
insertMember
(
imd
);
//printf("Adding member=%s %s%s to class %s templSpec %s\n",
...
...
src/code.l
View file @
2999d273
...
...
@@ -1701,7 +1701,12 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
g_memCallContext = YY_START;
BEGIN( MemberCall );
}
<SkipComment>"//" {
<SkipComment>"/*"("!"?)"*/" {
g_code->codify(yytext);
endFontClass();
BEGIN( g_lastCContext ) ;
}
<SkipComment>"//"|"/*" {
g_code->codify(yytext);
}
<SkipComment>[^*/\n]+ {
...
...
src/commentcnv.l
View file @
2999d273
...
...
@@ -23,6 +23,8 @@
#include <stdlib.h>
#include "bufstr.h"
#include "debug.h"
#include "message.h"
static BufStr *g_inBuf;
static BufStr *g_outBuf;
...
...
@@ -97,12 +99,17 @@ static int yyread(char *buf,int max_size)
<Scan>\n { /* new line */
copyToOutput(yytext,yyleng);
}
<Scan>("//!"|"///").*\n/[ \t]*"//" { /* start C++ style special comment block */
copyToOutput("/*!",3);
copyToOutput(yytext+3,yyleng-3);
<Scan>("//!"|"///").*\n/[ \t]*"//"[\/!][^\/] { /* start C++ style special comment block */
int i=3;
if (yytext[2]=='/')
{
while (i<yyleng && yytext[i]=='/') i++;
}
copyToOutput("/**",3);
copyToOutput(yytext+i,yyleng-i);
BEGIN(SComment);
}
<Scan>"//"
.*\n
{ /* one line C++ comment */
<Scan>"//"
[\/!].*\n
{ /* one line C++ comment */
copyToOutput(yytext,yyleng);
}
<Scan>"/*" { /* start of a C comment */
...
...
@@ -155,10 +162,22 @@ static int yyread(char *buf,int max_size)
copyToOutput(yytext,yyleng);
BEGIN(Scan);
}
<SComment>^[ \t]*"//".*/\n { /* second line of special comment */
<SComment>^[ \t]*"///"[\/]*\n {
replaceCommentMarker(yytext,yyleng);
}
<SComment>^[ \t]*"///"[^\/\n].*/\n {
replaceCommentMarker(yytext,yyleng);
}
<SComment>^[ \t]*"//!".*/\n { /* second line of special comment */
replaceCommentMarker(yytext,yyleng);
}
<SComment>\n[ \t]*"//".*/\n { /* other line of special comment */
<SComment>\n[ \t]*"///"[\/]*\n {
replaceCommentMarker(yytext,yyleng);
}
<SComment>\n[ \t]*"///"[^\/\n].*/\n {
replaceCommentMarker(yytext,yyleng);
}
<SComment>\n[ \t]*"//!".*/\n { /* other line of special comment */
replaceCommentMarker(yytext,yyleng);
}
<SComment>\n { /* end of special comment */
...
...
@@ -176,6 +195,10 @@ void convertCppComments(BufStr *inBuf,BufStr *outBuf)
g_inBufPos = 0;
BEGIN(Scan);
yylex();
if (Debug::isFlagSet(Debug::CommentCnv))
{
msg("-------------\n%s\n-------------\n",g_outBuf->data());
}
}
//----------------------------------------------------------------------------
...
...
src/debug.cpp
View file @
2999d273
...
...
@@ -48,6 +48,8 @@ static int labelToEnumValue(const char *l)
return
Debug
::
Preprocessor
;
else
if
(
label
==
"Classes"
)
return
Debug
::
Classes
;
else
if
(
label
==
"CommentCnv"
)
return
Debug
::
CommentCnv
;
else
return
0
;
}
...
...
src/debug.h
View file @
2999d273
...
...
@@ -27,7 +27,8 @@ class Debug
Functions
=
0x00000002
,
Variables
=
0x00000004
,
Preprocessor
=
0x00000008
,
Classes
=
0x00000010
Classes
=
0x00000010
,
CommentCnv
=
0x00000020
};
static
void
print
(
DebugMask
mask
,
int
prio
,
const
char
*
fmt
,...);
static
void
setFlag
(
const
char
*
label
);
...
...
src/doxygen.cpp
View file @
2999d273
...
...
@@ -2772,6 +2772,13 @@ static bool findClassRelation(
//}
//printf("\n");
QCString
biName
=
bi
->
name
;
bool
explicitGlobalScope
=
FALSE
;
if
(
biName
.
left
(
2
)
==
"::"
)
// explicit global scope
{
biName
=
biName
.
right
(
biName
.
length
()
-
2
);
explicitGlobalScope
=
TRUE
;
}
Entry
*
parentNode
=
root
->
parent
;
bool
lastParent
=
FALSE
;
...
...
@@ -2779,13 +2786,13 @@ static bool findClassRelation(
// (in case of nested classes)
{
QCString
scopeName
=
parentNode
?
parentNode
->
name
.
data
()
:
""
;
int
scopeOffset
=
scopeName
.
length
();
int
scopeOffset
=
explicitGlobalScope
?
0
:
scopeName
.
length
();
do
// try all parent scope prefixes, starting with the largest scope
{
//printf("scopePrefix=`%s' bi
->n
ame=`%s'\n",
// scopeName.left(scopeOffset).data(),bi
->n
ame.data());
//printf("scopePrefix=`%s' bi
N
ame=`%s'\n",
// scopeName.left(scopeOffset).data(),bi
N
ame.data());
QCString
baseClassName
=
bi
->
n
ame
;
QCString
baseClassName
=
bi
N
ame
;
if
(
scopeOffset
>
0
)
{
baseClassName
.
prepend
(
scopeName
.
left
(
scopeOffset
)
+
"::"
);
...
...
@@ -2794,7 +2801,7 @@ static bool findClassRelation(
(
removeRedundantWhiteSpace
(
baseClassName
));
bool
baseClassIsTypeDef
;
QCString
templSpec
;
ClassDef
*
baseClass
=
getResolvedClass
(
cd
,
baseClassName
,
&
baseClassIsTypeDef
,
&
templSpec
);
ClassDef
*
baseClass
=
getResolvedClass
(
explicitGlobalScope
?
0
:
cd
,
baseClassName
,
&
baseClassIsTypeDef
,
&
templSpec
);
//printf("baseClassName=%s baseClass=%p cd=%p\n",baseClassName.data(),baseClass,cd);
//printf(" root->name=`%s' baseClassName=`%s' baseClass=%s templSpec=%s\n",
// root->name.data(),
...
...
@@ -2807,7 +2814,7 @@ static bool findClassRelation(
// ) // Check for base class with the same name.
// // If found then look in the outer scope for a match
// // and prevent recursion.
if
(
!
isRecursiveBaseClass
(
root
->
name
,
baseClassName
))
if
(
!
isRecursiveBaseClass
(
root
->
name
,
baseClassName
)
||
explicitGlobalScope
)
{
Debug
::
print
(
Debug
::
Classes
,
0
,
" class relation %s inherited by %s found (%s and %s)
\n
"
,
...
...
@@ -2849,6 +2856,7 @@ static bool findClassRelation(
}
}
//printf("cd=%p baseClass=%p\n",cd,baseClass);
bool
found
=
baseClass
!=
0
&&
(
baseClass
!=
cd
||
mode
==
TemplateInstances
);
NamespaceDef
*
nd
=
cd
->
getNamespaceDef
();
if
(
!
found
&&
(
i
=
baseClassName
.
findRev
(
"::"
))
!=-
1
)
...
...
@@ -2887,7 +2895,7 @@ static bool findClassRelation(
ClassDef
*
ucd
;
for
(
cli
.
toFirst
();
(
ucd
=
cli
.
current
())
&&
!
found
;
++
cli
)
{
if
(
rightScopeMatch
(
ucd
->
name
(),
bi
->
n
ame
))
if
(
rightScopeMatch
(
ucd
->
name
(),
bi
N
ame
))
{
baseClass
=
ucd
;
found
=
TRUE
;
...
...
@@ -2921,7 +2929,7 @@ static bool findClassRelation(
ClassDef
*
ucd
;
for
(
cli
.
toFirst
();
(
ucd
=
cli
.
current
())
&&
!
found
;
++
cli
)
{
if
(
rightScopeMatch
(
ucd
->
name
(),
bi
->
n
ame
))
if
(
rightScopeMatch
(
ucd
->
name
(),
bi
N
ame
))
{
baseClass
=
ucd
;
found
=
TRUE
;
...
...
@@ -2939,7 +2947,7 @@ static bool findClassRelation(
ClassDef
*
ucd
;
for
(
cli
.
toFirst
();
(
ucd
=
cli
.
current
())
&&
!
found
;
++
cli
)
{
if
(
rightScopeMatch
(
ucd
->
name
(),
bi
->
n
ame
))
if
(
rightScopeMatch
(
ucd
->
name
(),
bi
N
ame
))
{
baseClass
=
ucd
;
found
=
TRUE
;
...
...
@@ -2949,10 +2957,10 @@ static bool findClassRelation(
}
}
}
bool
isATemplateArgument
=
templateNames
!=
0
&&
templateNames
->
find
(
bi
->
n
ame
)
!=
0
;
if
(
/*!isATemplateArgument &&*/
found
)
bool
isATemplateArgument
=
templateNames
!=
0
&&
templateNames
->
find
(
bi
N
ame
)
!=
0
;
if
(
found
)
{
Debug
::
print
(
Debug
::
Classes
,
0
,
" Documented class `%s' templSpec=%s
\n
"
,
bi
->
n
ame
.
data
(),
templSpec
.
data
());
Debug
::
print
(
Debug
::
Classes
,
0
,
" Documented class `%s' templSpec=%s
\n
"
,
bi
N
ame
.
data
(),
templSpec
.
data
());
// add base class to this class
// if templSpec is not empty then we should "instantiate"
...
...
@@ -2971,7 +2979,7 @@ static bool findClassRelation(
else
if
(
mode
==
DocumentedOnly
)
{
QCString
usedName
;
if
(
baseClassIsTypeDef
)
usedName
=
bi
->
n
ame
;
if
(
baseClassIsTypeDef
)
usedName
=
bi
N
ame
;
cd
->
insertBaseClass
(
baseClass
,
usedName
,
bi
->
prot
,
bi
->
virt
,
templSpec
);
// add this class as super class to the base class
baseClass
->
insertSubClass
(
cd
,
bi
->
prot
,
bi
->
virt
,
templSpec
);
...
...
@@ -2982,7 +2990,7 @@ static bool findClassRelation(
{
Debug
::
print
(
Debug
::
Classes
,
0
,
" New undocumented base class `%s' baseClassName=%s
\n
"
,
bi
->
n
ame
.
data
(),
baseClassName
.
data
()
bi
N
ame
.
data
(),
baseClassName
.
data
()
);
baseClass
=
0
;
if
(
isATemplateArgument
)
...
...
@@ -3004,7 +3012,7 @@ static bool findClassRelation(
if
(
isArtificial
)
baseClass
->
setClassIsArtificial
();
}
// add base class to this class
cd
->
insertBaseClass
(
baseClass
,
bi
->
n
ame
,
bi
->
prot
,
bi
->
virt
,
templSpec
);
cd
->
insertBaseClass
(
baseClass
,
bi
N
ame
,
bi
->
prot
,
bi
->
virt
,
templSpec
);
// add this class as super class to the base class
baseClass
->
insertSubClass
(
cd
,
bi
->
prot
,
bi
->
virt
,
templSpec
);
// the undocumented base was found in this file
...
...
@@ -3014,8 +3022,22 @@ static bool findClassRelation(
}
else
{
Debug
::
print
(
Debug
::
Classes
,
0
,
" Base class `%s' not found
\n
"
,
bi
->
name
.
data
());
Debug
::
print
(
Debug
::
Classes
,
0
,
" Base class `%s' not found
\n
"
,
biName
.
data
());
}
}
else
{
if
(
mode
!=
TemplateInstances
)
{
warn
(
root
->
fileName
,
root
->
startLine
,
"Detected potential recursive class relation "
"between class %s and base class %s!
\n
"
,
root
->
name
.
data
(),
baseClassName
.
data
()
);
}
// for mode==TemplateInstance this case is quite common and
// indicates a relation between a template class and a template
// instance with the same name.
}
if
(
scopeOffset
==
0
)
{
...
...
src/latexgen.cpp
View file @
2999d273
...
...
@@ -1757,7 +1757,10 @@ void LatexGenerator::startDotFile(const char *name,bool hasCaption)
+
baseName
;
writeDotGraphFromFile
(
name
,
outName
,
EPS
);
if
(
hasCaption
)
{
t
<<
"
\\
begin{figure}[H]"
<<
endl
;
t
<<
"
\\
begin{center}"
<<
endl
;
}
else
t
<<
"
\\
mbox{"
;
t
<<
"
\\
includegraphics"
;
...
...
@@ -1781,6 +1784,7 @@ void LatexGenerator::endDotFile(bool hasCaption)
if
(
hasCaption
)
{
t
<<
"}"
<<
endl
;
t
<<
"
\\
end{center}"
<<
endl
;
t
<<
"
\\
end{figure}"
<<
endl
;
}
}
...
...
src/pre.l
View file @
2999d273
...
...
@@ -1549,16 +1549,16 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
else // define is a guard => hide
{
//printf("Found a guard %s\n",yytext);
Define *def=
0
;
if (g_includeStack.isEmpty())
{
addDefine();
}
if (
(def=g_fileDefineDict->find(g_defName))==0)
Define *def=
g_fileDefineDict->find(g_defName)
;
//
if (g_includeStack.isEmpty())
//
{
//
addDefine();
//
}
if (
def==0) // new define name for this file
{
g_fileDefineDict->insert(g_defName,newDefine());
}
else
if (def)
// name already exists
else // name already exists
{
if (def->undef) // undefined name
{
...
...
@@ -1574,9 +1574,6 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
//printf("Error: define %s is defined more than once!\n",g_defName.data());
}
}
QCString tmp=(QCString)"#define "+g_defName;
outputArray(tmp.data(),tmp.length());
//outputChar('\n');
g_lastGuardName.resize(0);
BEGIN(Start);
}
...
...
src/scanner.l
View file @
2999d273
...
...
@@ -2652,18 +2652,20 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<BasesProt>{BN} { lineCount(); }
<BasesProt>. { unput(*yytext); BEGIN(Bases); }
<Bases>("::")?{BN}*({ID}{BN}*"::"{BN}*)*{ID} {
QCString bName = yytext;
bName = bName.stripWhiteSpace();
bool globalScope = bName.at(0)==':' && baseName.isEmpty();
if (!globalScope)
baseName += bName;
else
baseName += (bName.data()+2);
//QCString bName = yytext;
//bName = bName.stripWhiteSpace();
//bool globalScope = bName.at(0)==':' && baseName.isEmpty();
//if (!globalScope)
// baseName += bName;
//else
// baseName += (bName.data()+2);
baseName+=yytext;
current->args += ' ';
if (!globalScope)
current->args += bName;
else
current->args += (bName.data()+2);
//if (!globalScope)
// current->args += bName;
//else
// current->args += (bName.data()+2);
current->args += yytext;
}
<Bases>{BN}*{ID}("."{ID})* { // Java style class
QCString name = yytext;
...
...
@@ -4149,6 +4151,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<JavaDoc,LineDoc,ClassDocBrief,AfterDocBrief,AfterDocLine>"\\"[a-z_A-Z][a-z_A-Z0-9]*[\\] { // directory type of text
current->brief+=yytext;
}
<LineDoc,AfterDocLine,CopyArgCommentLine>{CMD}("brief"|"short") {}
<JavaDoc,LineDoc,ClassDocBrief,AfterDocBrief,AfterDocLine,CopyArgCommentLine>{CMD}[a-z_A-Z][a-z_A-Z0-9]* {
QCString *pValue=Doxygen::aliasDict[yytext+1];
if (pValue)
...
...
src/util.cpp
View file @
2999d273
...
...
@@ -2166,8 +2166,15 @@ bool getScopeDefs(const char *docScope,const char *scope,
//printf("getScopeDefs: docScope=`%s' scope=`%s'\n",docScope,scope);
if
(
scopeName
.
isEmpty
())
return
FALSE
;
bool
explicitGlobalScope
=
FALSE
;
if
(
scopeName
.
at
(
0
)
==
':'
&&
scopeName
.
at
(
1
)
==
':'
)
{
scopeName
=
scopeName
.
right
(
scopeName
.
length
()
-
2
);
explicitGlobalScope
=
TRUE
;
}
QCString
docScopeName
=
docScope
;
int
scopeOffset
=
docScopeName
.
length
();
int
scopeOffset
=
explicitGlobalScope
?
0
:
docScopeName
.
length
();
do
// for each possible docScope (from largest to and including empty)
{
...
...
@@ -2195,6 +2202,14 @@ bool getScopeDefs(const char *docScope,const char *scope,
return
FALSE
;
}
static
bool
isLowerCase
(
QCString
&
s
)
{
char
*
p
=
s
.
data
();
int
c
;
while
((
c
=*
p
++
))
if
(
!
islower
(
c
))
return
FALSE
;
return
TRUE
;
}
/*!
* generate a reference to a class, namespace or member.
* `scName' is the name of the scope that contains the documentation
...
...
@@ -2229,7 +2244,26 @@ bool generateRef(OutputDocInterface &od,const char *scName,
{
ClassDef
*
cd
=
0
;
NamespaceDef
*
nd
=
0
;
if
(
linkText
.
isEmpty
())
linkText
=
tmpName
;
if
(
linkText
.
isEmpty
())
{
linkText
=
tmpName
;
// strip :: prefix if present
if
(
linkText
.
at
(
0
)
==
':'
&&
linkText
.
at
(
1
)
==
':'
)
{
linkText
=
linkText
.
right
(
linkText
.
length
()
-
2
);
}
}
if
(
scopePos
==-
1
&&
isLowerCase
(
tsName
))
{
// link to lower case only name => do not try to autolink
od
.
docify
(
linkText
);
// text has been written, stop now.
return
FALSE
;
}
//printf("scName=%s tmpName=%s\n",scName,tmpName.data());
// check if this is a class or namespace reference
if
(
scName
!=
tmpName
&&
getScopeDefs
(
scName
,
name
,
cd
,
nd
))
{
...
...
src/xmlgen.cpp
View file @
2999d273
...
...
@@ -224,9 +224,12 @@ class XMLGenerator : public OutputDocInterface
void
docify
(
const
char
*
s
)
{
XML_DB
((
"(docify
\"
%s
\"
)
\n
"
,
s
));
startParMode
();
writeXMLString
(
m_t
,
s
);
if
(
m_outputEnabled
)
{
XML_DB
((
"(docify
\"
%s
\"
)
\n
"
,
s
));
startParMode
();
writeXMLString
(
m_t
,
s
);
}
}
void
writeChar
(
char
c
)
{
...
...
@@ -779,10 +782,12 @@ class XMLGenerator : public OutputDocInterface
void
startPageRef
()
{
XML_DB
((
"(startPageRef)
\n
"
));
m_outputEnabled
=
FALSE
;
}
void
endPageRef
(
const
char
*
,
const
char
*
)
{
XML_DB
((
"(endPageRef)
\n
"
));
m_outputEnabled
=
TRUE
;
}
void
writeLineNumber
(
const
char
*
extRef
,
const
char
*
compId
,
const
char
*
anchorId
,
int
l
)
...
...
@@ -886,6 +891,7 @@ class XMLGenerator : public OutputDocInterface
m_t
.
setDevice
(
&
m_b
);
m_t
.
setEncoding
(
QTextStream
::
Latin1
);
m_inParamList
=
FALSE
;
m_outputEnabled
=
TRUE
;
}
/*! copy constructor */
XMLGenerator
(
const
XMLGenerator
*
xg
)
...
...
@@ -902,6 +908,7 @@ class XMLGenerator : public OutputDocInterface
m_inParStack
=
xg
->
m_inParStack
;
m_inListStack
=
xg
->
m_inListStack
;
m_inParamList
=
xg
->
m_inParamList
;
m_outputEnabled
=
xg
->
m_outputEnabled
;
}
/*! destructor */
virtual
~
XMLGenerator
()
...
...
@@ -935,6 +942,7 @@ class XMLGenerator : public OutputDocInterface
ValStack
<
bool
>
m_inParStack
;
ValStack
<
bool
>
m_inListStack
;
bool
m_inParamList
;
bool
m_outputEnabled
;
friend
void
writeXMLCodeBlock
(
QTextStream
&
t
,
FileDef
*
fd
);
};
...
...
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