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
c8b3a0f8
Commit
c8b3a0f8
authored
Feb 27, 2006
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.4.6-20060227
parent
8b0ae7ca
Changes
21
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
206 additions
and
120 deletions
+206
-120
INSTALL
INSTALL
+2
-2
README
README
+2
-2
configure
configure
+1
-1
Makefile.latex
doc/Makefile.latex
+0
-6
docblocks.doc
doc/docblocks.doc
+1
-1
doxygen.sty
doc/doxygen.sty
+14
-0
doxygen_manual.tex
doc/doxygen_manual.tex
+1
-0
index.doc
doc/index.doc
+1
-1
commentscan.l
src/commentscan.l
+0
-36
doxygen.cpp
src/doxygen.cpp
+12
-4
htmlgen.cpp
src/htmlgen.cpp
+8
-1
latexdocvisitor.cpp
src/latexdocvisitor.cpp
+8
-8
latexgen.cpp
src/latexgen.cpp
+9
-9
memberdef.cpp
src/memberdef.cpp
+1
-1
perlmodgen.cpp
src/perlmodgen.cpp
+57
-1
pyscanner.l
src/pyscanner.l
+13
-5
scanner.l
src/scanner.l
+11
-6
util.cpp
src/util.cpp
+60
-33
util.h
src/util.h
+2
-0
xmlgen.cpp
src/xmlgen.cpp
+1
-1
tmake.conf
tmake/lib/macosx-c++/tmake.conf
+2
-2
No files found.
INSTALL
View file @
c8b3a0f8
DOXYGEN Version 1.4.6-200602
02
DOXYGEN Version 1.4.6-200602
27
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (
02
February 2006)
Dimitri van Heesch (
27
February 2006)
README
View file @
c8b3a0f8
DOXYGEN Version 1.4.6_200602
02
DOXYGEN Version 1.4.6_200602
27
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) (
02
February 2006)
Dimitri van Heesch (dimitri@stack.nl) (
27
February 2006)
configure
View file @
c8b3a0f8
...
...
@@ -20,7 +20,7 @@ doxygen_version_minor=4
doxygen_version_revision
=
6
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn
=
200602
02
doxygen_version_mmn
=
200602
27
bin_dirs
=
`
echo
$PATH
|
sed
-e
"s/:/ /g"
`
...
...
doc/Makefile.latex
View file @
c8b3a0f8
...
...
@@ -14,12 +14,6 @@
all
:
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.pdf
:
doxygen_manual.tex doxygen.sty
echo
"Running latex..."
pdflatex doxygen_manual.tex
...
...
doc/docblocks.doc
View file @
c8b3a0f8
...
...
@@ -374,7 +374,7 @@ are supported.
There is also another way to document Python code using comments that
start with "##". These type of comment blocks are more in line with the
way documentation blocks work for the other languages support doxygen
way documentation blocks work for the other languages support
ed by
doxygen
and this also allows the use of special commands.
Here is the same example again but now using doxygen style comments:
...
...
doc/doxygen.sty
View file @
c8b3a0f8
...
...
@@ -27,6 +27,20 @@
\rfoot
[\fancyplain{}{\bfseries\scriptsize User Manual for Doxygen $VERSION, written by Dimitri van Heesch \copyright 1997-2004}]
{}
\lfoot
[]
{
\fancyplain
{}{
\bfseries\scriptsize
User Manual for Doxygen
$
VERSION, written by Dimitri van Heesch
\copyright
1997
-
2004
}}
\cfoot
{}
\newenvironment
{
Code
}
{
\footnotesize
}
{
\normalsize
}
\newcommand
{
\doxyref
}
[
3
]
{
\textbf
{
#
1
}
(
\textnormal
{
#
2
}
\,\pageref
{
#
3
}
)
}
\newenvironment
{
DocInclude
}
{
\footnotesize
}
{
\normalsize
}
\newenvironment
{
VerbInclude
}
{
\footnotesize
}
{
\normalsize
}
\newenvironment
{
Image
}
{
\begin
{
figure
}
[
H
]
}
{
\end
{
figure
}}
\newenvironment
{
ImageNoCaption
}{}{}
\newenvironment
{
CompactList
}
{
\begin
{
list
}{}{
\setlength
{
\leftmargin
}{
0
.
5
cm
}
...
...
doc/doxygen_manual.tex
View file @
c8b3a0f8
...
...
@@ -69,6 +69,7 @@ Written by Dimitri van Heesch\\[2ex]
\input
{
config
}
\input
{
commands
}
\input
{
htmlcmds
}
\input
{
xmlcmds
}
\part
{
Developers Manual
}
\input
{
arch
}
\input
{
perlmod
}
...
...
doc/index.doc
View file @
c8b3a0f8
...
...
@@ -174,7 +174,7 @@ Thanks go to:
given me a good start in writing doxygen.
<li>All people at Troll Tech, for creating a beautiful GUI Toolkit
(which is very useful as a Windows/Unix platform abstraction layer :-)
<li>My brother
<a href="http://www.stack.nl/~fidget/index.html">Frank</a>
<li>My brother
Frank
for rendering the logos.
<li>Harm van der Heijden for adding HTML help support.
<li>Wouter Slegers of
...
...
src/commentscan.l
View file @
c8b3a0f8
...
...
@@ -515,39 +515,6 @@ static QCString addFormula()
static void checkFormula();
//-----------------------------------------------------------------------------
static void prependScope()
{
#if 0
Entry *current_root = current->parent;
if (current_root && current_root->section & Entry::SCOPE_MASK)
{
current->name.prepend(current_root->name+"::");
if (current_root->tArgLists)
{
if (current->tArgLists==0)
{
current->tArgLists = new QList<ArgumentList>;
current->tArgLists->setAutoDelete(TRUE);
}
QListIterator<ArgumentList> talsi(*current_root->tArgLists);
ArgumentList *srcAl=0;
for (talsi.toLast();(srcAl=talsi.current());--talsi)
{
ArgumentList *dstAl = new ArgumentList;
dstAl->setAutoDelete(TRUE);
QListIterator<Argument> tali(*srcAl);
Argument *a;
for (;(a=tali.current());++tali)
{
dstAl->append(new Argument(*a));
}
current->tArgLists->insert(0,dstAl);
}
}
}
#endif
}
static void addSection()
{
sectionTitle+=yytext;
...
...
@@ -994,7 +961,6 @@ MAILADR [a-z_A-Z0-9.+\-]+"@"[a-z_A-Z0-9\-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-]
<EnumDocArg1>{SCOPEID} { // handle argument
current->name = yytext;
prependScope();
BEGIN( Comment );
}
<EnumDocArg1>{LC} { // line continuation
...
...
@@ -1065,12 +1031,10 @@ MAILADR [a-z_A-Z0-9.+\-]+"@"[a-z_A-Z0-9\-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-]
current->name+="-p";
}
// prepend outer scope name
prependScope();
BEGIN( ClassDocArg2 );
}
<CategoryDocArg1>{SCOPENAME}{B}*"("[^\)]+")" {
current->name = yytext;
prependScope();
BEGIN( ClassDocArg2 );
}
<ClassDocArg1,CategoryDocArg1>{LC} { // line continuation
...
...
src/doxygen.cpp
View file @
c8b3a0f8
...
...
@@ -2185,13 +2185,14 @@ done:
static
void
buildVarList
(
Entry
*
root
)
{
int
isFuncPtr
=-
1
;
if
(
!
root
->
name
.
isEmpty
()
&&
(
root
->
type
.
isEmpty
()
||
compoundKeywordDict
.
find
(
root
->
type
)
==
0
)
&&
(
(
root
->
section
==
Entry
::
VARIABLE_SEC
// it's a variable
)
||
(
root
->
section
==
Entry
::
FUNCTION_SEC
&&
// or maybe a function pointer variable
findFunctionPtr
(
root
->
type
)
!=-
1
(
isFuncPtr
=
findFunctionPtr
(
root
->
type
)
)
!=-
1
)
||
(
root
->
section
==
Entry
::
FUNCTION_SEC
&&
// class variable initialized by constructor
isVarWithConstructor
(
root
)
...
...
@@ -2228,7 +2229,7 @@ static void buildVarList(Entry *root)
}
else
{
int
i
=
findFunctionPtr
(
root
->
type
)
;
int
i
=
isFuncPtr
;
if
(
i
!=-
1
)
// function pointer
{
int
ai
=
root
->
type
.
find
(
'['
,
i
);
...
...
@@ -2244,6 +2245,11 @@ static void buildVarList(Entry *root)
//printf("root->type=%s root->args=%s\n",root->type.data(),root->args.data());
}
}
else
if
(
root
->
type
.
find
(
"typedef "
)
!=-
1
&&
root
->
type
.
right
(
2
)
==
"()"
)
// typedef void (func)(int)
{
root
->
type
=
root
->
type
.
left
(
root
->
type
.
length
()
-
1
);
root
->
args
.
prepend
(
")"
);
}
}
QCString
scope
,
name
=
removeRedundantWhiteSpace
(
root
->
name
);
...
...
@@ -3911,9 +3917,12 @@ static bool findClassRelation(
}
bool
isATemplateArgument
=
templateNames
!=
0
&&
templateNames
->
find
(
biName
)
!=
0
;
// make templSpec canonical
templSpec
=
getCanonicalTemplateSpec
(
cd
,
cd
->
getFileDef
(),
templSpec
);
if
(
found
)
{
Debug
::
print
(
Debug
::
Classes
,
0
,
" Documented class `%s' templSpec=%s
\n
"
,
biName
.
data
(),
templSpec
.
data
());
Debug
::
print
(
Debug
::
Classes
,
0
,
" Documented class `%s' templSpec=%s
\n
"
,
biName
.
data
(),
templSpec
.
isEmpty
()
?
""
:
templSpec
.
data
());
// add base class to this class
// if templSpec is not empty then we should "instantiate"
...
...
@@ -8903,7 +8912,6 @@ void parseInput()
Doxygen
::
memberNameSDict
.
sort
();
Doxygen
::
functionNameSDict
.
sort
();
Doxygen
::
hiddenClasses
.
sort
();
printf
(
"Sorting %d classes
\n
"
,
Doxygen
::
classSDict
.
count
());
Doxygen
::
classSDict
.
sort
();
msg
(
"Freeing entry tree
\n
"
);
...
...
src/htmlgen.cpp
View file @
c8b3a0f8
...
...
@@ -1817,7 +1817,14 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,
{
startQuickIndexItem
(
t
,
"namespacemembers"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_NamespaceMembers
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trNamespaceMembers
());
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_JAVA"
))
{
t
<<
fixSpaces
(
theTranslator
->
trPackageMembers
());
}
else
{
t
<<
fixSpaces
(
theTranslator
->
trNamespaceMembers
());
}
endQuickIndexItem
(
t
);
}
endQuickIndexList
(
t
,
compact
);
...
...
src/latexdocvisitor.cpp
View file @
c8b3a0f8
...
...
@@ -36,7 +36,7 @@ static QString escapeLabelName(const char *s)
switch
(
c
)
{
case
'%'
:
result
+=
"
\\
%"
;
break
;
case
'|'
:
result
+=
"
\\
t
extt
t{
\"
|}"
;
break
;
case
'|'
:
result
+=
"
\\
tt{
\"
|}"
;
break
;
case
'!'
:
result
+=
"
\"
!"
;
break
;
default:
result
+=
c
;
}
...
...
@@ -69,7 +69,7 @@ QString LatexDocVisitor::escapeMakeIndexChars(const char *s)
case
'!'
:
m_t
<<
"
\"
!"
;
break
;
case
'"'
:
m_t
<<
"
\"\"
"
;
break
;
case
'@'
:
m_t
<<
"
\"
@"
;
break
;
case
'|'
:
m_t
<<
"
\\
t
extt
t{
\"
|}"
;
break
;
case
'|'
:
m_t
<<
"
\\
tt{
\"
|}"
;
break
;
case
'['
:
m_t
<<
"["
;
break
;
case
']'
:
m_t
<<
"]"
;
break
;
default
:
str
[
0
]
=
c
;
filter
(
str
);
break
;
...
...
@@ -191,7 +191,7 @@ void LatexDocVisitor::visit(DocURL *u)
if
(
u
->
isEmail
())
m_t
<<
"mailto:"
;
m_t
<<
u
->
url
()
<<
"}"
;
}
m_t
<<
"
\\
t
extt
t{"
;
m_t
<<
"
\\
tt{"
;
filter
(
u
->
url
());
m_t
<<
"}"
;
}
...
...
@@ -214,13 +214,13 @@ void LatexDocVisitor::visit(DocStyleChange *s)
switch
(
s
->
style
())
{
case
DocStyleChange
:
:
Bold
:
if
(
s
->
enable
())
m_t
<<
"
\\
textbf{
"
;
else
m_t
<<
"}"
;
if
(
s
->
enable
())
m_t
<<
"
{
\\
bf
"
;
else
m_t
<<
"}"
;
break
;
case
DocStyleChange
:
:
Italic
:
if
(
s
->
enable
())
m_t
<<
"
\\
textit{
"
;
else
m_t
<<
"
\\
/}"
;
if
(
s
->
enable
())
m_t
<<
"
{
\\
em
"
;
else
m_t
<<
"
\\
/}"
;
break
;
case
DocStyleChange
:
:
Code
:
if
(
s
->
enable
())
m_t
<<
"
\\
texttt{
"
;
else
m_t
<<
"}"
;
if
(
s
->
enable
())
m_t
<<
"
{
\\
tt
"
;
else
m_t
<<
"}"
;
break
;
case
DocStyleChange
:
:
Subscript
:
if
(
s
->
enable
())
m_t
<<
"$_{
\\
mbox{"
;
else
m_t
<<
"}}$ "
;
...
...
@@ -718,7 +718,7 @@ void LatexDocVisitor::visitPre(DocHRef *href)
m_t
<<
href
->
url
();
m_t
<<
"}"
;
}
m_t
<<
"
\t
exttt{
"
;
m_t
<<
"
{
\\
tt
"
;
}
void
LatexDocVisitor
::
visitPost
(
DocHRef
*
)
...
...
@@ -972,7 +972,7 @@ void LatexDocVisitor::visitPre(DocXRefItem *x)
}
else
{
m_t
<<
"
\\
text
bf{"
;
m_t
<<
"
\\
bf{"
;
}
m_insideItem
=
TRUE
;
filter
(
x
->
title
());
...
...
src/latexgen.cpp
View file @
c8b3a0f8
...
...
@@ -63,7 +63,7 @@ static QCString escapeLabelName(const char *s)
switch
(
c
)
{
case
'%'
:
result
+=
"
\\
%"
;
break
;
case
'|'
:
result
+=
"
\\
t
extt
t{
\"
|}"
;
break
;
case
'|'
:
result
+=
"
\\
tt{
\"
|}"
;
break
;
case
'!'
:
result
+=
"
\"
!"
;
break
;
default:
result
+=
c
;
}
...
...
@@ -85,7 +85,7 @@ static QCString escapeMakeIndexChars(LatexGenerator *g,QTextStream &t,const char
case
'!'
:
t
<<
"
\"
!"
;
break
;
case
'"'
:
t
<<
"
\"\"
"
;
break
;
case
'@'
:
t
<<
"
\"
@"
;
break
;
case
'|'
:
t
<<
"
\\
t
extt
t{
\"
|}"
;
break
;
case
'|'
:
t
<<
"
\\
tt{
\"
|}"
;
break
;
case
'['
:
t
<<
"["
;
break
;
case
']'
:
t
<<
"]"
;
break
;
default:
str
[
0
]
=
c
;
g
->
docify
(
str
);
break
;
...
...
@@ -355,7 +355,7 @@ static void writeDefaultStyleSheetPart3(QTextStream &t)
t
<<
"
\\
setlength{
\\
itemsep}{0pt}
\n
"
;
t
<<
"
\\
setlength{
\\
parsep}{0pt}
\n
"
;
t
<<
"
\\
setlength{
\\
topsep}{0pt}
\n
"
;
t
<<
"
\\
renewcommand{
\\
makelabel}{}}}
\n
"
;
t
<<
"
\\
renewcommand{
\\
makelabel}{
\\
hfill
}}}
\n
"
;
t
<<
"{
\\
end{list}}
\n
"
;
t
<<
"
\\
newenvironment{CompactItemize}
\n
"
;
t
<<
"{
\n
"
;
...
...
@@ -377,7 +377,7 @@ static void writeDefaultStyleSheetPart3(QTextStream &t)
t
<<
"}
\n
"
;
t
<<
"{
\\
end{tabular*}
\\
par}
\n
"
;
t
<<
"
\\
newcommand{
\\
entrylabel}[1]{
\n
"
;
t
<<
" {
\\
parbox[b]{
\\
labelwidth-4pt}{
\\
makebox[0pt][l]{
\\
textbf{#1}}
\\
\\
}}}
\n
"
;
t
<<
" {
\\
parbox[b]{
\\
labelwidth-4pt}{
\\
makebox[0pt][l]{
\\
textbf{#1}}
\\
vspace{1.5
\\
baselineskip}
}}}
\n
"
;
t
<<
"
\\
newenvironment{Desc}
\n
"
;
t
<<
"{
\\
begin{list}{}
\n
"
;
t
<<
" {
\n
"
;
...
...
@@ -924,7 +924,7 @@ void LatexGenerator::endHtmlLink()
void
LatexGenerator
::
writeStartAnnoItem
(
const
char
*
,
const
char
*
,
const
char
*
path
,
const
char
*
name
)
{
t
<<
"
\\
item
\\
contentsline{section}{
\\
textbf{
"
;
t
<<
"
\\
item
\\
contentsline{section}{
\\
bf
"
;
if
(
path
)
docify
(
path
);
docify
(
name
);
t
<<
"} "
;
...
...
@@ -959,7 +959,7 @@ void LatexGenerator::endIndexValue(const char *name,bool hasBrief)
//void LatexGenerator::writeClassLink(const char *,const char *,
// const char *,const char *name)
//{
// t << "
\\textbf{
";
// t << "
{\\bf
";
// docify(name);
// t << "}";
//}
...
...
@@ -975,7 +975,7 @@ void LatexGenerator::startTextLink(const char *f,const char *anchor)
}
else
{
t
<<
"
\\
textbf{
"
;
t
<<
"
{
\\
bf
"
;
}
}
...
...
@@ -999,7 +999,7 @@ void LatexGenerator::writeObjectLink(const char *ref, const char *f,
}
else
{
t
<<
"
\\
text
bf{"
;
t
<<
"
\\
bf{"
;
docify
(
text
);
t
<<
"}"
;
}
...
...
@@ -1420,7 +1420,7 @@ void LatexGenerator::endMemberList()
void
LatexGenerator
::
startMemberGroupHeader
(
bool
hasHeader
)
{
if
(
hasHeader
)
t
<<
"
\\
begin{Indent}"
;
t
<<
"
\\
textbf{
"
;
t
<<
"
{
\\
bf
"
;
}
void
LatexGenerator
::
endMemberGroupHeader
()
...
...
src/memberdef.cpp
View file @
c8b3a0f8
...
...
@@ -2503,7 +2503,7 @@ void MemberDef::setTagInfo(TagInfo *ti)
{
if
(
ti
)
{
setAnchor
(
ti
->
anchor
)
;
anc
=
ti
->
anchor
;
setReference
(
ti
->
tagName
);
explicitOutputFileBase
=
stripExtension
(
ti
->
fileName
);
}
...
...
src/perlmodgen.cpp
View file @
c8b3a0f8
...
...
@@ -2231,11 +2231,67 @@ bool PerlModGenerator::generateDoxyStructurePM()
"
\t\t
[
\"
hash
\"
,
\"
ClassDetailed
\"
,
\n
"
"
\t\t
{
\n
"
"
\t\t
doc => [
\"
doc
\"
,
\"
ClassDetailedDoc
\"
],
\n
"
"
\t\t
},
\n
"
"
\t\t
},
\n
"
"
\t\t
],
\n
"
"
\t
},
\n
"
"
\t
],
\n
"
"
\t
],
\n
"
"
\t
groups =>
\n
"
"
\t
[
\"
list
\"
,
\"
Groups
\"
,
\n
"
"
\t
[
\"
hash
\"
,
\"
Group
\"
,
\n
"
"
\t
{
\n
"
"
\t\t
name => [
\"
string
\"
,
\"
GroupName
\"
],
\n
"
"
\t\t
title => [
\"
string
\"
,
\"
GroupTitle
\"
],
\n
"
"
\t\t
files =>
\n
"
"
\t\t
[
\"
list
\"
,
\"
Files
\"
,
\n
"
"
\t\t
[
\"
hash
\"
,
\"
File
\"
,
\n
"
"
\t\t
{
\n
"
"
\t\t
name => [
\"
string
\"
,
\"
Filename
\"
]
\n
"
"
\t\t
}
\n
"
"
\t\t
],
\n
"
"
\t\t
],
\n
"
"
\t\t
classes =>
\n
"
"
\t\t
[
\"
list
\"
,
\"
Classes
\"
,
\n
"
"
\t\t
[
\"
hash
\"
,
\"
Class
\"
,
\n
"
"
\t\t
{
\n
"
"
\t\t
name => [
\"
string
\"
,
\"
Classname
\"
]
\n
"
"
\t\t
}
\n
"
"
\t\t
],
\n
"
"
\t\t
],
\n
"
"
\t\t
namespaces =>
\n
"
"
\t\t
[
\"
list
\"
,
\"
Namespaces
\"
,
\n
"
"
\t\t
[
\"
hash
\"
,
\"
Namespace
\"
,
\n
"
"
\t\t
{
\n
"
"
\t\t
name => [
\"
string
\"
,
\"
NamespaceName
\"
]
\n
"
"
\t\t
}
\n
"
"
\t\t
],
\n
"
"
\t\t
],
\n
"
"
\t\t
pages =>
\n
"
"
\t\t
[
\"
list
\"
,
\"
Pages
\"
,
\n
"
"
\t\t
[
\"
hash
\"
,
\"
Page
\"
,"
"
\t\t
{
\n
"
"
\t\t
title => [
\"
string
\"
,
\"
PageName
\"
]
\n
"
"
\t\t
}
\n
"
"
\t\t
],
\n
"
"
\t\t
],
\n
"
"
\t\t
groups =>
\n
"
"
\t\t
[
\"
list
\"
,
\"
Groups
\"
,
\n
"
"
\t\t
[
\"
hash
\"
,
\"
Group
\"
,
\n
"
"
\t\t
{
\n
"
"
\t\t
title => [
\"
string
\"
,
\"
GroupName
\"
]
\n
"
"
\t\t
}
\n
"
"
\t\t
],
\n
"
"
\t\t
],
\n
"
"
\t\t
functions => memberlist(
\"
GroupFunction
\"
),
\n
"
"
\t\t
detailed =>
\n
"
"
\t\t
[
\"
hash
\"
,
\"
GroupDetailed
\"
,
\n
"
"
\t\t
{
\n
"
"
\t\t
doc => [
\"
doc
\"
,
\"
GroupDetailedDoc
\"
],
\n
"
"
\t\t
},
\n
"
"
\t\t
],
\n
"
"
\t
}
\n
"
"
\t
],
\n
"
"
\t
],
\n
"
" },
\n
"
" ];
\n
"
"
\n
"
...
...
src/pyscanner.l
View file @
c8b3a0f8
...
...
@@ -414,6 +414,7 @@ EXPCHAR [#(){}\[\],:.%/\\=`*~|&<>!;+-]
NONEMPTYEXP [^ \t\n:]
PARAMNONEMPTY [^ \t\n():]
IDENTIFIER ({LETTER}|"_")({LETTER}|{DIGIT}|"_")*
SCOPE {IDENTIFIER}("."{IDENTIFIER})*
BORDER ([^A-Za-z0-9])
TRISINGLEQUOTE "'''"(!)?
...
...
@@ -899,13 +900,15 @@ STARTDOCSYMS ^{B}"##"/[^#]
YY_CURRENT_BUFFER->yy_at_bol=TRUE;
BEGIN(Search);
}
\n/"##" {
/*
^{B}/"##" { // start of a special comment
yyLineNr++;
endOfDef();
g_hideClassDocs = FALSE;
YY_CURRENT_BUFFER->yy_at_bol=TRUE;
BEGIN(Search);
}
*/
^{BB}/\n { // skip empty line
current->program+=yytext;
}
...
...
@@ -953,7 +956,7 @@ STARTDOCSYMS ^{B}"##"/[^#]
current->program+=*yytext;
yyLineNr++;
}
^{POUNDCOMMENT}
{ // normal comment
{POUNDCOMMENT}
{ // normal comment
current->program+=yytext;
}
. { // any character
...
...
@@ -1007,9 +1010,9 @@ STARTDOCSYMS ^{B}"##"/[^#]
BEGIN(ClassCaptureIndent);
}
{
IDENTIFIER}
{
{
SCOPE}
{
current->extends->append(
new BaseInfo(
yytext
,Public,Normal)
new BaseInfo(
substitute(yytext,".","::")
,Public,Normal)
);
//Has base class-do stuff
}
...
...
@@ -1040,7 +1043,7 @@ STARTDOCSYMS ^{B}"##"/[^#]
//fprintf(stderr,"setting indent %d\n",g_curIndent);
//printf("current->program=[%s]\n",current->program.data());
g_hideClassDocs = TRUE;
BEGIN( ClassBody
);
BEGIN(ClassBody
);
}
""/({NONEMPTY}|{EXPCHAR}) {
...
...
@@ -1492,6 +1495,11 @@ static void parseMain(const char *fileName,const char *fileBuf,Entry *rt)
static void parsePrototype(const QCString &text)
{
//printf("**** parsePrototype(%s) begin\n",text.data());
if (text.isEmpty())
{
warn(yyFileName,yyLineNr,"Empty prototype found!");
return;
}
//g_expectModuleDocs = FALSE;
g_specialBlock = FALSE;
...
...
src/scanner.l
View file @
c8b3a0f8
...
...
@@ -543,7 +543,8 @@ ID "$"?[a-z_A-Z][a-z_A-Z0-9]*
LABELID [a-z_A-Z][a-z_A-Z0-9\-]*
SCOPEID {ID}({ID}*{BN}*"::"{BN}*)*({ID}?)
SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
TSCOPE {ID}("<"[a-z_A-Z0-9 \t\*\&]*">")?
TSCOPE {ID}("<"[a-z_A-Z0-9 \t\*\&,]*">")?
FTSCOPE {ID}("<"[a-z_A-Z0-9\*\&,]*">")?
CSSCOPENAME (({ID}?{BN}*"."{BN}*)*)((~{BN}*)?{ID})
ATTR ({B}+[^>\n]*)?
A [aA]
...
...
@@ -1486,7 +1487,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
<QtPropType>{B}+ {
current->type+=yytext;
}
<QtPropType>({
ID}"::")*{ID}
{
<QtPropType>({
FTSCOPE}"::")*{FTSCOPE}
{
current->type+=yytext;
BEGIN(QtPropName);
}
...
...
@@ -2408,6 +2409,10 @@ IDLATTR ("["[^\]]*"]"){BN}*
<ReadBody,ReadNSBody,ReadBodyIntf>"{" { current->program += yytext ;
++curlyCount ;
}
<ReadBodyIntf>"}" {
current->program += yytext ;
--curlyCount ;
}
<ReadBody,ReadNSBody>"}" { //err("ReadBody count=%d\n",curlyCount);
if ( curlyCount>0 )
{
...
...
@@ -2681,7 +2686,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
}
<ReadBody,ReadNSBody,ReadBodyIntf>. { current->program += yytext ; }
<FindMembers>"("/
({BN}*
{TSCOPE}{BN}*"::")*{TSCOPE}{BN}*")"{BN}*"(" | /* typedef void (A<int>::func_t)(args...) */
<FindMembers>"("/
{BN}*(
{TSCOPE}{BN}*"::")*{TSCOPE}{BN}*")"{BN}*"(" | /* typedef void (A<int>::func_t)(args...) */
<FindMembers>("("({BN}*{TSCOPE}{BN}*"::")*({BN}*"*"{BN}*)+)+ { /* typedef void (A::*ptr_t)(args...) */
current->bodyLine = yyLineNr;
lineCount();
...
...
@@ -3485,7 +3490,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
yyLineNr++;
//addToBody(yytext);
}
<SkipCurly,SkipCurlyCpp>[^\n"'@\\/{}]+ {
<SkipCurly,SkipCurlyCpp>[^\n
#
"'@\\/{}]+ {
//addToBody(yytext);
}
<SkipCurlyCpp>\n {
...
...
@@ -3783,8 +3788,8 @@ IDLATTR ("["[^\]]*"]"){BN}*
current->name.sprintf("@%d",anonCount++);
}
curlyCount=0;
if (
/*current->section==Entry::PROTOCOL_SEC ||
current
->section==Entry::OBJCIMPL_SEC*/
if (
current_root && // not a nested struct inside an @interface section
current
_root->section!=Entry::INTERFACE_SEC &&
insideObjC
)
{ // ObjC body that ends with @end
...
...
src/util.cpp
View file @
c8b3a0f8
...
...
@@ -2750,13 +2750,24 @@ static QCString stripDeclKeywords(const QCString &s)
return
s
;
}
// forward decl for circular dependencies
static
QCString
extractCanonicalType
(
Definition
*
d
,
FileDef
*
fs
,
QCString
type
);
QCString
getCanonicalTemplateSpec
(
Definition
*
d
,
FileDef
*
fs
,
const
QCString
&
spec
)
{
QCString
templSpec
=
spec
.
stripWhiteSpace
();
if
(
templSpec
.
isEmpty
()
||
templSpec
.
at
(
0
)
!=
'<'
)
return
templSpec
;
return
"< "
+
extractCanonicalType
(
d
,
fs
,
templSpec
.
right
(
templSpec
.
length
()
-
1
));
}
static
QCString
getCanonicalTypeForIdentifier
(
Definition
*
d
,
FileDef
*
fs
,
const
QCString
&
word
,
QCString
*
tSpec
)
{
QCString
symName
,
scope
,
result
,
templSpec
,
tmpName
;
//DefinitionList *defList=0;
if
(
tSpec
)
templSpec
=
stripDeclKeywords
(
*
tSpec
);
if
(
tSpec
)
templSpec
=
stripDeclKeywords
(
getCanonicalTemplateSpec
(
d
,
fs
,
*
tSpec
)
);
if
(
word
.
findRev
(
"::"
)
!=-
1
&&
!
(
tmpName
=
stripScope
(
word
)).
isEmpty
())
{
...
...
@@ -2770,20 +2781,16 @@ static QCString getCanonicalTypeForIdentifier(
ClassDef
*
cd
=
0
;
MemberDef
*
mType
=
0
;
QCString
ts
;
if
(
!
templSpec
.
isEmpty
())
{
cd
=
getResolvedClass
(
d
,
fs
,
word
+
templSpec
,
&
mType
,
&
ts
,
TRUE
);
if
(
cd
&&
tSpec
)
*
tSpec
=
""
;
}
if
(
cd
==
0
)
// lookup class / class template instance
cd
=
getResolvedClass
(
d
,
fs
,
word
+
templSpec
,
&
mType
,
&
ts
,
TRUE
);
bool
isTemplInst
=
cd
&&
!
templSpec
.
isEmpty
();
if
(
!
cd
&&
!
templSpec
.
isEmpty
())
{
// class template specialization not known, look up class template
cd
=
getResolvedClass
(
d
,
fs
,
word
,
&
mType
,
&
ts
,
TRUE
);
}
if
(
!
ts
.
isEmpty
()
&&
templSpec
.
isEmpty
())
{
templSpec
=
stripDeclKeywords
(
ts
);
}
//printf("symbol=%s word=%s cd=%s d=%s fs=%s\n",
// symName.data(),
// word.data(),
...
...
@@ -2794,12 +2801,25 @@ static QCString getCanonicalTypeForIdentifier(
//printf(">>>> word '%s' => '%s' templSpec=%s ts=%s\n",
// (word+templSpec).data(),
// cd?cd->qualifiedName
WithTemplateParameters
().data():"<none>",
// cd?cd->qualifiedName().data():"<none>",
// templSpec.data(),ts.data());
if
(
cd
)
// known type
if
(
cd
)
// known class type
{
//result = cd->qualifiedNameWithTemplateParameters();
result
=
removeRedundantWhiteSpace
(
cd
->
qualifiedName
()
+
templSpec
);
if
(
isTemplInst
)
{
// spec is already part of class type
templSpec
=
""
;
if
(
tSpec
)
*
tSpec
=
""
;
}
else
if
(
!
ts
.
isEmpty
()
&&
templSpec
.
isEmpty
())
{
// use formal template args for spec
templSpec
=
stripDeclKeywords
(
ts
);
}
result
=
removeRedundantWhiteSpace
(
cd
->
qualifiedName
()
+
templSpec
);
if
(
cd
->
isTemplate
()
&&
tSpec
)
{
*
tSpec
=
""
;
...
...
@@ -2809,7 +2829,7 @@ static QCString getCanonicalTypeForIdentifier(
{
result
=
mType
->
qualifiedName
();
}
else
// not known as a class
else
{
QCString
resolvedType
=
resolveTypeDef
(
d
,
word
);
if
(
resolvedType
.
isEmpty
())
// not known as a typedef either
...
...
@@ -2824,21 +2844,9 @@ static QCString getCanonicalTypeForIdentifier(
return
result
;
}
static
QCString
extractCanonicalType
(
Definition
*
d
,
FileDef
*
fs
,
const
Argument
*
arg
)
static
QCString
extractCanonicalType
(
Definition
*
d
,
FileDef
*
fs
,
QCString
type
)
{
QCString
type
=
arg
->
type
.
stripWhiteSpace
();
QCString
name
=
arg
->
name
;
//printf("extractCanonicalType(type=%s,name=%s)\n",type.data(),name.data());
if
((
type
==
"const"
||
type
==
"volatile"
)
&&
!
name
.
isEmpty
())
{
// name is part of type => correct
type
+=
" "
;
type
+=
name
;
}
if
(
name
==
"const"
||
name
==
"volatile"
)
{
// name is part of type => correct
if
(
!
type
.
isEmpty
())
type
+=
" "
;
type
+=
name
;
}
type
=
type
.
stripWhiteSpace
();
// strip const and volatile keywords that are not relevant for the type
stripIrrelevantConstVolatile
(
type
);
...
...
@@ -2851,7 +2859,7 @@ static QCString extractCanonicalType(Definition *d,FileDef *fs,const Argument *a
type
.
stripPrefix
(
"typename "
);
type
=
removeRedundantWhiteSpace
(
type
);
//printf("extractCanonicalTyp
2
(type=%s,name=%s)\n",type.data(),name.data());
//printf("extractCanonicalTyp
e
(type=%s,name=%s)\n",type.data(),name.data());
static
QRegExp
id
(
"[a-z_A-Z][:a-z_A-Z0-9]*"
);
...
...
@@ -2890,6 +2898,25 @@ static QCString extractCanonicalType(Definition *d,FileDef *fs,const Argument *a
return
removeRedundantWhiteSpace
(
canType
);
}
static
QCString
extractCanonicalArgType
(
Definition
*
d
,
FileDef
*
fs
,
const
Argument
*
arg
)
{
QCString
type
=
arg
->
type
.
stripWhiteSpace
();
QCString
name
=
arg
->
name
;
//printf("extractCanonicalArgType(type=%s,name=%s)\n",type.data(),name.data());
if
((
type
==
"const"
||
type
==
"volatile"
)
&&
!
name
.
isEmpty
())
{
// name is part of type => correct
type
+=
" "
;
type
+=
name
;
}
if
(
name
==
"const"
||
name
==
"volatile"
)
{
// name is part of type => correct
if
(
!
type
.
isEmpty
())
type
+=
" "
;
type
+=
name
;
}
return
extractCanonicalType
(
d
,
fs
,
type
);
}
static
bool
matchArgument2
(
Definition
*
srcScope
,
FileDef
*
srcFileScope
,
Argument
*
srcA
,
Definition
*
dstScope
,
FileDef
*
dstFileScope
,
Argument
*
dstA
...
...
@@ -2929,11 +2956,11 @@ static bool matchArgument2(
if
(
srcA
->
canType
.
isEmpty
())
{
srcA
->
canType
=
extractCanonicalType
(
srcScope
,
srcFileScope
,
srcA
);
srcA
->
canType
=
extractCanonical
Arg
Type
(
srcScope
,
srcFileScope
,
srcA
);
}
if
(
dstA
->
canType
.
isEmpty
())
{
dstA
->
canType
=
extractCanonicalType
(
dstScope
,
dstFileScope
,
dstA
);
dstA
->
canType
=
extractCanonical
Arg
Type
(
dstScope
,
dstFileScope
,
dstA
);
}
if
(
srcA
->
canType
==
dstA
->
canType
)
...
...
src/util.h
View file @
c8b3a0f8
...
...
@@ -152,6 +152,8 @@ void generateFileRef(OutputDocInterface &od,const char *,
void
writePageRef
(
OutputDocInterface
&
od
,
const
char
*
cn
,
const
char
*
mn
);
QCString
getCanonicalTemplateSpec
(
Definition
*
d
,
FileDef
*
fs
,
const
QCString
&
spec
);
bool
matchArguments2
(
Definition
*
srcScope
,
FileDef
*
srcFileScope
,
ArgumentList
*
srcAl
,
Definition
*
dstScope
,
FileDef
*
dstFileScope
,
ArgumentList
*
dstAl
,
bool
checkCV
...
...
src/xmlgen.cpp
View file @
c8b3a0f8
...
...
@@ -613,7 +613,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
if
(
md
->
isReadable
())
t
<<
"yes"
;
else
t
<<
"no"
;
t
<<
"
\"
"
;
t
<<
"
\"
writable=
\"
"
;
t
<<
" writable=
\"
"
;
if
(
md
->
isWritable
())
t
<<
"yes"
;
else
t
<<
"no"
;
t
<<
"
\"
"
;
}
...
...
tmake/lib/macosx-c++/tmake.conf
View file @
c8b3a0f8
...
...
@@ -8,7 +8,7 @@ TEMPLATE = app
CONFIG
=
qt
warn_on
release
TMAKE_CC
=
cc
TMAKE_CFLAGS
= -
pipe
TMAKE_CFLAGS
= -
pipe
-
isysroot
/
Developer
/
SDKs
/
MacOSX10
.
4
u
.
sdk
-
arch
i386
-
arch
ppc
TMAKE_CFLAGS_WARN_ON
= -
Wall
-
W
TMAKE_CFLAGS_WARN_OFF
=
TMAKE_CFLAGS_RELEASE
= -
O2
...
...
@@ -36,7 +36,7 @@ TMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
TMAKE_LINK
=
c
++
TMAKE_LINK_SHLIB
=
c
++
TMAKE_LFLAGS
= -
Wl
,-
search_paths_first
TMAKE_LFLAGS
= -
Wl
,-
search_paths_first
-
Wl
,-
syslibroot
,/
Developer
/
SDKs
/
MacOSX10
.
4
u
.
sdk
-
arch
i386
-
arch
ppc
TMAKE_LFLAGS_RELEASE
=
TMAKE_LFLAGS_DEBUG
=
TMAKE_LFLAGS_SHLIB
= -
shared
...
...
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