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
6b40e3de
Commit
6b40e3de
authored
Mar 04, 2001
by
dimitri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.2.5-20010304
parent
ef3faee6
Changes
17
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
101 additions
and
100 deletions
+101
-100
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
config.doc
doc/config.doc
+2
-2
preprocessing.doc
doc/preprocessing.doc
+3
-2
Makefile.in
examples/Makefile.in
+3
-3
Makefile.win.in
examples/Makefile.win.in
+0
-4
tag.cfg
examples/tag.cfg
+1
-1
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
code.l
src/code.l
+1
-1
doc.l
src/doc.l
+3
-0
doxygen.cpp
src/doxygen.cpp
+40
-52
htmlgen.h
src/htmlgen.h
+1
-7
memberdef.cpp
src/memberdef.cpp
+11
-11
memberdef.h
src/memberdef.h
+1
-1
scanner.l
src/scanner.l
+15
-9
tagreader.cpp
src/tagreader.cpp
+14
-1
No files found.
INSTALL
View file @
6b40e3de
DOXYGEN Version 1.2.5-20010
226
DOXYGEN Version 1.2.5-20010
304
Please read the installation section of the manual for instructions.
Please read the installation section of the manual for instructions.
--------
--------
Dimitri van Heesch (
26 February
2001)
Dimitri van Heesch (
04 March
2001)
README
View file @
6b40e3de
DOXYGEN Version 1.2.5-20010
226
DOXYGEN Version 1.2.5-20010
304
Please read INSTALL for compilation instructions.
Please read INSTALL for compilation instructions.
...
@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
...
@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Enjoy,
Dimitri van Heesch (
26 February
2001)
Dimitri van Heesch (
04 March
2001)
VERSION
View file @
6b40e3de
1.2.5-20010
226
1.2.5-20010
304
doc/config.doc
View file @
6b40e3de
...
@@ -94,7 +94,7 @@ followed by the descriptions of the tags grouped by category.
...
@@ -94,7 +94,7 @@ followed by the descriptions of the tags grouped by category.
<
li
>
\
refitem
cfg_example_patterns
EXAMPLE_PATTERNS
<
li
>
\
refitem
cfg_example_patterns
EXAMPLE_PATTERNS
<
li
>
\
refitem
cfg_exclude
EXCLUDE
<
li
>
\
refitem
cfg_exclude
EXCLUDE
<
li
>
\
refitem
cfg_exclude_patterns
EXCLUDE_PATTERNS
<
li
>
\
refitem
cfg_exclude_patterns
EXCLUDE_PATTERNS
<
li
>
\
refitem
cfg_expand_as_defined
EXPAND_AS_
PRE
DEFINED
<
li
>
\
refitem
cfg_expand_as_defined
EXPAND_AS_DEFINED
<
li
>
\
refitem
cfg_expand_only_predef
EXPAND_ONLY_PREDEF
<
li
>
\
refitem
cfg_expand_only_predef
EXPAND_ONLY_PREDEF
<
li
>
\
refitem
cfg_ext_doc_paths
EXT_DOC_PATHS
<
li
>
\
refitem
cfg_ext_doc_paths
EXT_DOC_PATHS
<
li
>
\
refitem
cfg_extra_packages
EXTRA_PACKAGES
<
li
>
\
refitem
cfg_extra_packages
EXTRA_PACKAGES
...
@@ -1006,7 +1006,7 @@ EXTRA_PACKAGES = times
...
@@ -1006,7 +1006,7 @@ EXTRA_PACKAGES = times
\
addindex
EXPAND_ONLY_PREDEF
\
addindex
EXPAND_ONLY_PREDEF
If
the
\
c
EXPAND_ONLY_PREDEF
and
\
c
MACRO_EXPANSION
tags
are
both
set
to
YES
If
the
\
c
EXPAND_ONLY_PREDEF
and
\
c
MACRO_EXPANSION
tags
are
both
set
to
YES
then
the
macro
expansion
is
limited
to
the
macros
specified
with
the
then
the
macro
expansion
is
limited
to
the
macros
specified
with
the
\
c
PREDEFINED
and
\
c
EXPAND_AS_
PRE
DEFINED
tags
.
\
c
PREDEFINED
and
\
c
EXPAND_AS_DEFINED
tags
.
\
anchor
cfg_search_includes
\
anchor
cfg_search_includes
<
dt
>\
c
SEARCH_INCLUDES
<
dd
>
<
dt
>\
c
SEARCH_INCLUDES
<
dd
>
...
...
doc/preprocessing.doc
View file @
6b40e3de
...
@@ -66,9 +66,10 @@ allows you to expand only those defines that you explicitly
...
@@ -66,9 +66,10 @@ allows you to expand only those defines that you explicitly
specify. For this you have to set the
specify. For this you have to set the
\ref cfg_expand_only_predef "EXPAND_ONLY_PREDEF" tag to \c YES
\ref cfg_expand_only_predef "EXPAND_ONLY_PREDEF" tag to \c YES
and specify the macro definitions after
and specify the macro definitions after
the \ref cfg_predefined "PREDEFINED" tag.
the \ref cfg_predefined "PREDEFINED" or
\ref cfg_expand_as_defined "EXPAND_AS_DEFINED" tag.
As an example, suppose you have the following obfusc
i
ated code fragment
As an example, suppose you have the following obfuscated code fragment
of an abstract base class called \c IUnknown:
of an abstract base class called \c IUnknown:
\verbatim
\verbatim
...
...
examples/Makefile.in
View file @
6b40e3de
...
@@ -77,10 +77,10 @@ structcmd/html/index.html: structcmd.h structcmd.cfg
...
@@ -77,10 +77,10 @@ structcmd/html/index.html: structcmd.h structcmd.cfg
autolink/html/index.html
:
autolink.cpp autolink.cfg
autolink/html/index.html
:
autolink.cpp autolink.cfg
$(DOXYGEN)
/bin/doxygen autolink.cfg
$(DOXYGEN)
/bin/doxygen autolink.cfg
tag/html/index.html
:
tag.cpp tag.cfg
tag/html/index.html
:
tag.cpp tag.cfg
example/html/index.html
$(DOXYGEN)
/bin/doxygen tag.cfg
$(DOXYGEN)
/bin/doxygen tag.cfg
sed
-e
"1,1s#perl#
$(PERL)
#g"
tag/html/installdox
>
tag/html/installdox.perl
#
sed -e "1,1s#perl#$(PERL)#g" tag/html/installdox >tag/html/installdox.perl
cd
tag/html
;
$(PERL)
installdox.perl
-lexample
.tag@../../example/html
#
cd tag/html ; $(PERL) installdox.perl -lexample.tag@../../example/html
restypedef/html/index.html
:
restypedef.cpp restypedef.cfg
restypedef/html/index.html
:
restypedef.cpp restypedef.cfg
$(DOXYGEN)
/bin/doxygen restypedef.cfg
$(DOXYGEN)
/bin/doxygen restypedef.cfg
...
...
examples/Makefile.win.in
View file @
6b40e3de
...
@@ -81,10 +81,6 @@ autolink/html/index.html: autolink.cpp autolink.cfg
...
@@ -81,10 +81,6 @@ autolink/html/index.html: autolink.cpp autolink.cfg
tag/html/index.html
:
tag.cpp tag.cfg
tag/html/index.html
:
tag.cpp tag.cfg
$(DOXYDIR)
\d
oxygen tag.cfg
$(DOXYDIR)
\d
oxygen tag.cfg
cd
tag
\h
tml
echo
perl installdox
-lexample
.tag@../../example/html
>
runperl.bat
runperl.bat
cd
..
\.
.
restypedef/html/index.html
:
restypedef.cpp restypedef.cfg
restypedef/html/index.html
:
restypedef.cpp restypedef.cfg
$(DOXYDIR)
\d
oxygen restypedef.cfg
$(DOXYDIR)
\d
oxygen restypedef.cfg
...
...
examples/tag.cfg
View file @
6b40e3de
...
@@ -5,7 +5,7 @@ GENERATE_MAN = NO
...
@@ -5,7 +5,7 @@ GENERATE_MAN = NO
GENERATE_RTF = NO
GENERATE_RTF = NO
CASE_SENSE_NAMES = NO
CASE_SENSE_NAMES = NO
INPUT = tag.cpp
INPUT = tag.cpp
TAGFILES = example.tag
TAGFILES = example.tag
=../../example/html
PERL_PATH = perl
PERL_PATH = perl
QUIET = YES
QUIET = YES
JAVADOC_AUTOBRIEF = YES
JAVADOC_AUTOBRIEF = YES
packages/rpm/doxygen.spec
View file @
6b40e3de
Name: doxygen
Name: doxygen
Version: 1.2.5-20010
226
Version: 1.2.5-20010
304
Summary: documentation system for C, C++ and IDL
Summary: documentation system for C, C++ and IDL
Release: 1
Release: 1
Source0: doxygen-%{version}.src.tar.gz
Source0: doxygen-%{version}.src.tar.gz
...
...
src/code.l
View file @
6b40e3de
...
@@ -1170,7 +1170,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
...
@@ -1170,7 +1170,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
<Body>[0-9]+ {
<Body>[0-9]+ {
g_code->codify(yytext);
g_code->codify(yytext);
}
}
<Body>[0-9]+[xX][0-9A-F]+ {
<Body>[0-9]+[xX][0-9A-F
a-f
]+ {
g_code->codify(yytext);
g_code->codify(yytext);
}
}
<MemberCall2,FuncCall>{KEYWORD}/([^a-z_A-Z0-9]) {
<MemberCall2,FuncCall>{KEYWORD}/([^a-z_A-Z0-9]) {
...
...
src/doc.l
View file @
6b40e3de
...
@@ -1786,6 +1786,9 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
...
@@ -1786,6 +1786,9 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
}
}
<DocScan>("http:"|"https:"|"ftp:"|"file:"){URLMASK} { outDoc->writeHtmlLink(yytext,yytext); }
<DocScan>("http:"|"https:"|"ftp:"|"file:"){URLMASK} { outDoc->writeHtmlLink(yytext,yytext); }
<DocScan>[a-zA-Z_0-9\.\-]+"@"[0-9a-z_A-Z\.\-]+ { outDoc->writeMailLink(yytext); }
<DocScan>[a-zA-Z_0-9\.\-]+"@"[0-9a-z_A-Z\.\-]+ { outDoc->writeMailLink(yytext); }
<DocScan>{FILESCHAR}*{FILEECHAR}+/".\\n" { // special exception that is otherwise matches by FILEMASK
generateRef(*outDoc,className,yytext,inSeeBlock);
}
<DocScan>{FILEMASK} {
<DocScan>{FILEMASK} {
generateFileRef(*outDoc,yytext);
generateFileRef(*outDoc,yytext);
}
}
...
...
src/doxygen.cpp
View file @
6b40e3de
...
@@ -425,7 +425,7 @@ static void buildFileList(Entry *root)
...
@@ -425,7 +425,7 @@ static void buildFileList(Entry *root)
{
{
if
(((
root
->
section
==
Entry
::
FILEDOC_SEC
)
||
if
(((
root
->
section
==
Entry
::
FILEDOC_SEC
)
||
((
root
->
section
&
Entry
::
FILE_MASK
)
&&
Config
::
extractAllFlag
))
&&
((
root
->
section
&
Entry
::
FILE_MASK
)
&&
Config
::
extractAllFlag
))
&&
!
root
->
name
.
isEmpty
()
!
root
->
name
.
isEmpty
()
&&
!
root
->
tagInfo
// skip any file coming from tag files
)
)
{
{
bool
ambig
;
bool
ambig
;
...
@@ -811,7 +811,7 @@ static void buildNamespaceList(Entry *root)
...
@@ -811,7 +811,7 @@ static void buildNamespaceList(Entry *root)
//printf("Found namespace %s in %s at line %d\n",root->name.data(),
//printf("Found namespace %s in %s at line %d\n",root->name.data(),
// root->fileName.data(), root->startLine);
// root->fileName.data(), root->startLine);
NamespaceDef
*
nd
;
NamespaceDef
*
nd
;
if
((
nd
=
Doxygen
::
namespaceDict
[
fullName
]))
if
((
nd
=
Doxygen
::
namespaceDict
[
fullName
]))
// existing namespace
{
{
if
(
!
root
->
doc
.
isEmpty
()
||
!
root
->
brief
.
isEmpty
())
// block contains docs
if
(
!
root
->
doc
.
isEmpty
()
||
!
root
->
brief
.
isEmpty
())
// block contains docs
{
{
...
@@ -852,11 +852,7 @@ static void buildNamespaceList(Entry *root)
...
@@ -852,11 +852,7 @@ static void buildNamespaceList(Entry *root)
addNamespaceToGroups
(
root
,
nd
);
addNamespaceToGroups
(
root
,
nd
);
nd
->
setRefItems
(
root
->
todoId
,
root
->
testId
,
root
->
bugId
);
nd
->
setRefItems
(
root
->
todoId
,
root
->
testId
,
root
->
bugId
);
}
}
else
/* if (!root->doc.isEmpty() ||
else
// fresh namespace
!root->brief.isEmpty() ||
Config::extractAllFlag
)
*/
{
{
QCString
tagName
;
QCString
tagName
;
if
(
root
->
tagInfo
)
if
(
root
->
tagInfo
)
...
@@ -1390,16 +1386,17 @@ static MemberDef *addVariableToFile(
...
@@ -1390,16 +1386,17 @@ static MemberDef *addVariableToFile(
* \returns -1 if this is not a function pointer variable or
* \returns -1 if this is not a function pointer variable or
* the index at which the brace of (...*name) was found.
* the index at which the brace of (...*name) was found.
*/
*/
static
int
findFunctionPtr
(
const
QCString
&
type
)
static
int
findFunctionPtr
(
const
QCString
&
type
,
int
*
pLength
=
0
)
{
{
static
const
QRegExp
re
(
"([^)]*
)
"
);
static
const
QRegExp
re
(
"([^)]*"
);
int
i
=-
1
;
int
i
=-
1
,
l
;
if
(
!
type
.
isEmpty
()
&&
// return type is non-empty
if
(
!
type
.
isEmpty
()
&&
// return type is non-empty
(
i
=
type
.
find
(
re
,
0
))
!=-
1
&&
// contains a (*
(
i
=
re
.
match
(
type
,
0
,
&
l
))
!=-
1
&&
// contains a (*
type
.
find
(
"operator"
)
==-
1
&&
// not an operator
type
.
find
(
"operator"
)
==-
1
&&
// not an operator
type
.
find
(
")("
)
==-
1
// not a function pointer return type
type
.
find
(
")("
)
==-
1
// not a function pointer return type
)
)
{
{
if
(
pLength
)
*
pLength
=
l
;
return
i
;
return
i
;
}
}
else
else
...
@@ -1414,18 +1411,13 @@ static int findFunctionPtr(const QCString &type)
...
@@ -1414,18 +1411,13 @@ static int findFunctionPtr(const QCString &type)
void
buildVarList
(
Entry
*
root
)
void
buildVarList
(
Entry
*
root
)
{
{
int
i
=-
1
;
if
(
!
root
->
name
.
isEmpty
()
&&
if
(
!
root
->
name
.
isEmpty
()
&&
(
root
->
type
.
isEmpty
()
||
compoundKeywordDict
.
find
(
root
->
type
)
==
0
)
&&
(
root
->
type
.
isEmpty
()
||
compoundKeywordDict
.
find
(
root
->
type
)
==
0
)
&&
(
(
(
root
->
section
==
Entry
::
VARIABLE_SEC
// it's a variable
(
root
->
section
==
Entry
::
VARIABLE_SEC
// it's a variable
)
||
)
||
(
root
->
section
==
Entry
::
FUNCTION_SEC
&&
// or maybe a function pointer variable
(
root
->
section
==
Entry
::
FUNCTION_SEC
&&
// or maybe a function pointer variable
(
i
=
findFunctionPtr
(
root
->
type
))
!=-
1
findFunctionPtr
(
root
->
type
)
!=-
1
//!root->type.isEmpty() && // return type is non-empty
// root->type.find(re,0)!=-1 && // contains a (*
// /root->type.find("operator")==-1 && // not an operator
// root->type.find(")(")==-1 // not a function pointer return type
)
)
)
)
)
// documented variable
)
// documented variable
...
@@ -1445,10 +1437,13 @@ void buildVarList(Entry *root)
...
@@ -1445,10 +1437,13 @@ void buildVarList(Entry *root)
(
root
->
name
.
find
(
'*'
)
!=-
1
||
root
->
name
.
find
(
'&'
)
!=-
1
))
(
root
->
name
.
find
(
'*'
)
!=-
1
||
root
->
name
.
find
(
'&'
)
!=-
1
))
{
{
// recover from parse error caused by redundant braces
// recover from parse error caused by redundant braces
// like in "int *(var[10]);", which is parsed as
// type="" name="int *" args="(var[10])"
root
->
type
=
root
->
name
;
root
->
type
=
root
->
name
;
static
const
QRegExp
reName
(
"[a-z_A-Z][a-z_A-Z0-9]*"
);
static
const
QRegExp
reName
(
"[a-z_A-Z][a-z_A-Z0-9]*"
);
int
l
;
int
l
;
i
=
root
->
args
.
isEmpty
()
?
-
1
:
reName
.
match
(
root
->
args
,
0
,
&
l
);
i
nt
i
=
root
->
args
.
isEmpty
()
?
-
1
:
reName
.
match
(
root
->
args
,
0
,
&
l
);
root
->
name
=
root
->
args
.
mid
(
i
,
l
);
root
->
name
=
root
->
args
.
mid
(
i
,
l
);
root
->
args
=
root
->
args
.
mid
(
i
+
l
,
root
->
args
.
find
(
')'
,
i
+
l
)
-
i
-
l
);
root
->
args
=
root
->
args
.
mid
(
i
+
l
,
root
->
args
.
find
(
')'
,
i
+
l
)
-
i
-
l
);
//printf("new: type=`%s' name=`%s' args=`%s'\n",
//printf("new: type=`%s' name=`%s' args=`%s'\n",
...
@@ -1456,6 +1451,7 @@ void buildVarList(Entry *root)
...
@@ -1456,6 +1451,7 @@ void buildVarList(Entry *root)
}
}
else
else
{
{
int
i
=
findFunctionPtr
(
root
->
type
);
if
(
i
!=-
1
)
// function pointer
if
(
i
!=-
1
)
// function pointer
{
{
int
ai
=
root
->
type
.
find
(
'['
,
i
);
int
ai
=
root
->
type
.
find
(
'['
,
i
);
...
@@ -1464,7 +1460,7 @@ void buildVarList(Entry *root)
...
@@ -1464,7 +1460,7 @@ void buildVarList(Entry *root)
root
->
args
.
prepend
(
root
->
type
.
right
(
root
->
type
.
length
()
-
ai
));
root
->
args
.
prepend
(
root
->
type
.
right
(
root
->
type
.
length
()
-
ai
));
root
->
type
=
root
->
type
.
left
(
ai
);
root
->
type
=
root
->
type
.
left
(
ai
);
}
}
else
else
if
(
root
->
type
.
find
(
')'
,
i
)
!=-
1
)
// function ptr, not variable like "int (*bla)[10]"
{
{
root
->
type
=
root
->
type
.
left
(
root
->
type
.
length
()
-
1
);
root
->
type
=
root
->
type
.
left
(
root
->
type
.
length
()
-
1
);
root
->
args
.
prepend
(
")"
);
root
->
args
.
prepend
(
")"
);
...
@@ -1473,12 +1469,6 @@ void buildVarList(Entry *root)
...
@@ -1473,12 +1469,6 @@ void buildVarList(Entry *root)
}
}
QCString
scope
,
name
=
root
->
name
.
copy
();
QCString
scope
,
name
=
root
->
name
.
copy
();
//int si;
//if ((si=name.findRev("::"))!=-1)
//{
// scope=name.left(si);
// name=name.right(name.length()-si-2);
//}
// find the scope of this variable
// find the scope of this variable
Entry
*
p
=
root
->
parent
;
Entry
*
p
=
root
->
parent
;
...
@@ -3781,31 +3771,26 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
...
@@ -3781,31 +3771,26 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
static
void
findMemberDocumentation
(
Entry
*
root
)
static
void
findMemberDocumentation
(
Entry
*
root
)
{
{
int
i
=-
1
,
l
;
int
i
=-
1
,
l
;
//QRegExp re("([a-z_A-Z0-9: ]*\\*+[ \\*]*");
Debug
::
print
(
Debug
::
FindMembers
,
0
,
Debug
::
print
(
Debug
::
FindMembers
,
0
,
"root->type=`%s' root->inside=`%s' root->name=`%s' root->args=`%s' section=%x root->memSpec=%d root->mGrpId=%d
\n
"
,
"root->type=`%s' root->inside=`%s' root->name=`%s' root->args=`%s' section=%x root->memSpec=%d root->mGrpId=%d
\n
"
,
root
->
type
.
data
(),
root
->
inside
.
data
(),
root
->
name
.
data
(),
root
->
args
.
data
(),
root
->
section
,
root
->
memSpec
,
root
->
mGrpId
root
->
type
.
data
(),
root
->
inside
.
data
(),
root
->
name
.
data
(),
root
->
args
.
data
(),
root
->
section
,
root
->
memSpec
,
root
->
mGrpId
);
);
bool
isFunc
=
TRUE
;
bool
isFunc
=
TRUE
;
if
(
if
(
// detect func variable/typedef to func ptr
findFunctionPtr
(
root
->
type
)
!=-
1
// func variable/typedef to func ptr
(
i
=
findFunctionPtr
(
root
->
type
,
&
l
))
!=-
1
//!root->type.isEmpty() && (i=re.match(root->type,0,&l))!=-1
)
)
{
{
// fix type and argument
root
->
args
+=
root
->
type
.
right
(
root
->
type
.
length
()
-
i
-
l
);
root
->
args
+=
root
->
type
.
right
(
root
->
type
.
length
()
-
i
-
l
);
root
->
type
=
root
->
type
.
left
(
i
+
l
);
root
->
type
=
root
->
type
.
left
(
i
+
l
);
isFunc
=
FALSE
;
isFunc
=
FALSE
;
}
}
//else if (root->name.find(re)!=-1 && root->name.find("operator")==-1)
else
if
((
root
->
type
.
left
(
8
)
==
"typedef "
&&
root
->
args
.
find
(
'('
)
!=-
1
))
// // func ptr entered with \fn, \var or \typedef
// detect function types marked as functions
//{
// isFunc=FALSE;
//}
else
if
((
root
->
type
.
isEmpty
()
&&
root
->
name
.
left
(
8
)
==
"typedef "
)
||
root
->
args
.
find
(
'('
)
==-
1
)
{
{
isFunc
=
FALSE
;
isFunc
=
FALSE
;
}
}
//printf("Member %s isFunc=%d\n",root->name.data(),isFunc);
//printf("Member %s isFunc=%d\n",root->name.data(),isFunc);
if
(
root
->
section
==
Entry
::
MEMBERDOC_SEC
)
if
(
root
->
section
==
Entry
::
MEMBERDOC_SEC
)
{
{
...
@@ -3823,12 +3808,15 @@ static void findMemberDocumentation(Entry *root)
...
@@ -3823,12 +3808,15 @@ static void findMemberDocumentation(Entry *root)
((
root
->
section
==
Entry
::
FUNCTION_SEC
// function
((
root
->
section
==
Entry
::
FUNCTION_SEC
// function
||
||
(
root
->
section
==
Entry
::
VARIABLE_SEC
&&
// variable
(
root
->
section
==
Entry
::
VARIABLE_SEC
&&
// variable
!
root
->
type
.
isEmpty
()
&&
/*root->type.left(8)!="typedef " &&*/
!
root
->
type
.
isEmpty
()
&&
// with a type
compoundKeywordDict
.
find
(
root
->
type
)
==
0
compoundKeywordDict
.
find
(
root
->
type
)
==
0
// that is not a keyword
// (to skip forward declaration of class etc.)
)
)
)
&&
!
root
->
stat
&&
)
&&
!
root
->
stat
&&
// not static
(
!
root
->
doc
.
isEmpty
()
||
!
root
->
brief
.
isEmpty
()
||
/*root->bodyLine!=-1 ||*/
(
!
root
->
doc
.
isEmpty
()
||
// has detailed docs
(
root
->
memSpec
&
Entry
::
Inline
)
||
root
->
mGrpId
!=-
1
!
root
->
brief
.
isEmpty
()
||
// has brief docs
(
root
->
memSpec
&
Entry
::
Inline
)
||
// is inline
root
->
mGrpId
!=-
1
// is part of a group
)
)
)
)
{
{
...
...
src/htmlgen.h
View file @
6b40e3de
...
@@ -115,13 +115,7 @@ class HtmlGenerator : public OutputGenerator
...
@@ -115,13 +115,7 @@ class HtmlGenerator : public OutputGenerator
void
writeAnchor
(
const
char
*
,
const
char
*
name
)
void
writeAnchor
(
const
char
*
,
const
char
*
name
)
{
t
<<
"<a name=
\"
"
<<
name
<<
"
\"
></a>"
;
}
{
t
<<
"<a name=
\"
"
<<
name
<<
"
\"
></a>"
;
}
void
startCodeFragment
()
{
t
<<
"<div class=
\"
fragment
\"
><pre>"
;
}
void
startCodeFragment
()
{
t
<<
"<div class=
\"
fragment
\"
><pre>"
;
}
void
endCodeFragment
()
{
t
<<
"</div></pre>"
;
}
// <- I know this is
void
endCodeFragment
()
{
t
<<
"</pre></div>"
;
}
// ordered the wrong
// way, but it is
// the only way I know
// to prevent an extra
// blank line
// (with netscape)
void
startPreFragment
()
{
t
<<
"<pre>"
;
}
void
startPreFragment
()
{
t
<<
"<pre>"
;
}
void
endPreFragment
()
{
t
<<
"</pre>"
;
}
void
endPreFragment
()
{
t
<<
"</pre>"
;
}
void
startCodeLine
()
{
col
=
0
;
}
void
startCodeLine
()
{
col
=
0
;
}
...
...
src/memberdef.cpp
View file @
6b40e3de
...
@@ -1475,17 +1475,17 @@ QCString MemberDef::getScopeString() const
...
@@ -1475,17 +1475,17 @@ QCString MemberDef::getScopeString() const
}
}
Definition
*
MemberDef
::
getCompoundDef
()
const
//
Definition *MemberDef::getCompoundDef() const
{
//
{
NamespaceDef
*
nd
=
getNamespaceDef
();
//
NamespaceDef *nd=getNamespaceDef();
ClassDef
*
cd
=
getClassDef
();
//
ClassDef *cd=getClassDef();
FileDef
*
fd
=
getFileDef
();
//
FileDef *fd=getFileDef();
GroupDef
*
gd
=
getGroupDef
();
//
GroupDef *gd=getGroupDef();
Definition
*
d
=
0
;
//
Definition *d = 0;
if
(
cd
)
d
=
cd
;
else
if
(
nd
)
d
=
nd
;
else
if
(
gd
)
d
=
gd
;
else
d
=
fd
;
//
if (cd) d=cd; else if (nd) d=nd; else if (gd) d=gd; else d=fd;
ASSERT
(
d
!=
0
);
//
ASSERT(d!=0);
return
d
;
//
return d;
}
//
}
QCString
MemberDef
::
anchor
()
const
QCString
MemberDef
::
anchor
()
const
{
{
...
...
src/memberdef.h
View file @
6b40e3de
...
@@ -88,7 +88,7 @@ class MemberDef : public Definition
...
@@ -88,7 +88,7 @@ class MemberDef : public Definition
GroupDef
*
getGroupDef
()
const
{
return
group
;
}
GroupDef
*
getGroupDef
()
const
{
return
group
;
}
FileDef
*
getFileDef
()
const
{
return
fileDef
;
}
FileDef
*
getFileDef
()
const
{
return
fileDef
;
}
NamespaceDef
*
getNamespaceDef
()
const
{
return
nspace
;
}
NamespaceDef
*
getNamespaceDef
()
const
{
return
nspace
;
}
Definition
*
getCompoundDef
()
const
;
//
Definition *getCompoundDef() const;
// direct kind info
// direct kind info
Protection
protection
()
const
{
return
prot
;
}
Protection
protection
()
const
{
return
prot
;
}
...
...
src/scanner.l
View file @
6b40e3de
...
@@ -1136,7 +1136,9 @@ TITLE [tT][iI][tT][lL][eE]
...
@@ -1136,7 +1136,9 @@ TITLE [tT][iI][tT][lL][eE]
}
}
<DefineEnd>.
<DefineEnd>.
<FindMembers>[*&]+ { current->name += yytext ; }
<FindMembers>[*&]+ { current->name += yytext ;
addType( current );
}
<FindMembers,MemberSpec,Function,NextSemi,BitFields,ReadInitializer>";"{BN}*("/**"|"//!"|"/*!"|"///")"<" {
<FindMembers,MemberSpec,Function,NextSemi,BitFields,ReadInitializer>";"{BN}*("/**"|"//!"|"/*!"|"///")"<" {
lineCount();
lineCount();
if (current->bodyLine==-1)
if (current->bodyLine==-1)
...
@@ -1677,7 +1679,7 @@ TITLE [tT][iI][tT][lL][eE]
...
@@ -1677,7 +1679,7 @@ TITLE [tT][iI][tT][lL][eE]
}
}
<ReadBody>. { current->program += yytext ; }
<ReadBody>. { current->program += yytext ; }
<FindMembers>
"("({BN}*{ID}{BN}*"::")*({BN}*"*"{BN}*
)+ {
<FindMembers>
("("({BN}*{ID}{BN}*"::")*({BN}*"*"{BN}*)+
)+ {
current->bodyLine = yyLineNr;
current->bodyLine = yyLineNr;
lineCount();
lineCount();
addType(current);
addType(current);
...
@@ -1769,7 +1771,10 @@ TITLE [tT][iI][tT][lL][eE]
...
@@ -1769,7 +1771,10 @@ TITLE [tT][iI][tT][lL][eE]
<FuncFuncType>. {
<FuncFuncType>. {
current->type += *yytext;
current->type += *yytext;
}
}
<FindMembers>"(" { current->args = yytext;
<FindMembers>"(" {
if (!current->name.isEmpty())
{
current->args = yytext;
current->bodyLine = yyLineNr;
current->bodyLine = yyLineNr;
currentArgumentContext = FuncQual;
currentArgumentContext = FuncQual;
fullArgString=current->args.copy();
fullArgString=current->args.copy();
...
@@ -1777,6 +1782,7 @@ TITLE [tT][iI][tT][lL][eE]
...
@@ -1777,6 +1782,7 @@ TITLE [tT][iI][tT][lL][eE]
BEGIN( ReadFuncArgType ) ;
BEGIN( ReadFuncArgType ) ;
//printf(">>> Read function arguments!\n");
//printf(">>> Read function arguments!\n");
}
}
}
/*
/*
<FindMembers>"("{BN}*("void"{BN}*)?")" {
<FindMembers>"("{BN}*("void"{BN}*)?")" {
lineCount();
lineCount();
...
...
src/tagreader.cpp
View file @
6b40e3de
...
@@ -857,6 +857,19 @@ void TagFileParser::buildMemberList(Entry *ce,QList<TagMemberInfo> &members)
...
@@ -857,6 +857,19 @@ void TagFileParser::buildMemberList(Entry *ce,QList<TagMemberInfo> &members)
}
}
}
}
static
QString
stripPath
(
const
QString
&
s
)
{
int
i
=
s
.
findRev
(
'/'
);
if
(
i
!=-
1
)
{
return
s
.
right
(
s
.
length
()
-
i
-
1
);
}
else
{
return
s
;
}
}
void
TagFileParser
::
buildLists
(
Entry
*
root
)
void
TagFileParser
::
buildLists
(
Entry
*
root
)
{
{
// build class list
// build class list
...
@@ -902,7 +915,7 @@ void TagFileParser::buildLists(Entry *root)
...
@@ -902,7 +915,7 @@ void TagFileParser::buildLists(Entry *root)
ti
->
fileName
=
tfi
->
filename
;
ti
->
fileName
=
tfi
->
filename
;
fe
->
tagInfo
=
ti
;
fe
->
tagInfo
=
ti
;
QString
fullName
=
m_tagName
+
":"
+
tfi
->
path
+
tfi
->
name
;
QString
fullName
=
m_tagName
+
":"
+
tfi
->
path
+
stripPath
(
tfi
->
name
)
;
fe
->
fileName
=
fullName
;
fe
->
fileName
=
fullName
;
FileDef
*
fd
=
new
FileDef
(
m_tagName
+
":"
+
tfi
->
path
,
tfi
->
name
,
m_tagName
);
FileDef
*
fd
=
new
FileDef
(
m_tagName
+
":"
+
tfi
->
path
,
tfi
->
name
,
m_tagName
);
FileName
*
mn
;
FileName
*
mn
;
...
...
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