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
3b8b750f
Commit
3b8b750f
authored
Apr 30, 2000
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.1.2-20000430
parent
a790b4ae
Changes
41
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
41 changed files
with
759 additions
and
570 deletions
+759
-570
INSTALL
INSTALL
+4
-4
README
README
+2
-2
VERSION
VERSION
+1
-1
config_templ.l
addon/configgen/config_templ.l
+60
-46
configgen.cpp
addon/configgen/configgen.cpp
+10
-5
pagewidget.cpp
addon/doxywizard/pagewidget.cpp
+1
-1
htmlcmds.doc
doc/htmlcmds.doc
+1
-0
language.doc
doc/language.doc
+16
-2
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
classdef.cpp
src/classdef.cpp
+11
-11
classlist.cpp
src/classlist.cpp
+59
-0
classlist.h
src/classlist.h
+1
-0
code.l
src/code.l
+143
-41
config.l
src/config.l
+145
-131
declinfo.l
src/declinfo.l
+1
-1
definition.h
src/definition.h
+5
-2
diagram.cpp
src/diagram.cpp
+8
-1
dot.cpp
src/dot.cpp
+15
-1
doxygen.cpp
src/doxygen.cpp
+23
-58
filedef.cpp
src/filedef.cpp
+15
-58
groupdef.cpp
src/groupdef.cpp
+12
-48
htmlgen.cpp
src/htmlgen.cpp
+3
-0
htmlgen.h
src/htmlgen.h
+3
-0
index.cpp
src/index.cpp
+3
-2
language.cpp
src/language.cpp
+5
-0
latexgen.cpp
src/latexgen.cpp
+5
-1
latexgen.h
src/latexgen.h
+3
-0
mangen.h
src/mangen.h
+3
-0
memberdef.cpp
src/memberdef.cpp
+56
-29
memberdef.h
src/memberdef.h
+10
-7
memberlist.cpp
src/memberlist.cpp
+27
-27
namespacedef.cpp
src/namespacedef.cpp
+12
-63
outputgen.h
src/outputgen.h
+3
-0
outputlist.h
src/outputlist.h
+5
-0
pre.l
src/pre.l
+13
-4
rtfgen.cpp
src/rtfgen.cpp
+24
-15
rtfgen.h
src/rtfgen.h
+3
-0
scanner.l
src/scanner.l
+19
-5
translator_de.h
src/translator_de.h
+1
-1
util.cpp
src/util.cpp
+26
-2
util.h
src/util.h
+1
-0
No files found.
INSTALL
View file @
3b8b750f
DOXYGEN Version 1.1.2-200004
23
DOXYGEN Version 1.1.2-200004
30
CONTENTS
CONTENTS
--------
--------
...
@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
...
@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
1. Unpack the archive, unless you already have:
1. Unpack the archive, unless you already have:
gunzip doxygen-1.1.2-200004
23
.src.tar.gz # uncompress the archive
gunzip doxygen-1.1.2-200004
30
.src.tar.gz # uncompress the archive
tar xf doxygen-1.1.2-200004
23
.src.tar # unpack it
tar xf doxygen-1.1.2-200004
30
.src.tar # unpack it
2. Run the configure script:
2. Run the configure script:
...
@@ -252,4 +252,4 @@ The latest version of doxygen can be obtained at
...
@@ -252,4 +252,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Enjoy,
Dimitri van Heesch (
23
April 2000)
Dimitri van Heesch (
30
April 2000)
README
View file @
3b8b750f
DOXYGEN Version 1.1.2-200004
23
DOXYGEN Version 1.1.2-200004
30
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 (
23
April 2000)
Dimitri van Heesch (
30
April 2000)
VERSION
View file @
3b8b750f
1.1.2-200004
23
1.1.2-200004
30
addon/configgen/config_templ.l
View file @
3b8b750f
...
@@ -335,65 +335,79 @@ static void substEnvVarsInStrList(QStrList &sl)
...
@@ -335,65 +335,79 @@ static void substEnvVarsInStrList(QStrList &sl)
while (s)
while (s)
{
{
QCString result(s);
QCString result(s);
bool wasQuoted = (result.find(' ')!=-1) || (result.find('\t')!=-1);
substEnvVarsInString(result);
substEnvVarsInString(result);
int l=result.length();
if (!wasQuoted) /* as a result of the expansion, a single string
int i,p=0;
may have expanded into a list, which we'll
// skip spaces
add to sl. If the orginal string already
// search for a "word"
contained multiple elements no splitting is done! */
for (i=0;i<l;i++)
{
{
char c;
// skip until start of new word
for (;i<l && ((c=result.at(i))==' ' || c=='\t');i++)
p=i; // p marks the start index of the word
int l=result.length();
// skip until end of a word
int i,p=0;
for (;i<l && ((c=result.at(i))!=' ' && c!='\t' && c!='"');i++);
// skip spaces
if (i<l) // not at the end of the string
// search for a "word"
for (i=0;i<l;i++)
{
{
if (c=='"') // word within quotes
char c;
// skip until start of new word
for (;i<l && ((c=result.at(i))==' ' || c=='\t');i++)
p=i; // p marks the start index of the word
// skip until end of a word
for (;i<l && ((c=result.at(i))!=' ' && c!='\t' && c!='"');i++);
if (i<l) // not at the end of the string
{
{
p=i+1;
if (c=='"') // word within quotes
for (i++;i<l;i++)
{
{
c=result.at(i)
;
p=i+1
;
if (c=='"') // end quote
for (i++;i<l;i++)
{
{
// replace the string in the list and go to the next item.
c=result.at(i);
sl.insert(sl.at(),result.mid(p,i-p)); // insert new item before current item.
if (c=='"') // end quote
sl.next(); // current item is now the old item
{
p=i+1;
// replace the string in the list and go to the next item.
break;
sl.insert(sl.at(),result.mid(p,i-p)); // insert new item before current item.
}
sl.next(); // current item is now the old item
else if (c=='\\') // skip escaped stuff
p=i+1;
{
break;
i++;
}
else if (c=='\\') // skip escaped stuff
{
i++;
}
}
}
}
}
}
else if (c==' ' || c=='\t') // separator
else if (c==' ' || c=='\t') // separator
{
{
// replace the string in the list and go to the next item.
// replace the string in the list and go to the nex
t item.
sl.insert(sl.at(),result.mid(p,i-p)); // insert new item before curren
t item.
sl.insert(sl.at(),result.mid(p,i-p)); // insert new item before current item.
sl.next(); // current item is now the old item
sl.next(); // current item is now the old item
p=i+1;
p=i+1;
}
}
}
}
}
if (p!=l) // add the leftover as a string
{
// replace the string in the list and go to the next item.
sl.insert(sl.at(),result.right(l-p)); // insert new item before current item.
sl.next(); // current item is now the old item
}
// remove the old unexpanded string from the list
i=sl.at();
sl.remove(); // current item index changes if the last element is removed.
if (sl.at()==i) // not last item
s = sl.current();
else // just removed last item
s = 0;
}
}
if (p!=l) // add the leftover as a string
else // just goto the next element in the list
{
{
// replace the string in the list and go to the next item.
s=sl.next();
sl.insert(sl.at(),result.right(l-p)); // insert new item before current item.
sl.next(); // current item is now the old item
}
}
// remove the old unexpanded string from the list
i=sl.at();
sl.remove(); // current item index changes if the last element is removed.
if (sl.at()==i) // not last item
s = sl.current();
else // just removed last item
s = 0;
}
}
}
}
...
...
addon/configgen/configgen.cpp
View file @
3b8b750f
...
@@ -21,9 +21,10 @@
...
@@ -21,9 +21,10 @@
#include <qfile.h>
#include <qfile.h>
#include <qlist.h>
#include <qlist.h>
#include <qdict.h>
#include <qdict.h>
#include <qstr
ing
list.h>
#include <qstrlist.h>
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
static
QString
spaces
=
" "
;
static
QString
spaces
=
" "
;
...
@@ -122,7 +123,9 @@ class ConfigOption
...
@@ -122,7 +123,9 @@ class ConfigOption
stringToC
(
t
,
longDesc
,
" t <<
\"
# "
,
"
\\
n
\"
;"
);
stringToC
(
t
,
longDesc
,
" t <<
\"
# "
,
"
\\
n
\"
;"
);
t
<<
" t <<
\"\\
n
\"
;"
<<
endl
;
t
<<
" t <<
\"\\
n
\"
;"
<<
endl
;
t
<<
" }"
<<
endl
;
t
<<
" }"
<<
endl
;
t
<<
" t <<
\"
"
<<
cfgName
<<
" =
\"
;"
<<
endl
;
t
<<
" t <<
\"
"
<<
cfgName
;
t
<<
spaces
.
left
(
22
-
cfgName
.
length
());
t
<<
"=
\"
;"
<<
endl
;
t
<<
" "
<<
writeFunc
<<
"(t,Config::"
<<
varName
<<
");"
<<
endl
;
t
<<
" "
<<
writeFunc
<<
"(t,Config::"
<<
varName
<<
");"
<<
endl
;
t
<<
" t <<
\"\\
n
\"
;"
<<
endl
;
t
<<
" t <<
\"\\
n
\"
;"
<<
endl
;
}
}
...
@@ -406,9 +409,11 @@ class ConfigString : public ConfigOption
...
@@ -406,9 +409,11 @@ class ConfigString : public ConfigOption
<<
",SIGNAL(changed()),this,SIGNAL(changed()));"
<<
endl
;
<<
",SIGNAL(changed()),this,SIGNAL(changed()));"
<<
endl
;
if
(
m_values
.
count
()
>
0
)
if
(
m_values
.
count
()
>
0
)
{
{
for
(
QStringList
::
Iterator
it
=
m_values
.
begin
();
it
!=
m_values
.
end
();
++
it
)
char
*
s
=
m_values
.
first
();
while
(
s
)
{
{
t
<<
" "
<<
varName
<<
"->addValue(
\"
"
<<
(
*
it
)
<<
"
\"
);"
<<
endl
;
t
<<
" "
<<
varName
<<
"->addValue(
\"
"
<<
s
<<
"
\"
);"
<<
endl
;
s
=
m_values
.
next
();
}
}
}
}
}
}
...
@@ -434,7 +439,7 @@ class ConfigString : public ConfigOption
...
@@ -434,7 +439,7 @@ class ConfigString : public ConfigOption
private
:
private
:
ConfigInfo
*
m_parent
;
ConfigInfo
*
m_parent
;
WidgetType
m_widgetType
;
WidgetType
m_widgetType
;
QStr
ing
List
m_values
;
QStrList
m_values
;
};
};
class
ConfigInt
:
public
ConfigOption
class
ConfigInt
:
public
ConfigOption
...
...
addon/doxywizard/pagewidget.cpp
View file @
3b8b750f
...
@@ -51,7 +51,7 @@ PageWidget::PageWidget( QTabWidget *parent, const char *name )
...
@@ -51,7 +51,7 @@ PageWidget::PageWidget( QTabWidget *parent, const char *name )
m_parent
->
addTab
(
this
,
name
);
m_parent
->
addTab
(
this
,
name
);
}
}
void
PageWidget
::
addStretch
(
int
stretch
=
0
)
void
PageWidget
::
addStretch
(
int
stretch
)
{
{
lay
->
addStretch
(
stretch
);
lay
->
addStretch
(
stretch
);
//printf("Viewport SizeHint %d,%d\n",viewport()->sizeHint().width(),viewport()->sizeHint().height());
//printf("Viewport SizeHint %d,%d\n",viewport()->sizeHint().width(),viewport()->sizeHint().height());
...
...
doc/htmlcmds.doc
View file @
3b8b750f
...
@@ -106,6 +106,7 @@ The special HTML characters entities that are recognized by Doxygen:
...
@@ -106,6 +106,7 @@ The special HTML characters entities that are recognized by Doxygen:
writes a character with a circumflex accent (like â).
writes a character with a circumflex accent (like â).
<li>\c &?tilde; where ? is one of {A,N,O,a,n,o},
<li>\c &?tilde; where ? is one of {A,N,O,a,n,o},
writes a character with a tilde accent (like ã).
writes a character with a tilde accent (like ã).
<li>\c ß write a sharp s (i.e. ß) to the output.
</ul>
</ul>
*/
*/
...
...
doc/language.doc
View file @
3b8b750f
...
@@ -164,6 +164,18 @@ Here is a list of the languages and their current maintainers:
...
@@ -164,6 +164,18 @@ Here is a list of the languages and their current maintainers:
snob@NOSPAM.int.spb.ru</a>
snob@NOSPAM.int.spb.ru</a>
</TD>
</TD>
</TR>
</TR>
<TR BGCOLOR="#ffffff">
<TD>
Croatian
</TD>
<TD>
Boris Bralo
</TD>
<TD>
<a href="mailto:boris.bralo@NOSPAM.zg.tel.hr">
boris.bralo@NOSPAM.zg.tel.hr</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TR BGCOLOR="#ffffff">
<TD>
<TD>
...
@@ -205,9 +217,11 @@ Here is a list of the languages and their current maintainers:
...
@@ -205,9 +217,11 @@ Here is a list of the languages and their current maintainers:
\hline
\hline
Spanish & Francisco Oltra Thennet & {\tt foltra@puc.cl} \\
Spanish & Francisco Oltra Thennet & {\tt foltra@puc.cl} \\
\hline
\hline
Finish & Olli Korhonen & {\tt Olli.Korhonen@ccc.fi} \\
Finnish & Olli Korhonen & {\tt Olli.Korhonen@ccc.fi} \\
\hline
Russian & Nickolay Semyonov & {\tt snob@int.spb.ru} \\
\hline
\hline
Russian & Vladimir Vodolazkiy & {\tt voldemarus@geocities.com
} \\
Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr
} \\
\hline
\hline
Dutch & Dimitri van Heesch & {\tt dimitri@stack.nl} \\
Dutch & Dimitri van Heesch & {\tt dimitri@stack.nl} \\
\hline
\hline
...
...
packages/rpm/doxygen.spec
View file @
3b8b750f
Name: doxygen
Name: doxygen
Version: 1.1.2-200004
23
Version: 1.1.2-200004
30
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/classdef.cpp
View file @
3b8b750f
...
@@ -774,9 +774,9 @@ void ClassDef::writeDocumentation(OutputList &ol)
...
@@ -774,9 +774,9 @@ void ClassDef::writeDocumentation(OutputList &ol)
// write detailed description
// write detailed description
bool
exampleFlag
=
hasExamples
();
bool
exampleFlag
=
hasExamples
();
if
(
!
briefDescription
().
isEmpty
(
)
||
if
(
(
!
briefDescription
().
isEmpty
()
&&
Config
::
repeatBriefFlag
)
||
!
documentation
().
isEmpty
()
||
!
documentation
().
isEmpty
()
||
(
startBodyLine
!=-
1
&&
bodyDef
)
||
/*(Config::sourceBrowseFlag && startBodyLine!=-1 && bodyDef) ||*/
exampleFlag
)
exampleFlag
)
{
{
ol
.
writeRuler
();
ol
.
writeRuler
();
...
@@ -884,15 +884,15 @@ void ClassDef::writeDocumentation(OutputList &ol)
...
@@ -884,15 +884,15 @@ void ClassDef::writeDocumentation(OutputList &ol)
enumMembers
.
writeDocumentation
(
ol
,
name
());
enumMembers
.
writeDocumentation
(
ol
,
name
());
}
}
enumValMembers
.
countDocMembers
();
//
enumValMembers.countDocMembers();
if
(
enumValMembers
.
totalCount
()
>
0
)
//
if (enumValMembers.totalCount()>0)
{
//
{
ol
.
writeRuler
();
//
ol.writeRuler();
ol
.
startGroupHeader
();
//
ol.startGroupHeader();
parseText
(
ol
,
theTranslator
->
trEnumerationValueDocumentation
());
//
parseText(ol,theTranslator->trEnumerationValueDocumentation());
ol
.
endGroupHeader
();
//
ol.endGroupHeader();
enumValMembers
.
writeDocumentation
(
ol
,
name
());
//
enumValMembers.writeDocumentation(ol,name());
}
//
}
constructors
.
countDocMembers
();
constructors
.
countDocMembers
();
if
(
constructors
.
totalCount
()
>
0
)
if
(
constructors
.
totalCount
()
>
0
)
...
...
src/classlist.cpp
View file @
3b8b750f
...
@@ -18,6 +18,9 @@
...
@@ -18,6 +18,9 @@
#include "classlist.h"
#include "classlist.h"
#include "config.h"
#include "config.h"
#include "util.h"
#include "util.h"
#include "outputlist.h"
#include "language.h"
#include "scanner.h"
ClassList
::
ClassList
()
:
QList
<
ClassDef
>
()
ClassList
::
ClassList
()
:
QList
<
ClassDef
>
()
{
{
...
@@ -43,3 +46,59 @@ ClassListIterator::ClassListIterator(const ClassList &cllist) :
...
@@ -43,3 +46,59 @@ ClassListIterator::ClassListIterator(const ClassList &cllist) :
QListIterator
<
ClassDef
>
(
cllist
)
QListIterator
<
ClassDef
>
(
cllist
)
{
{
}
}
void
ClassList
::
writeDeclaration
(
OutputList
&
ol
)
{
if
(
count
()
>
0
)
{
ClassDef
*
cd
=
first
();
bool
found
=
FALSE
;
while
(
cd
)
{
if
(
cd
->
name
().
find
(
'@'
)
==-
1
)
{
bool
isLink
=
cd
->
isLinkable
();
if
(
isLink
||
!
Config
::
hideClassFlag
)
{
if
(
!
found
)
{
ol
.
startMemberHeader
();
parseText
(
ol
,
theTranslator
->
trCompounds
());
ol
.
endMemberHeader
();
ol
.
startMemberList
();
found
=
TRUE
;
}
ol
.
startMemberItem
(
FALSE
);
switch
(
cd
->
compoundType
())
{
case
ClassDef
:
:
Class
:
ol
.
writeString
(
"class"
);
break
;
case
ClassDef
:
:
Struct
:
ol
.
writeString
(
"struct"
);
break
;
case
ClassDef
:
:
Union
:
ol
.
writeString
(
"union"
);
break
;
case
ClassDef
:
:
Interface
:
ol
.
writeString
(
"interface"
);
break
;
case
ClassDef
:
:
Exception
:
ol
.
writeString
(
"exception"
);
break
;
}
ol
.
writeString
(
" "
);
ol
.
insertMemberAlign
();
if
(
isLink
)
{
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
name
()
);
}
else
{
ol
.
startBold
();
ol
.
docify
(
cd
->
name
());
ol
.
endBold
();
}
ol
.
endMemberItem
(
FALSE
);
}
}
cd
=
next
();
}
if
(
found
)
ol
.
endMemberList
();
}
}
src/classlist.h
View file @
3b8b750f
...
@@ -30,6 +30,7 @@ class ClassList : public QList<ClassDef>
...
@@ -30,6 +30,7 @@ class ClassList : public QList<ClassDef>
~
ClassList
();
~
ClassList
();
int
compareItems
(
GCI
item1
,
GCI
item2
);
int
compareItems
(
GCI
item1
,
GCI
item2
);
void
writeDeclaration
(
OutputList
&
ol
);
};
};
class
ClassListIterator
:
public
QListIterator
<
ClassDef
>
class
ClassListIterator
:
public
QListIterator
<
ClassDef
>
...
...
src/code.l
View file @
3b8b750f
This diff is collapsed.
Click to expand it.
src/config.l
View file @
3b8b750f
This diff is collapsed.
Click to expand it.
src/declinfo.l
View file @
3b8b750f
...
@@ -56,7 +56,7 @@ static void addType()
...
@@ -56,7 +56,7 @@ static void addType()
//printf("addType() type=`%s' scope=`%s' name=`%s'\n",
//printf("addType() type=`%s' scope=`%s' name=`%s'\n",
// type.data(),scope.data(),name.data());
// type.data(),scope.data(),name.data());
if (name.isEmpty() && scope.isEmpty()) return;
if (name.isEmpty() && scope.isEmpty()) return;
if (!type.isEmpty()) type+=
' '
;
if (!type.isEmpty()) type+=
" "
;
if (!scope.isEmpty()) type+=scope+"::";
if (!scope.isEmpty()) type+=scope+"::";
type+=name;
type+=name;
scope.resize(0);
scope.resize(0);
...
...
src/definition.h
View file @
3b8b750f
...
@@ -48,9 +48,12 @@ class Definition
...
@@ -48,9 +48,12 @@ class Definition
/*! sets a new \a name for the definition */
/*! sets a new \a name for the definition */
void
setName
(
const
char
*
name
)
{
n
=
name
;
}
void
setName
(
const
char
*
name
)
{
n
=
name
;
}
/*! sets the documentation of this definition to \a d. */
/*! sets the documentation of this definition to \a d. */
void
setDocumentation
(
const
char
*
d
)
void
setDocumentation
(
const
char
*
d
,
bool
stripWhiteSpace
=
TRUE
)
{
{
doc
=
((
QCString
)
d
).
stripWhiteSpace
();
if
(
stripWhiteSpace
)
doc
=
((
QCString
)
d
).
stripWhiteSpace
();
else
doc
=
d
;
}
}
/*! sets the brief description of this definition to \a b.
/*! sets the brief description of this definition to \a b.
* A dot is added to the sentence if not available.
* A dot is added to the sentence if not available.
...
...
src/diagram.cpp
View file @
3b8b750f
...
@@ -196,7 +196,14 @@ DiagramItem::~DiagramItem()
...
@@ -196,7 +196,14 @@ DiagramItem::~DiagramItem()
QCString
DiagramItem
::
label
()
const
QCString
DiagramItem
::
label
()
const
{
{
return
classDef
->
name
()
+
templSpec
;
if
(
!
templSpec
.
isEmpty
())
{
return
insertTemplateSpecifierInScope
(
classDef
->
name
(),
templSpec
);
}
else
{
return
classDef
->
name
();
}
}
}
QCString
DiagramItem
::
fileName
()
const
QCString
DiagramItem
::
fileName
()
const
...
...
src/dot.cpp
View file @
3b8b750f
...
@@ -277,6 +277,19 @@ void DotNode::deleteNode(DotNodeList &deletedList)
...
@@ -277,6 +277,19 @@ void DotNode::deleteNode(DotNodeList &deletedList)
deletedList
.
append
(
this
);
deletedList
.
append
(
this
);
}
}
static
QCString
convertLabel
(
const
QCString
&
l
)
{
QCString
result
;
const
char
*
p
=
l
.
data
();
char
c
;
while
((
c
=*
p
++
))
{
if
(
c
==
'\\'
)
result
+=
"
\\\\
"
;
else
result
+=
c
;
}
return
result
;
}
void
DotNode
::
writeBox
(
QTextStream
&
t
,
bool
hasNonReachableChildren
)
void
DotNode
::
writeBox
(
QTextStream
&
t
,
bool
hasNonReachableChildren
)
{
{
const
char
*
labCol
=
const
char
*
labCol
=
...
@@ -284,7 +297,8 @@ void DotNode::writeBox(QTextStream &t,bool hasNonReachableChildren)
...
@@ -284,7 +297,8 @@ void DotNode::writeBox(QTextStream &t,bool hasNonReachableChildren)
(
(
(
hasNonReachableChildren
)
?
"red"
:
"black"
(
hasNonReachableChildren
)
?
"red"
:
"black"
);
);
t
<<
" Node"
<<
m_number
<<
" [shape=
\"
box
\"
,label=
\"
"
<<
m_label
t
<<
" Node"
<<
m_number
<<
" [shape=
\"
box
\"
,label=
\"
"
<<
convertLabel
(
m_label
)
<<
"
\"
,fontsize=10,height=0.2,width=0.4,fontname=
\"
doxfont
\"
"
;
<<
"
\"
,fontsize=10,height=0.2,width=0.4,fontname=
\"
doxfont
\"
"
;
t
<<
",color=
\"
"
<<
labCol
<<
"
\"
"
;
t
<<
",color=
\"
"
<<
labCol
<<
"
\"
"
;
if
(
m_isRoot
)
if
(
m_isRoot
)
...
...
src/doxygen.cpp
View file @
3b8b750f
...
@@ -258,7 +258,10 @@ void buildFileList(Entry *root)
...
@@ -258,7 +258,10 @@ void buildFileList(Entry *root)
}
}
else
else
{
{
fd
->
setDocumentation
(
root
->
doc
);
// using FALSE in setDocumentation is small hack to make sure a file
// is documented even if a \file command is used without further
// documentation
fd
->
setDocumentation
(
root
->
doc
,
FALSE
);
fd
->
setBriefDescription
(
root
->
brief
);
fd
->
setBriefDescription
(
root
->
brief
);
fd
->
addSectionsToDefinition
(
root
->
anchors
);
fd
->
addSectionsToDefinition
(
root
->
anchors
);
QListIterator
<
QCString
>
sli
(
*
root
->
groups
);
QListIterator
<
QCString
>
sli
(
*
root
->
groups
);
...
@@ -1729,12 +1732,13 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd,
...
@@ -1729,12 +1732,13 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd,
if
(
baseClassName
!=
root
->
name
)
// check for base class with the same name,
if
(
baseClassName
!=
root
->
name
)
// check for base class with the same name,
// look in the outer scope for a match
// look in the outer scope for a match
{
{
//printf("baseClass %s of %s found (%s and %s)\n",
Debug
::
print
(
// baseClassName.data(),
Debug
::
Classes
,
0
,
"baseClass %s of %s found (%s and %s)
\n
"
,
// root->name.data(),
baseClassName
.
data
(),
// (bi->prot==Private)?"private":((bi->prot==Protected)?"protected":"public"),
root
->
name
.
data
(),
// (bi->virt==Normal)?"normal":"virtual"
(
bi
->
prot
==
Private
)
?
"private"
:
((
bi
->
prot
==
Protected
)
?
"protected"
:
"public"
),
// );
(
bi
->
virt
==
Normal
)
?
"normal"
:
"virtual"
);
int
i
;
int
i
;
QCString
templSpec
;
QCString
templSpec
;
...
@@ -1743,11 +1747,15 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd,
...
@@ -1743,11 +1747,15 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd,
{
{
// TODO: here we should try to find the correct template specialization
// TODO: here we should try to find the correct template specialization
// but for now, we only look for the unspecializated base class.
// but for now, we only look for the unspecializated base class.
templSpec
=
baseClassName
.
right
(
baseClassName
.
length
()
-
i
);
int
e
=
baseClassName
.
find
(
'>'
);
baseClassName
=
baseClassName
.
left
(
i
);
if
(
e
!=-
1
)
baseClass
=
getResolvedClass
(
baseClassName
);
{
//printf("baseClass=%p baseClass=%s templSpec=%s\n",
templSpec
=
baseClassName
.
mid
(
i
,
e
-
i
+
1
);
// baseClass,baseClassName.data(),templSpec.data());
baseClassName
=
baseClassName
.
left
(
i
)
+
baseClassName
.
right
(
baseClassName
.
length
()
-
e
-
1
);
baseClass
=
getResolvedClass
(
baseClassName
);
//printf("baseClass=%p baseClass=%s templSpec=%s\n",
// baseClass,baseClassName.data(),templSpec.data());
}
}
}
bool
found
=
baseClass
!=
0
&&
baseClass
!=
cd
;
bool
found
=
baseClass
!=
0
&&
baseClass
!=
cd
;
...
@@ -1819,7 +1827,6 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd,
...
@@ -1819,7 +1827,6 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd,
}
}
else
else
{
{
//printf(">>> base class %s not found!\n",bi->name.data());
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
"
,
bi
->
name
.
data
());
}
}
}
}
...
@@ -2063,33 +2070,6 @@ void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl,
...
@@ -2063,33 +2070,6 @@ void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl,
}
}
}
}
//----------------------------------------------------------------------
static
QCString
insertTemplateSpecifierInScope
(
const
QCString
&
scope
,
const
QCString
&
templ
)
{
QCString
result
=
scope
.
copy
();
if
(
!
templ
.
isEmpty
()
&&
scope
.
find
(
'<'
)
==-
1
)
{
int
si
,
pi
=
0
;
while
((
si
=
scope
.
find
(
"::"
,
pi
))
!=-
1
&&
!
getClass
(
scope
.
left
(
si
)
+
templ
)
&&
!
getClass
(
scope
.
left
(
si
)))
{
//printf("Tried `%s'\n",(scope.left(si)+templ).data());
pi
=
si
+
2
;
}
if
(
si
==-
1
)
// not nested => append template specifier
{
result
+=
templ
;
}
else
// nested => insert template specifier before after first class name
{
result
=
scope
.
left
(
si
)
+
templ
+
scope
.
right
(
scope
.
length
()
-
si
);
}
}
//printf("insertTemplateSpecifierInScope(`%s',`%s')=%s\n",
// scope.data(),templ.data(),result.data());
return
result
;
}
//----------------------------------------------------------------------
//----------------------------------------------------------------------
// find a class definition given the scope name and (optionally) a
// find a class definition given the scope name and (optionally) a
// template list specifier
// template list specifier
...
@@ -2573,9 +2553,6 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
...
@@ -2573,9 +2553,6 @@ void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
QCString
fullFuncDecl
=
funcDecl
.
copy
();
QCString
fullFuncDecl
=
funcDecl
.
copy
();
if
(
isFunc
)
fullFuncDecl
+=
argListToString
(
root
->
argList
);
if
(
isFunc
)
fullFuncDecl
+=
argListToString
(
root
->
argList
);
//printf("scopeName=`%s' className=`%s'\n",scopeName.data(),className.data());
//printf("scopeName=`%s' className=`%s'\n",scopeName.data(),className.data());
// destructor => do backward class name substitution if needed
// destructor => do backward class name substitution if needed
//if (!funcName.isEmpty() && funcName[0]=='~')
//if (!funcName.isEmpty() && funcName[0]=='~')
// funcName="~"+resolveDefines(className);
// funcName="~"+resolveDefines(className);
...
@@ -3681,12 +3658,6 @@ void generateClassDocs()
...
@@ -3681,12 +3658,6 @@ void generateClassDocs()
msg
(
"Generating hierarchical class index...
\n
"
);
msg
(
"Generating hierarchical class index...
\n
"
);
writeHierarchicalIndex
(
*
outputList
);
writeHierarchicalIndex
(
*
outputList
);
//if (documentedIncludeFiles>0)
//{
// msg("Generating header index...\n");
// writeHeaderIndex(*outputList);
//}
msg
(
"Generating member index...
\n
"
);
msg
(
"Generating member index...
\n
"
);
writeMemberIndex
(
*
outputList
);
writeMemberIndex
(
*
outputList
);
...
@@ -3706,11 +3677,6 @@ void generateClassDocs()
...
@@ -3706,11 +3677,6 @@ void generateClassDocs()
cd
->
writeDocumentation
(
*
outputList
);
cd
->
writeDocumentation
(
*
outputList
);
cd
->
writeMemberList
(
*
outputList
);
cd
->
writeMemberList
(
*
outputList
);
//DotGfxUsageGraph usageIntfGraph(cd,FALSE,1);
//usageIntfGraph.writeGraph(Config::htmlOutputDir,FALSE);
//if (Config::verbatimHeaderFlag) cd->writeIncludeFile(*outputList);
}
}
}
}
}
}
...
@@ -4262,12 +4228,13 @@ void generateSearchIndex()
...
@@ -4262,12 +4228,13 @@ void generateSearchIndex()
err
(
"Error: Cannot open file %s for writing
\n
"
,
fileName
.
data
());
err
(
"Error: Cannot open file %s for writing
\n
"
,
fileName
.
data
());
}
}
//outputList->generateExternalIndex();
//outputList->generateExternalIndex();
outputList
->
pushGeneratorState
();
outputList
->
disableAllBut
(
OutputGenerator
::
Html
);
outputList
->
disableAllBut
(
OutputGenerator
::
Html
);
startFile
(
*
outputList
,
"header.html"
,
"Search Engine"
,
TRUE
);
startFile
(
*
outputList
,
"header.html"
,
"Search Engine"
,
TRUE
);
outputList
->
endPlainFile
();
outputList
->
endPlainFile
();
outputList
->
startPlainFile
(
"footer.html"
);
outputList
->
startPlainFile
(
"footer.html"
);
endFile
(
*
outputList
,
TRUE
);
endFile
(
*
outputList
,
TRUE
);
outputList
->
enableAll
();
outputList
->
popGeneratorState
();
}
}
}
}
...
@@ -5161,9 +5128,6 @@ int main(int argc,char **argv)
...
@@ -5161,9 +5128,6 @@ int main(int argc,char **argv)
msg
(
"Generating group documentation...
\n
"
);
msg
(
"Generating group documentation...
\n
"
);
generateGroupDocs
();
generateGroupDocs
();
//msg("Generating member group documentation...\n");
//generateMemberGroupDocs();
msg
(
"Generating namespace index...
\n
"
);
msg
(
"Generating namespace index...
\n
"
);
generateNamespaceDocs
();
generateNamespaceDocs
();
...
@@ -5186,6 +5150,7 @@ int main(int argc,char **argv)
...
@@ -5186,6 +5150,7 @@ int main(int argc,char **argv)
generateSearchIndex
();
generateSearchIndex
();
msg
(
"Generating style sheet...
\n
"
);
msg
(
"Generating style sheet...
\n
"
);
//outputList->enable(OutputGenerator::Latex);
outputList
->
writeStyleInfo
(
0
);
// write first part
outputList
->
writeStyleInfo
(
0
);
// write first part
outputList
->
disableAllBut
(
OutputGenerator
::
Latex
);
outputList
->
disableAllBut
(
OutputGenerator
::
Latex
);
parseText
(
*
outputList
,
parseText
(
*
outputList
,
...
...
src/filedef.cpp
View file @
3b8b750f
...
@@ -247,53 +247,8 @@ void FileDef::writeDocumentation(OutputList &ol)
...
@@ -247,53 +247,8 @@ void FileDef::writeDocumentation(OutputList &ol)
}
}
if
(
found
)
ol
.
endMemberList
();
if
(
found
)
ol
.
endMemberList
();
}
}
if
(
classList
->
count
()
>
0
)
{
classList
->
writeDeclaration
(
ol
);
ClassDef
*
cd
=
classList
->
first
();
bool
found
=
FALSE
;
while
(
cd
)
{
if
(
cd
->
name
().
find
(
'@'
)
==-
1
)
{
if
(
!
found
)
{
ol
.
startMemberHeader
();
parseText
(
ol
,
theTranslator
->
trCompounds
());
ol
.
endMemberHeader
();
ol
.
startMemberList
();
found
=
TRUE
;
}
ol
.
startMemberItem
(
FALSE
);
switch
(
cd
->
compoundType
())
{
case
ClassDef
:
:
Class
:
ol
.
writeString
(
"class"
);
break
;
case
ClassDef
:
:
Struct
:
ol
.
writeString
(
"struct"
);
break
;
case
ClassDef
:
:
Union
:
ol
.
writeString
(
"union"
);
break
;
case
ClassDef
:
:
Interface
:
ol
.
writeString
(
"interface"
);
break
;
case
ClassDef
:
:
Exception
:
ol
.
writeString
(
"exception"
);
break
;
}
ol
.
writeString
(
" "
);
ol
.
insertMemberAlign
();
if
(
cd
->
isLinkable
())
{
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
name
()
);
}
else
{
ol
.
startBold
();
ol
.
docify
(
cd
->
name
());
ol
.
endBold
();
}
ol
.
endMemberItem
(
FALSE
);
}
cd
=
classList
->
next
();
}
if
(
found
)
ol
.
endMemberList
();
}
/* write user defined member groups */
/* write user defined member groups */
MemberGroupListIterator
mgli
(
*
memberGroupList
);
MemberGroupListIterator
mgli
(
*
memberGroupList
);
...
@@ -309,8 +264,10 @@ void FileDef::writeDocumentation(OutputList &ol)
...
@@ -309,8 +264,10 @@ void FileDef::writeDocumentation(OutputList &ol)
//doc=doc.stripWhiteSpace();
//doc=doc.stripWhiteSpace();
//int bl=brief.length();
//int bl=brief.length();
//int dl=doc.length();
//int dl=doc.length();
if
(
!
briefDescription
().
isEmpty
()
||
!
documentation
().
isEmpty
()
||
if
((
!
briefDescription
().
isEmpty
()
&&
Config
::
repeatBriefFlag
)
||
startBodyLine
!=-
1
)
!
documentation
().
isEmpty
()
/* || startBodyLine!=-1 */
)
{
{
ol
.
writeRuler
();
ol
.
writeRuler
();
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
...
@@ -395,15 +352,15 @@ void FileDef::writeDocumentation(OutputList &ol)
...
@@ -395,15 +352,15 @@ void FileDef::writeDocumentation(OutputList &ol)
enumMembers
.
writeDocumentation
(
ol
,
name
());
enumMembers
.
writeDocumentation
(
ol
,
name
());
}
}
enumValMembers
.
countDocMembers
();
//
enumValMembers.countDocMembers();
if
(
enumValMembers
.
totalCount
()
>
0
)
//
if (enumValMembers.totalCount()>0 )
{
//
{
ol
.
writeRuler
();
//
ol.writeRuler();
ol
.
startGroupHeader
();
//
ol.startGroupHeader();
parseText
(
ol
,
theTranslator
->
trEnumerationValueDocumentation
());
//
parseText(ol,theTranslator->trEnumerationValueDocumentation());
ol
.
endGroupHeader
();
//
ol.endGroupHeader();
enumValMembers
.
writeDocumentation
(
ol
,
name
());
//
enumValMembers.writeDocumentation(ol,name());
}
//
}
funcMembers
.
countDocMembers
();
funcMembers
.
countDocMembers
();
if
(
funcMembers
.
totalCount
()
>
0
)
if
(
funcMembers
.
totalCount
()
>
0
)
...
...
src/groupdef.cpp
View file @
3b8b750f
...
@@ -188,45 +188,9 @@ void GroupDef::writeDocumentation(OutputList &ol)
...
@@ -188,45 +188,9 @@ void GroupDef::writeDocumentation(OutputList &ol)
}
}
ol
.
endMemberList
();
ol
.
endMemberList
();
}
}
if
(
classList
->
count
()
>
0
)
{
classList
->
writeDeclaration
(
ol
);
ClassDef
*
cd
=
classList
->
first
();
bool
found
=
FALSE
;
while
(
cd
)
{
if
(
!
found
)
{
ol
.
startMemberHeader
();
parseText
(
ol
,
theTranslator
->
trCompounds
());
ol
.
endMemberHeader
();
ol
.
startMemberList
();
found
=
TRUE
;
}
QCString
type
;
switch
(
cd
->
compoundType
())
{
case
ClassDef
:
:
Class
:
type
=
"class"
;
break
;
case
ClassDef
:
:
Struct
:
type
=
"struct"
;
break
;
case
ClassDef
:
:
Union
:
type
=
"union"
;
break
;
case
ClassDef
:
:
Interface
:
type
=
"interface"
;
break
;
case
ClassDef
:
:
Exception
:
type
=
"exception"
;
break
;
}
ol
.
startMemberItem
(
0
);
ol
.
docify
(
type
);
ol
.
insertMemberAlign
();
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
name
());
ol
.
endMemberItem
(
FALSE
);
if
(
!
cd
->
briefDescription
().
isEmpty
()
&&
Config
::
briefMemDescFlag
)
{
ol
.
startMemberDescription
();
parseDoc
(
ol
,
0
,
0
,
cd
->
briefDescription
());
ol
.
endMemberDescription
();
ol
.
newParagraph
();
}
cd
=
classList
->
next
();
}
if
(
found
)
ol
.
endMemberList
();
}
if
(
allMemberList
->
count
()
>
0
)
if
(
allMemberList
->
count
()
>
0
)
{
{
/* write user defined member groups */
/* write user defined member groups */
...
@@ -306,15 +270,15 @@ void GroupDef::writeDocumentation(OutputList &ol)
...
@@ -306,15 +270,15 @@ void GroupDef::writeDocumentation(OutputList &ol)
enumMembers
.
writeDocumentation
(
ol
,
name
());
enumMembers
.
writeDocumentation
(
ol
,
name
());
}
}
enumValMembers
.
countDocMembers
();
//
enumValMembers.countDocMembers();
if
(
enumValMembers
.
totalCount
()
>
0
)
//
if (enumValMembers.totalCount()>0 )
{
//
{
ol
.
writeRuler
();
//
ol.writeRuler();
ol
.
startGroupHeader
();
//
ol.startGroupHeader();
parseText
(
ol
,
theTranslator
->
trEnumerationValueDocumentation
());
//
parseText(ol,theTranslator->trEnumerationValueDocumentation());
ol
.
endGroupHeader
();
//
ol.endGroupHeader();
enumValMembers
.
writeDocumentation
(
ol
,
name
());
//
enumValMembers.writeDocumentation(ol,name());
}
//
}
funcMembers
.
countDocMembers
();
funcMembers
.
countDocMembers
();
if
(
funcMembers
.
totalCount
()
>
0
)
if
(
funcMembers
.
totalCount
()
>
0
)
...
...
src/htmlgen.cpp
View file @
3b8b750f
...
@@ -207,6 +207,9 @@ void HtmlGenerator::writeStyleInfo(int part)
...
@@ -207,6 +207,9 @@ void HtmlGenerator::writeStyleInfo(int part)
t
<<
"TD.md { background-color: #f2f2ff }"
<<
endl
;
t
<<
"TD.md { background-color: #f2f2ff }"
<<
endl
;
t
<<
"DIV.groupHeader { margin-left: 16; margin-top: 12; margin-bottom: 6; font-weight: bold }"
<<
endl
;
t
<<
"DIV.groupHeader { margin-left: 16; margin-top: 12; margin-bottom: 6; font-weight: bold }"
<<
endl
;
t
<<
"DIV.groupText { margin-left: 16; font-style: italic; font-size: smaller }"
<<
endl
;
t
<<
"DIV.groupText { margin-left: 16; font-style: italic; font-size: smaller }"
<<
endl
;
t
<<
"FONT.keyword { color: #008000 }"
<<
endl
;
t
<<
"FONT.comment { color: #800000 }"
<<
endl
;
t
<<
"FONT.preprocessor { color: #806020 }"
<<
endl
;
//t << "TD.groupLine { background-color: #3080ff }" << endl;
//t << "TD.groupLine { background-color: #3080ff }" << endl;
t
<<
endl
;
t
<<
endl
;
endPlainFile
();
endPlainFile
();
...
...
src/htmlgen.h
View file @
3b8b750f
...
@@ -227,6 +227,9 @@ class HtmlGenerator : public OutputGenerator
...
@@ -227,6 +227,9 @@ class HtmlGenerator : public OutputGenerator
void
startParameter
(
bool
first
);
void
startParameter
(
bool
first
);
void
endParameter
(
bool
last
);
void
endParameter
(
bool
last
);
void
startFontClass
(
const
char
*
s
)
{
t
<<
"<font class=
\"
"
<<
s
<<
"
\"
>"
;
}
void
endFontClass
()
{
t
<<
"</font>"
;
}
private
:
private
:
QCString
header
;
QCString
header
;
QCString
footer
;
QCString
footer
;
...
...
src/index.cpp
View file @
3b8b750f
...
@@ -828,15 +828,16 @@ void writeAlphabeticalClassList(OutputList &ol)
...
@@ -828,15 +828,16 @@ void writeAlphabeticalClassList(OutputList &ol)
void
writeAlphabeticalIndex
(
OutputList
&
ol
)
void
writeAlphabeticalIndex
(
OutputList
&
ol
)
{
{
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
if
(
annotatedClasses
==
0
)
return
;
if
(
annotatedClasses
==
0
)
return
;
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
startFile
(
ol
,
"classes.html"
,
"Alphabetical index"
);
startFile
(
ol
,
"classes.html"
,
"Alphabetical index"
);
startTitle
(
ol
,
0
);
startTitle
(
ol
,
0
);
parseText
(
ol
,
Config
::
projectName
+
" "
+
theTranslator
->
trCompoundIndex
());
parseText
(
ol
,
Config
::
projectName
+
" "
+
theTranslator
->
trCompoundIndex
());
endTitle
(
ol
,
0
,
0
);
endTitle
(
ol
,
0
,
0
);
writeAlphabeticalClassList
(
ol
);
writeAlphabeticalClassList
(
ol
);
endFile
(
ol
);
endFile
(
ol
);
ol
.
enableAll
();
ol
.
popGeneratorState
();
}
}
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
...
...
src/language.cpp
View file @
3b8b750f
...
@@ -27,6 +27,7 @@
...
@@ -27,6 +27,7 @@
#include "translator_es.h"
#include "translator_es.h"
#include "translator_fi.h"
#include "translator_fi.h"
#include "translator_ru.h"
#include "translator_ru.h"
#include "translator_hr.h"
#endif
#endif
#define L_EQUAL(a) !stricmp(langName,a)
#define L_EQUAL(a) !stricmp(langName,a)
...
@@ -80,6 +81,10 @@ bool setTranslator(const char *langName)
...
@@ -80,6 +81,10 @@ bool setTranslator(const char *langName)
{
{
theTranslator
=
new
TranslatorRussian
;
theTranslator
=
new
TranslatorRussian
;
}
}
else
if
(
L_EQUAL
(
"croatian"
))
{
theTranslator
=
new
TranslatorCroatian
;
}
#endif
#endif
else
// use the default language (i.e. english)
else
// use the default language (i.e. english)
{
{
...
...
src/latexgen.cpp
View file @
3b8b750f
...
@@ -195,7 +195,11 @@ void LatexGenerator::startIndexSection(IndexSections is)
...
@@ -195,7 +195,11 @@ void LatexGenerator::startIndexSection(IndexSections is)
{
{
if
(
theTranslator
->
latexBabelPackage
()
==
"russian"
)
if
(
theTranslator
->
latexBabelPackage
()
==
"russian"
)
{
{
t
<<
"
\\
usepackage{inputenc}
\n
"
;
#if defined(_WIN32)
t
<<
"
\\
usepackage[cp1251]{inputenc}
\n
"
;
#else
t
<<
"
\\
usepackage[koi8-r]{inputenc}
\n
"
;
#endif
}
}
t
<<
"
\\
usepackage["
<<
theTranslator
->
latexBabelPackage
()
<<
"]{babel}
\n
"
;
t
<<
"
\\
usepackage["
<<
theTranslator
->
latexBabelPackage
()
<<
"]{babel}
\n
"
;
}
}
...
...
src/latexgen.h
View file @
3b8b750f
...
@@ -221,6 +221,9 @@ class LatexGenerator : public OutputGenerator
...
@@ -221,6 +221,9 @@ class LatexGenerator : public OutputGenerator
void
endTextBlock
()
{}
void
endTextBlock
()
{}
void
startParameter
(
bool
)
{}
void
startParameter
(
bool
)
{}
void
endParameter
(
bool
)
{}
void
endParameter
(
bool
)
{}
void
startFontClass
(
const
char
*
)
{}
void
endFontClass
()
{}
private
:
private
:
LatexGenerator
(
const
LatexGenerator
&
);
LatexGenerator
(
const
LatexGenerator
&
);
...
...
src/mangen.h
View file @
3b8b750f
...
@@ -209,6 +209,9 @@ class ManGenerator : public OutputGenerator
...
@@ -209,6 +209,9 @@ class ManGenerator : public OutputGenerator
void
startParameter
(
bool
)
{}
void
startParameter
(
bool
)
{}
void
endParameter
(
bool
)
{}
void
endParameter
(
bool
)
{}
void
startFontClass
(
const
char
*
)
{}
void
endFontClass
()
{}
private
:
private
:
bool
firstCol
;
bool
firstCol
;
bool
paragraph
;
bool
paragraph
;
...
...
src/memberdef.cpp
View file @
3b8b750f
...
@@ -259,6 +259,7 @@ MemberDef::MemberDef(const char *t,const char *na,const char *a,const char *e,
...
@@ -259,6 +259,7 @@ MemberDef::MemberDef(const char *t,const char *na,const char *a,const char *e,
annMemb
=
0
;
annMemb
=
0
;
annUsed
=
FALSE
;
annUsed
=
FALSE
;
annShown
=
FALSE
;
annShown
=
FALSE
;
annEnumType
=
0
;
indDepth
=
0
;
indDepth
=
0
;
section
=
0
;
section
=
0
;
docEnumValues
=
FALSE
;
docEnumValues
=
FALSE
;
...
@@ -463,7 +464,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
...
@@ -463,7 +464,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
// name().data(),cd->name().data(),annScope,annMemb);
// name().data(),cd->name().data(),annScope,annMemb);
//}
//}
// hide members in an
n
onymous scopes
// hide members in anonymous scopes
// (they are displayed by there parent placeholder)
// (they are displayed by there parent placeholder)
if
(
annScope
)
return
;
if
(
annScope
)
return
;
// hide undocumented members unless overwritten by the configuration
// hide undocumented members unless overwritten by the configuration
...
@@ -535,16 +536,16 @@ void MemberDef::writeDeclaration(OutputList &ol,
...
@@ -535,16 +536,16 @@ void MemberDef::writeDeclaration(OutputList &ol,
bool
hasHtmlHelp
=
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
;
bool
hasHtmlHelp
=
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
;
if
(
hasHtmlHelp
)
htmlHelp
=
HtmlHelp
::
getInstance
();
if
(
hasHtmlHelp
)
htmlHelp
=
HtmlHelp
::
getInstance
();
// search for the last an
n
onymous scope in the member type
// search for the last anonymous scope in the member type
ClassDef
*
annoClassDef
=
0
;
ClassDef
*
annoClassDef
=
0
;
//while (i!=-1 && cname.find(type.mid(i,l))!=-1)
//while (i!=-1 && cname.find(type.mid(i,l))!=-1)
//{
//{
// i=r.match(type,i+l,&l);
// i=r.match(type,i+l,&l);
//}
//}
int
il
=
i
-
1
,
ir
=
i
+
l
;
int
il
=
i
-
1
,
ir
=
i
+
l
;
if
(
i
!=-
1
)
// found an
n
onymous scope in type
if
(
i
!=-
1
)
// found anonymous scope in type
{
{
// extract an
n
onymous scope
// extract anonymous scope
while
(
il
>=
0
&&
(
isId
(
type
.
at
(
il
))
||
type
.
at
(
il
)
==
':'
||
type
.
at
(
il
)
==
'@'
))
il
--
;
while
(
il
>=
0
&&
(
isId
(
type
.
at
(
il
))
||
type
.
at
(
il
)
==
':'
||
type
.
at
(
il
)
==
'@'
))
il
--
;
if
(
il
>
0
)
il
++
;
if
(
il
>
0
)
il
++
;
while
(
ir
<
(
int
)
type
.
length
()
&&
(
isId
(
type
.
at
(
ir
))
||
type
.
at
(
ir
)
==
':'
||
type
.
at
(
ir
)
==
'@'
))
ir
++
;
while
(
ir
<
(
int
)
type
.
length
()
&&
(
isId
(
type
.
at
(
ir
))
||
type
.
at
(
ir
)
==
':'
||
type
.
at
(
ir
)
==
'@'
))
ir
++
;
...
@@ -569,7 +570,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
...
@@ -569,7 +570,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
}
}
// start a new member declaration
// start a new member declaration
ol
.
startMemberItem
(
/* gId!=-1,*/
(
annoClassDef
||
annMemb
)
?
1
:
0
);
ol
.
startMemberItem
(
(
annoClassDef
||
annMemb
||
annEnumType
)
?
1
:
0
);
// If there is no detailed description we need to write the anchor here.
// If there is no detailed description we need to write the anchor here.
bool
detailsVisible
=
detailsAreVisible
();
bool
detailsVisible
=
detailsAreVisible
();
...
@@ -605,12 +606,12 @@ void MemberDef::writeDeclaration(OutputList &ol,
...
@@ -605,12 +606,12 @@ void MemberDef::writeDeclaration(OutputList &ol,
writeTemplatePrefix
(
ol
,
tArgList
,
FALSE
);
writeTemplatePrefix
(
ol
,
tArgList
,
FALSE
);
}
}
if
(
i
!=-
1
)
//
render member with annonymous componound as result type.
if
(
i
!=-
1
)
//
member has an anonymous type
{
{
//printf("annoClassDef=%p annMemb=%p scopeName=`%s' an
n
onymous=`%s'\n",
//printf("annoClassDef=%p annMemb=%p scopeName=`%s' anonymous=`%s'\n",
// annoClassDef,annMemb,cname.data(),type.mid(i,l).data());
// annoClassDef,annMemb,cname.data(),type.mid(i,l).data());
if
(
annoClassDef
)
if
(
annoClassDef
)
// type is an anonymous compound
{
{
//printf("class found!\n");
//printf("class found!\n");
annoClassDef
->
writeDeclaration
(
ol
,
annMemb
,
inGroup
);
annoClassDef
->
writeDeclaration
(
ol
,
annMemb
,
inGroup
);
...
@@ -633,8 +634,17 @@ void MemberDef::writeDeclaration(OutputList &ol,
...
@@ -633,8 +634,17 @@ void MemberDef::writeDeclaration(OutputList &ol,
}
}
else
else
{
{
type
=
type
.
left
(
i
)
+
" { ... } "
+
type
.
right
(
type
.
length
()
-
i
-
l
);
if
(
getAnonymousEnumType
())
// type is an anonymous enum
linkifyText
(
ol
,
cname
,
name
(),
type
,
TRUE
);
{
linkifyText
(
ol
,
cname
,
name
(),
type
.
left
(
i
),
TRUE
);
ol
+=*
getAnonymousEnumType
()
->
enumDecl
();
linkifyText
(
ol
,
cname
,
name
(),
type
.
right
(
type
.
length
()
-
i
-
l
),
TRUE
);
}
else
{
type
=
type
.
left
(
i
)
+
" { ... } "
+
type
.
right
(
type
.
length
()
-
i
-
l
);
linkifyText
(
ol
,
cname
,
name
(),
type
,
TRUE
);
}
}
}
}
}
else
else
...
@@ -749,7 +759,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
...
@@ -749,7 +759,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
ol
.
endDoxyAnchor
();
ol
.
endDoxyAnchor
();
}
}
ol
.
endMemberItem
(
annoClassDef
!=
0
&&
indDepth
==
0
);
ol
.
endMemberItem
(
(
annoClassDef
!=
0
&&
indDepth
==
0
)
||
annEnumType
);
//ol.endMemberItem(gId!=-1,gFile,gHeader,annoClassDef || annMemb);
//ol.endMemberItem(gId!=-1,gFile,gHeader,annoClassDef || annMemb);
// write brief description
// write brief description
...
@@ -775,7 +785,9 @@ void MemberDef::writeDeclaration(OutputList &ol,
...
@@ -775,7 +785,9 @@ void MemberDef::writeDeclaration(OutputList &ol,
warnIfUndocumented
();
warnIfUndocumented
();
}
}
/*! Writes the "detailed documentation" section of this member to
* all active output formats.
*/
void
MemberDef
::
writeDocumentation
(
MemberList
*
ml
,
OutputList
&
ol
,
void
MemberDef
::
writeDocumentation
(
MemberList
*
ml
,
OutputList
&
ol
,
const
char
*
scopeName
)
const
char
*
scopeName
)
{
{
...
@@ -783,37 +795,52 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
...
@@ -783,37 +795,52 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
bool
hasDocs
=
detailsAreVisible
();
bool
hasDocs
=
detailsAreVisible
();
//printf("MemberDef::writeDocumentation(): type=`%s' def=`%s'\n",type.data(),definition());
//printf("MemberDef::writeDocumentation(): type=`%s' def=`%s'\n",type.data(),definition());
if
(
if
(
(
/*memberType()==m &&*/
// filter member type
Config
::
extractAllFlag
||
hasDocs
(
Config
::
extractAllFlag
||
hasDocs
)
||
/* member is part of an anonymous scope that is the type of
/*&& groupId()==-1 */
// not in a group
* another member in the list.
)
||
/* member is part of an annonymous scope that is the type of
*/
* another member in the list.
*/
(
!
hasDocs
&&
!
briefDescription
().
isEmpty
()
&&
annUsed
)
(
!
hasDocs
&&
!
briefDescription
().
isEmpty
()
&&
annUsed
)
)
)
{
{
// get definition. TODO: make a method of this
NamespaceDef
*
nd
=
getNamespace
();
NamespaceDef
*
nd
=
getNamespace
();
ClassDef
*
cd
=
memberClass
();
ClassDef
*
cd
=
memberClass
();
FileDef
*
fd
=
getFileDef
();
FileDef
*
fd
=
getFileDef
();
Definition
*
d
=
0
;
Definition
*
d
=
0
;
if
(
cd
)
d
=
cd
;
else
if
(
nd
)
d
=
nd
;
else
d
=
fd
;
if
(
cd
)
d
=
cd
;
else
if
(
nd
)
d
=
nd
;
else
d
=
fd
;
ASSERT
(
d
!=
0
);
QCString
cname
=
d
->
name
();
QCString
cname
=
d
->
name
();
QCString
cfname
=
d
->
getOutputFileBase
();
QCString
cfname
=
d
->
getOutputFileBase
();
// get member name
// get member name
QCString
doxyName
=
name
().
copy
();
QCString
doxyName
=
name
().
copy
();
// prepend scope if there is any
// prepend scope if there is any
. TODO: make this optional for C only docs
if
(
scopeName
)
doxyName
.
prepend
((
QCString
)
scopeName
+
"::"
);
if
(
scopeName
)
doxyName
.
prepend
((
QCString
)
scopeName
+
"::"
);
QCString
def
=
definition
();
QCString
def
=
definition
();
if
(
isEnumerate
())
def
.
prepend
(
"enum "
);
if
(
isEnumerate
())
MemberDef
*
smd
;
{
if
(
isEnumValue
()
&&
def
[
0
]
==
'@'
)
def
=
def
.
right
(
def
.
length
()
-
2
);
if
(
name
().
at
(
0
)
==
'@'
)
int
i
=
0
,
l
,
dummy
;
{
def
=
"anonymous enum"
;
}
else
{
def
.
prepend
(
"enum "
);
}
}
int
i
=
0
,
l
;
static
QRegExp
r
(
"@[0-9]+"
);
static
QRegExp
r
(
"@[0-9]+"
);
if
(
isEnumerate
()
&&
r
.
match
(
def
,
0
,
&
l
)
!=-
1
)
return
;
if
(
isEnumValue
()
&&
(
smd
=
getEnumScope
())
//ENUM
&&
r
.
match
(
smd
->
name
(),
0
,
&
dummy
)
==-
1
)
return
;
if
(
isEnumValue
())
return
;
//if (isEnumValue() && def[0]=='@') def = def.right(def.length()-2);
//int dummy;
//if (isEnumerate() && r.match(def,0,&l)!=-1) return;
//MemberDef *smd;
//if (isEnumValue() && (smd = getEnumScope())
// && r.match(smd->name(),0,&dummy)==-1) return;
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
...
@@ -823,7 +850,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
...
@@ -823,7 +850,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
if
((
isVariable
()
||
isTypedef
())
&&
(
i
=
r
.
match
(
def
,
0
,
&
l
))
!=-
1
)
if
((
isVariable
()
||
isTypedef
())
&&
(
i
=
r
.
match
(
def
,
0
,
&
l
))
!=-
1
)
{
{
// find enum type an insert it in the definition
// find enum type an
d
insert it in the definition
MemberListIterator
vmli
(
*
ml
);
MemberListIterator
vmli
(
*
ml
);
MemberDef
*
vmd
;
MemberDef
*
vmd
;
bool
found
=
FALSE
;
bool
found
=
FALSE
;
...
@@ -840,7 +867,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
...
@@ -840,7 +867,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
linkifyText
(
ol
,
scopeName
,
name
(),
def
.
left
(
i
));
linkifyText
(
ol
,
scopeName
,
name
(),
def
.
left
(
i
));
ol
+=*
vmd
->
enumDecl
();
ol
+=*
vmd
->
enumDecl
();
linkifyText
(
ol
,
scopeName
,
name
(),
def
.
right
(
def
.
length
()
-
i
-
l
));
linkifyText
(
ol
,
scopeName
,
name
(),
def
.
right
(
def
.
length
()
-
i
-
l
));
//ol.endDoxyAnchor();
found
=
TRUE
;
found
=
TRUE
;
}
}
...
@@ -854,7 +880,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
...
@@ -854,7 +880,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
{
{
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
());
htmlHelp
->
addIndexItem
(
cname
,
name
(),
cfname
,
anchor
());
}
}
// strip an
n
onymous compound names from definition
// strip anonymous compound names from definition
int
si
=
def
.
find
(
' '
),
pi
,
ei
=
i
+
l
;
int
si
=
def
.
find
(
' '
),
pi
,
ei
=
i
+
l
;
if
(
si
==-
1
)
si
=
0
;
if
(
si
==-
1
)
si
=
0
;
while
((
pi
=
r
.
match
(
def
,
i
+
l
,
&
l
))
!=-
1
)
ei
=
i
=
pi
+
l
;
while
((
pi
=
r
.
match
(
def
,
i
+
l
,
&
l
))
!=-
1
)
ei
=
i
=
pi
+
l
;
...
@@ -1329,6 +1355,7 @@ bool MemberDef::detailsAreVisible() const
...
@@ -1329,6 +1355,7 @@ bool MemberDef::detailsAreVisible() const
void
MemberDef
::
setEnumDecl
(
OutputList
&
ed
)
void
MemberDef
::
setEnumDecl
(
OutputList
&
ed
)
{
{
enumDeclList
=
new
OutputList
(
&
ed
);
enumDeclList
=
new
OutputList
(
&
ed
);
*
enumDeclList
+=
ed
;
}
}
bool
MemberDef
::
hasDocumentation
()
bool
MemberDef
::
hasDocumentation
()
...
...
src/memberdef.h
View file @
3b8b750f
...
@@ -124,15 +124,17 @@ class MemberDef : public Definition
...
@@ -124,15 +124,17 @@ class MemberDef : public Definition
// enumeration specific members
// enumeration specific members
void
insertEnumField
(
MemberDef
*
md
);
void
insertEnumField
(
MemberDef
*
md
);
void
setEnumScope
(
MemberDef
*
md
)
{
enumScope
=
md
;
}
void
setEnumScope
(
MemberDef
*
md
)
{
enumScope
=
md
;
}
MemberDef
*
getEnumScope
()
const
{
return
enumScope
;
}
MemberDef
*
getEnumScope
()
const
{
return
enumScope
;
}
void
setEnumDecl
(
OutputList
&
ed
);
void
setEnumDecl
(
OutputList
&
ed
);
void
setEnumUsed
()
{
eUsed
=
TRUE
;
}
void
setEnumUsed
()
{
eUsed
=
TRUE
;
}
bool
enumUsed
()
const
{
return
eUsed
;
}
bool
enumUsed
()
const
{
return
eUsed
;
}
OutputList
*
enumDecl
()
const
{
return
enumDeclList
;
}
OutputList
*
enumDecl
()
const
{
return
enumDeclList
;
}
MemberList
*
enumFieldList
()
{
return
enumFields
;
}
MemberList
*
enumFieldList
()
{
return
enumFields
;
}
void
setDocumentedEnumValues
(
bool
value
)
{
docEnumValues
=
value
;
}
void
setDocumentedEnumValues
(
bool
value
)
{
docEnumValues
=
value
;
}
bool
hasDocumentedEnumValues
()
const
{
return
docEnumValues
;
}
bool
hasDocumentedEnumValues
()
const
{
return
docEnumValues
;
}
void
setAnonymousEnumType
(
MemberDef
*
md
)
{
annEnumType
=
md
;
}
MemberDef
*
getAnonymousEnumType
()
{
return
annEnumType
;
}
// example related members
// example related members
bool
addExample
(
const
char
*
anchor
,
const
char
*
name
,
const
char
*
file
);
bool
addExample
(
const
char
*
anchor
,
const
char
*
name
,
const
char
*
file
);
...
@@ -199,6 +201,7 @@ class MemberDef : public Definition
...
@@ -199,6 +201,7 @@ class MemberDef : public Definition
FileDef
*
fileDec
;
// member of file declaration
FileDef
*
fileDec
;
// member of file declaration
MemberDef
*
redefines
;
// the member that is redefined by this one
MemberDef
*
redefines
;
// the member that is redefined by this one
MemberDef
*
enumScope
;
// the enclosing scope, if this is an enum field
MemberDef
*
enumScope
;
// the enclosing scope, if this is an enum field
MemberDef
*
annEnumType
;
// the annonymous enum that is the type of this member
MemberList
*
redefinedBy
;
// the list of members that redefine this one
MemberList
*
redefinedBy
;
// the list of members that redefine this one
MemberDef
*
memDef
;
// member definition for this declaration
MemberDef
*
memDef
;
// member definition for this declaration
MemberDef
*
memDec
;
// member declaration for this definition
MemberDef
*
memDec
;
// member declaration for this definition
...
...
src/memberlist.cpp
View file @
3b8b750f
...
@@ -304,19 +304,25 @@ void MemberList::writePlainDeclarations(OutputList &ol,
...
@@ -304,19 +304,25 @@ void MemberList::writePlainDeclarations(OutputList &ol,
ol
.
startMemberList
();
ol
.
startMemberList
();
}
}
MemberListIterator
mli
(
*
this
);
MemberListIterator
mli
(
*
this
);
for
(
;
(
md
=
mli
.
current
())
;
++
mli
)
for
(
;
(
md
=
mli
.
current
())
;
++
mli
)
// iterate through the members
{
{
// see if member is hidden by protection
if
(
md
->
protection
()
==
Private
&&
!
Config
::
extractPrivateFlag
)
continue
;
if
(
md
->
protection
()
==
Private
&&
!
Config
::
extractPrivateFlag
)
continue
;
/*bool hasDocs=md->hasDocumentation();*/
QCString
type
=
md
->
typeString
();
QCString
type
=
md
->
typeString
();
type
=
type
.
stripWhiteSpace
();
type
=
type
.
stripWhiteSpace
();
// TODO: is this really needed?
// filter out enums that are in a group iff inGroup holds
if
(
md
->
isEnumerate
()
&&
inGroup
==
(
md
->
getMemberGroup
()
!=
0
)
/*&& (hasDocs || !Config::hideMemberFlag)*/
)
if
(
md
->
isEnumerate
()
&&
inGroup
==
(
md
->
getMemberGroup
()
!=
0
)
/*&& (hasDocs || !Config::hideMemberFlag)*/
)
{
{
if
(
!
Config
::
hideMemberFlag
||
// do not hide undocumented members or
// filter out invisible enums
!
md
->
documentation
().
isEmpty
()
||
// member has detailed descr. or
if
(
!
Config
::
hideMemberFlag
||
// do not hide undocumented members or
md
->
hasDocumentedEnumValues
()
||
// member has documented enum vales.
!
md
->
documentation
().
isEmpty
()
||
// member has detailed descr. or
Config
::
briefMemDescFlag
||
// brief descr. is shown or
md
->
hasDocumentedEnumValues
()
||
// member has documented enum vales.
Config
::
repeatBriefFlag
// brief descr. is repeated.
(
!
md
->
briefDescription
().
isEmpty
()
&&
Config
::
briefMemDescFlag
// brief descr. is shown or
)
)
)
{
{
OutputList
typeDecl
(
&
ol
);
OutputList
typeDecl
(
&
ol
);
...
@@ -325,15 +331,6 @@ void MemberList::writePlainDeclarations(OutputList &ol,
...
@@ -325,15 +331,6 @@ void MemberList::writePlainDeclarations(OutputList &ol,
if
(
i
!=-
1
)
name
=
name
.
right
(
name
.
length
()
-
i
-
2
);
// strip scope
if
(
i
!=-
1
)
name
=
name
.
right
(
name
.
length
()
-
i
-
2
);
// strip scope
if
(
name
[
0
]
!=
'@'
)
// not an anonymous enum
if
(
name
[
0
]
!=
'@'
)
// not an anonymous enum
{
{
//if (Config::extractAllFlag ||
// (md->briefDescription().isEmpty() || !Config::briefMemDescFlag) &&
// (!md->documentation().isEmpty() || md->hasDocumentedEnumValues() ||
// (!md->briefDescription().isEmpty() &&
// !Config::briefMemDescFlag &&
// Config::repeatBriefFlag
// )
// )
// )
if
(
md
->
isLinkableInProject
()
||
md
->
hasDocumentedEnumValues
())
if
(
md
->
isLinkableInProject
()
||
md
->
hasDocumentedEnumValues
())
{
{
if
(
!
Config
::
genTagFile
.
isEmpty
())
if
(
!
Config
::
genTagFile
.
isEmpty
())
...
@@ -400,23 +397,29 @@ void MemberList::writePlainDeclarations(OutputList &ol,
...
@@ -400,23 +397,29 @@ void MemberList::writePlainDeclarations(OutputList &ol,
for
(
;
(
vmd
=
vmli
.
current
())
;
++
vmli
)
for
(
;
(
vmd
=
vmli
.
current
())
;
++
vmli
)
{
{
QCString
vtype
=
vmd
->
typeString
();
QCString
vtype
=
vmd
->
typeString
();
if
((
vtype
.
find
(
name
))
!=-
1
)
enumVars
++
;
if
((
vtype
.
find
(
name
))
!=-
1
)
{
enumVars
++
;
vmd
->
setAnonymousEnumType
(
md
);
}
}
}
}
}
if
(
enumVars
==
0
)
// no variable of this enum type
// if this is an annoymous enum and there are variable of this
// enum type (i.e. enumVars>0), then we do not show the enum here.
if
(
enumVars
==
0
)
// show enum here
{
{
ol
.
startMemberItem
(
0
);
ol
.
startMemberItem
(
0
);
ol
.
writeString
(
"enum "
);
ol
.
writeString
(
"enum "
);
ol
.
insertMemberAlign
();
ol
.
insertMemberAlign
();
ol
+=
typeDecl
;
ol
+=
typeDecl
;
// append the enum values.
ol
.
endMemberItem
(
FALSE
);
ol
.
endMemberItem
(
FALSE
);
//QCString brief=md->briefDescription();
//brief=brief.stripWhiteSpace();
if
(
!
md
->
briefDescription
().
isEmpty
()
&&
Config
::
briefMemDescFlag
)
if
(
!
md
->
briefDescription
().
isEmpty
()
&&
Config
::
briefMemDescFlag
)
{
{
ol
.
startMemberDescription
();
ol
.
startMemberDescription
();
parseDoc
(
ol
,
cd
?
cd
->
name
().
data
()
:
0
,
parseDoc
(
ol
,
md
->
name
().
data
(),
md
->
briefDescription
());
cd
?
cd
->
name
().
data
()
:
0
,
md
->
name
().
data
(),
md
->
briefDescription
()
);
if
(
!
md
->
documentation
().
isEmpty
()
||
md
->
hasDocumentedEnumValues
())
if
(
!
md
->
documentation
().
isEmpty
()
||
md
->
hasDocumentedEnumValues
())
{
{
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
...
@@ -429,9 +432,6 @@ void MemberList::writePlainDeclarations(OutputList &ol,
...
@@ -429,9 +432,6 @@ void MemberList::writePlainDeclarations(OutputList &ol,
ol
.
enableAll
();
ol
.
enableAll
();
}
}
ol
.
endMemberDescription
();
ol
.
endMemberDescription
();
//ol.disable(OutputGenerator::Man);
//ol.newParagraph();
//ol.enable(OutputGenerator::Man);
}
}
}
}
md
->
warnIfUndocumented
();
md
->
warnIfUndocumented
();
...
...
src/namespacedef.cpp
View file @
3b8b750f
...
@@ -148,59 +148,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
...
@@ -148,59 +148,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
ol
.
endTextBlock
();
ol
.
endTextBlock
();
ol
.
startMemberSections
();
ol
.
startMemberSections
();
if
(
classList
->
count
()
>
0
)
classList
->
writeDeclaration
(
ol
);
{
ClassDef
*
cd
=
classList
->
first
();
bool
found
=
FALSE
;
while
(
cd
)
{
if
(
cd
->
name
().
find
(
'@'
)
==-
1
)
{
if
(
!
found
)
{
ol
.
startMemberHeader
();
parseText
(
ol
,
theTranslator
->
trCompounds
());
ol
.
endMemberHeader
();
ol
.
startMemberList
();
found
=
TRUE
;
}
QCString
clName
=
cd
->
name
().
copy
();
if
(
clName
.
left
(
name
().
length
()
+
2
)
==
name
()
+
"::"
)
{
clName
=
clName
.
right
(
clName
.
length
()
-
name
().
length
()
-
2
);
}
ol
.
startMemberItem
(
0
);
switch
(
cd
->
compoundType
())
{
case
ClassDef
:
:
Class
:
ol
.
writeString
(
"class"
);
break
;
case
ClassDef
:
:
Struct
:
ol
.
writeString
(
"struct"
);
break
;
case
ClassDef
:
:
Union
:
ol
.
writeString
(
"union"
);
break
;
case
ClassDef
:
:
Interface
:
ol
.
writeString
(
"interface"
);
break
;
case
ClassDef
:
:
Exception
:
ol
.
writeString
(
"exception"
);
break
;
}
ol
.
writeString
(
" "
);
ol
.
insertMemberAlign
();
if
(
cd
->
isLinkable
())
{
ol
.
writeObjectLink
(
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
clName
);
}
else
{
ol
.
startBold
();
ol
.
docify
(
clName
);
ol
.
endBold
();
}
ol
.
endMemberItem
(
FALSE
);
}
cd
=
classList
->
next
();
}
if
(
found
)
ol
.
endMemberList
();
}
/* write user defined member groups */
/* write user defined member groups */
MemberGroupListIterator
mgli
(
*
memberGroupList
);
MemberGroupListIterator
mgli
(
*
memberGroupList
);
...
@@ -213,7 +161,8 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
...
@@ -213,7 +161,8 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
allMemberList
.
writeDeclarations
(
ol
,
0
,
this
,
0
,
0
,
0
,
0
);
allMemberList
.
writeDeclarations
(
ol
,
0
,
this
,
0
,
0
,
0
,
0
);
ol
.
endMemberSections
();
ol
.
endMemberSections
();
if
(
!
briefDescription
().
isEmpty
()
||
!
documentation
().
isEmpty
())
if
((
!
briefDescription
().
isEmpty
()
&&
Config
::
repeatBriefFlag
)
||
!
documentation
().
isEmpty
())
{
{
ol
.
writeRuler
();
ol
.
writeRuler
();
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
...
@@ -281,15 +230,15 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
...
@@ -281,15 +230,15 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
enumMembers
.
writeDocumentation
(
ol
,
name
());
enumMembers
.
writeDocumentation
(
ol
,
name
());
}
}
enumValMembers
.
countDocMembers
();
//
enumValMembers.countDocMembers();
if
(
enumValMembers
.
totalCount
()
>
0
)
//
if ( enumValMembers.totalCount()>0 )
{
//
{
ol
.
writeRuler
();
//
ol.writeRuler();
ol
.
startGroupHeader
();
//
ol.startGroupHeader();
parseText
(
ol
,
theTranslator
->
trEnumerationValueDocumentation
());
//
parseText(ol,theTranslator->trEnumerationValueDocumentation());
ol
.
endGroupHeader
();
//
ol.endGroupHeader();
enumValMembers
.
writeDocumentation
(
ol
,
name
());
//
enumValMembers.writeDocumentation(ol,name());
}
//
}
funcMembers
.
countDocMembers
();
funcMembers
.
countDocMembers
();
if
(
funcMembers
.
totalCount
()
>
0
)
if
(
funcMembers
.
totalCount
()
>
0
)
...
...
src/outputgen.h
View file @
3b8b750f
...
@@ -213,6 +213,9 @@ class OutputGenerator
...
@@ -213,6 +213,9 @@ class OutputGenerator
virtual
void
startParameter
(
bool
)
=
0
;
virtual
void
startParameter
(
bool
)
=
0
;
virtual
void
endParameter
(
bool
)
=
0
;
virtual
void
endParameter
(
bool
)
=
0
;
virtual
void
startFontClass
(
const
char
*
)
=
0
;
virtual
void
endFontClass
()
=
0
;
void
clear
()
{
b
.
close
();
a
.
resize
(
0
);
b
.
setBuffer
(
a
);
void
clear
()
{
b
.
close
();
a
.
resize
(
0
);
b
.
setBuffer
(
a
);
b
.
open
(
IO_WriteOnly
);
t
.
setDevice
(
&
b
);
}
b
.
open
(
IO_WriteOnly
);
t
.
setDevice
(
&
b
);
}
...
...
src/outputlist.h
View file @
3b8b750f
...
@@ -369,6 +369,11 @@ class OutputList
...
@@ -369,6 +369,11 @@ class OutputList
void
endParameter
(
bool
last
)
void
endParameter
(
bool
last
)
{
forall
(
&
OutputGenerator
::
endParameter
,
last
);
}
{
forall
(
&
OutputGenerator
::
endParameter
,
last
);
}
void
startFontClass
(
const
char
*
c
)
{
forall
(
&
OutputGenerator
::
startFontClass
,
c
);
}
void
endFontClass
()
{
forall
(
&
OutputGenerator
::
endFontClass
);
}
private
:
private
:
void
debug
();
void
debug
();
void
clear
();
void
clear
();
...
...
src/pre.l
View file @
3b8b750f
...
@@ -125,7 +125,15 @@ static void decrLevel()
...
@@ -125,7 +125,15 @@ static void decrLevel()
static bool otherCaseDone()
static bool otherCaseDone()
{
{
return g_levelGuard[g_level-1];
if (g_level==0)
{
err("Error: Found an #else without a preceding #if.\n");
return TRUE;
}
else
{
return g_levelGuard[g_level-1];
}
}
}
static void setCaseDone(bool value)
static void setCaseDone(bool value)
...
@@ -1079,7 +1087,7 @@ BN [ \t\r\n]
...
@@ -1079,7 +1087,7 @@ BN [ \t\r\n]
g_guardExpr.resize(0);
g_guardExpr.resize(0);
BEGIN(Guard);
BEGIN(Guard);
}
}
<Command>
"elif"/[ \t(]
{
<Command>
("elif"|"else"{B}*"if")/[ \t(]
{
if (!otherCaseDone())
if (!otherCaseDone())
{
{
g_guardExpr.resize(0);
g_guardExpr.resize(0);
...
@@ -1107,7 +1115,7 @@ BN [ \t\r\n]
...
@@ -1107,7 +1115,7 @@ BN [ \t\r\n]
<Command>"undef"{B}+ {
<Command>"undef"{B}+ {
BEGIN(Ung_defName);
BEGIN(Ung_defName);
}
}
<Command>
"elif"/[ \t(]
{
<Command>
("elif"|"else"{B}*"if")/[ \t(]
{
if (!otherCaseDone())
if (!otherCaseDone())
{
{
g_guardExpr.resize(0);
g_guardExpr.resize(0);
...
@@ -1208,7 +1216,7 @@ BN [ \t\r\n]
...
@@ -1208,7 +1216,7 @@ BN [ \t\r\n]
BEGIN(Start);
BEGIN(Start);
}
}
}
}
<SkipCommand>
"elif"
/[ \t(] {
<SkipCommand>
("elif"|"else"{B}*"if")
/[ \t(] {
if (g_ifcount==0)
if (g_ifcount==0)
{
{
if (!otherCaseDone())
if (!otherCaseDone())
...
@@ -1693,6 +1701,7 @@ void preprocessFile(const char *fileName,BufStr &output)
...
@@ -1693,6 +1701,7 @@ void preprocessFile(const char *fileName,BufStr &output)
char *defStr = Config::predefined.first();
char *defStr = Config::predefined.first();
while (defStr)
while (defStr)
{
{
//printf("Predefined: `%s'\n",defStr);
QCString ds = defStr;
QCString ds = defStr;
int i_equals=ds.find('=');
int i_equals=ds.find('=');
int i_obrace=ds.find('(');
int i_obrace=ds.find('(');
...
...
src/rtfgen.cpp
View file @
3b8b750f
...
@@ -528,41 +528,44 @@ void RTFGenerator::endIndexSection(IndexSections is)
...
@@ -528,41 +528,44 @@ void RTFGenerator::endIndexSection(IndexSections is)
break
;
break
;
case
isMainPage
:
case
isMainPage
:
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
t
<<
"{
\\
tc
\\
v "
<<
theTranslator
->
trMainPage
()
<<
"}"
<<
endl
;
t
<<
"{
\\
field
\\
fldedit{
\\
*
\\
fldinst INCLUDETEXT
\"
index.rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
t
<<
"{
\\
field
\\
fldedit{
\\
*
\\
fldinst INCLUDETEXT
\"
index.rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
break
;
break
;
case
isModuleIndex
:
case
isModuleIndex
:
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
t
<<
"{
\\
tc
\\
v "
<<
theTranslator
->
trModuleIndex
()
<<
"}"
<<
endl
;
t
<<
"{
\\
field
\\
fldedit{
\\
*
\\
fldinst INCLUDETEXT
\"
modules.rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
t
<<
"{
\\
field
\\
fldedit{
\\
*
\\
fldinst INCLUDETEXT
\"
modules.rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
break
;
break
;
case
isNamespaceIndex
:
case
isNamespaceIndex
:
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
t
<<
"{
\\
tc
\\
v "
<<
theTranslator
->
trNamespaceIndex
()
<<
"}"
<<
endl
;
t
<<
"{
\\
field
\\
fldedit{
\\
*
\\
fldinst INCLUDETEXT
\"
namespaces.rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
t
<<
"{
\\
field
\\
fldedit{
\\
*
\\
fldinst INCLUDETEXT
\"
namespaces.rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
break
;
break
;
case
isClassHierarchyIndex
:
case
isClassHierarchyIndex
:
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
t
<<
"{
\\
tc
\\
v
Hierarchical Index}"
<<
endl
;
;
t
<<
"{
\\
tc
\\
v
"
<<
theTranslator
->
trHierarchicalIndex
()
<<
"}"
<<
endl
;
t
<<
"{
\\
field
\\
fldedit{
\\
*
\\
fldinst INCLUDETEXT
\"
hierarchy.rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
t
<<
"{
\\
field
\\
fldedit{
\\
*
\\
fldinst INCLUDETEXT
\"
hierarchy.rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
break
;
break
;
case
isCompoundIndex
:
case
isCompoundIndex
:
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
t
<<
"{
\\
tc
\\
v
Compound Index}"
<<
endl
;
;
t
<<
"{
\\
tc
\\
v
"
<<
theTranslator
->
trCompoundIndex
()
<<
"}"
<<
endl
;
t
<<
"{
\\
field
\\
fldedit{
\\
*
\\
fldinst INCLUDETEXT
\"
annotated.rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
t
<<
"{
\\
field
\\
fldedit{
\\
*
\\
fldinst INCLUDETEXT
\"
annotated.rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
break
;
break
;
case
isFileIndex
:
case
isFileIndex
:
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
t
<<
"{
\\
tc
\\
v
File Index}"
<<
endl
;
;
t
<<
"{
\\
tc
\\
v
"
<<
theTranslator
->
trFileIndex
()
<<
"}"
<<
endl
;
t
<<
"{
\\
field
\\
fldedit{
\\
*
\\
fldinst INCLUDETEXT
\"
files.rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
t
<<
"{
\\
field
\\
fldedit{
\\
*
\\
fldinst INCLUDETEXT
\"
files.rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
break
;
break
;
case
isPageIndex
:
case
isPageIndex
:
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
t
<<
"{
\\
tc
\\
v
Page Index}"
<<
endl
;
;
t
<<
"{
\\
tc
\\
v
"
<<
theTranslator
->
trPageIndex
()
<<
"}"
<<
endl
;
t
<<
"{
\\
field
\\
fldedit{
\\
*
\\
fldinst INCLUDETEXT
\"
pages.rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
t
<<
"{
\\
field
\\
fldedit{
\\
*
\\
fldinst INCLUDETEXT
\"
pages.rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
break
;
break
;
case
isModuleDocumentation
:
case
isModuleDocumentation
:
{
{
GroupDef
*
gd
=
groupList
.
first
();
GroupDef
*
gd
=
groupList
.
first
();
bool
found
=
FALSE
;
bool
found
=
FALSE
;
t
<<
"{
\\
tc
\\
v
Module Documentation}"
<<
endl
;
;
t
<<
"{
\\
tc
\\
v
"
<<
theTranslator
->
trModuleDocumentation
()
<<
"}"
<<
endl
;
while
(
gd
&&
!
found
)
while
(
gd
&&
!
found
)
{
{
if
(
gd
->
isLinkableInProject
()
||
gd
->
countMembers
()
>
0
)
if
(
gd
->
isLinkableInProject
()
||
gd
->
countMembers
()
>
0
)
...
@@ -625,7 +628,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
...
@@ -625,7 +628,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
ClassDef
*
cd
=
classList
.
first
();
ClassDef
*
cd
=
classList
.
first
();
bool
found
=
FALSE
;
bool
found
=
FALSE
;
t
<<
"{
\\
tc
\\
v
Class Documentation}"
<<
endl
;
;
t
<<
"{
\\
tc
\\
v
"
<<
theTranslator
->
trClassDocumentation
()
<<
"}"
<<
endl
;
while
(
cd
&&
!
found
)
while
(
cd
&&
!
found
)
{
{
if
(
cd
->
isLinkableInProject
())
if
(
cd
->
isLinkableInProject
())
...
@@ -657,7 +660,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
...
@@ -657,7 +660,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
bool
isFirst
=
TRUE
;
bool
isFirst
=
TRUE
;
FileName
*
fn
=
inputNameList
.
first
();
FileName
*
fn
=
inputNameList
.
first
();
t
<<
"{
\\
tc
\\
v
File Documentation
}"
<<
endl
;
t
<<
"{
\\
tc
\\
v
"
<<
theTranslator
->
trFileDocumentation
()
<<
"
}"
<<
endl
;
while
(
fn
)
while
(
fn
)
{
{
FileDef
*
fd
=
fn
->
first
();
FileDef
*
fd
=
fn
->
first
();
...
@@ -692,6 +695,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
...
@@ -692,6 +695,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
{
{
//t << "}\n";
//t << "}\n";
PageInfo
*
pi
=
exampleList
.
first
();
PageInfo
*
pi
=
exampleList
.
first
();
t
<<
"{
\\
tc
\\
v "
<<
theTranslator
->
trExampleDocumentation
()
<<
"}"
<<
endl
;
if
(
pi
)
if
(
pi
)
{
{
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
...
@@ -713,7 +717,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
...
@@ -713,7 +717,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
break
;
break
;
case
isPageDocumentation
:
case
isPageDocumentation
:
{
{
t
<<
"{
\\
tc
\\
v
Page Documentation}"
<<
endl
;
;
t
<<
"{
\\
tc
\\
v
"
<<
theTranslator
->
trPageDocumentation
()
<<
"}"
<<
endl
;
PageInfo
*
pi
=
pageList
.
first
();
PageInfo
*
pi
=
pageList
.
first
();
if
(
pi
)
if
(
pi
)
{
{
...
@@ -1346,7 +1350,7 @@ void RTFGenerator::startDescList()
...
@@ -1346,7 +1350,7 @@ void RTFGenerator::startDescList()
{
{
t
<<
"{
\\
comment (startDescList)}"
<<
endl
;
t
<<
"{
\\
comment (startDescList)}"
<<
endl
;
t
<<
"{"
;
t
<<
"{"
;
/*if (!m_omitParagraph)*/
newParagraph
();
/
//
*if (!m_omitParagraph)*/ newParagraph();
}
}
void
RTFGenerator
::
endDescTitle
()
void
RTFGenerator
::
endDescTitle
()
...
@@ -1378,6 +1382,7 @@ void RTFGenerator::endDescList()
...
@@ -1378,6 +1382,7 @@ void RTFGenerator::endDescList()
void
RTFGenerator
::
writeSection
(
const
char
*
lab
,
const
char
*
title
,
bool
sub
)
void
RTFGenerator
::
writeSection
(
const
char
*
lab
,
const
char
*
title
,
bool
sub
)
{
{
t
<<
"{
\\
comment (writeSection)}"
<<
endl
;
t
<<
"{
\\
comment (writeSection)}"
<<
endl
;
t
<<
"{"
;
t
<<
Rtf_Style_Reset
;
t
<<
Rtf_Style_Reset
;
if
(
sub
)
if
(
sub
)
{
{
...
@@ -1404,12 +1409,19 @@ void RTFGenerator::writeSection(const char *lab,const char *title,bool sub)
...
@@ -1404,12 +1409,19 @@ void RTFGenerator::writeSection(const char *lab,const char *title,bool sub)
newParagraph
();
newParagraph
();
// make bookmark
// make bookmark
writeAnchor
(
lab
);
writeAnchor
(
lab
);
t
<<
"}"
;
}
}
void
RTFGenerator
::
writeSectionRef
(
const
char
*
,
const
char
*
lab
,
void
RTFGenerator
::
writeSectionRef
(
const
char
*
,
const
char
*
lab
,
const
char
*
)
const
char
*
title
)
{
{
startBold
();
docify
(
title
);
endBold
();
t
<<
" ("
;
docify
(
theTranslator
->
trPageAbbreviation
());
WriteRTFReference
(
lab
);
WriteRTFReference
(
lab
);
t
<<
")"
<<
endl
;
}
}
void
RTFGenerator
::
writeSectionRefItem
(
const
char
*
,
const
char
*
lab
,
void
RTFGenerator
::
writeSectionRefItem
(
const
char
*
,
const
char
*
lab
,
...
@@ -1421,13 +1433,10 @@ void RTFGenerator::writeSectionRefItem(const char *,const char *lab,
...
@@ -1421,13 +1433,10 @@ void RTFGenerator::writeSectionRefItem(const char *,const char *lab,
t
<<
endl
;
t
<<
endl
;
}
}
void
RTFGenerator
::
writeSectionRefAnchor
(
const
char
*
,
const
char
*
lab
,
void
RTFGenerator
::
writeSectionRefAnchor
(
const
char
*
name
,
const
char
*
lab
,
const
char
*
title
)
const
char
*
title
)
{
{
startBold
();
writeSectionRef
(
name
,
lab
,
title
);
docify
(
title
);
endBold
();
t
<<
" (p.~
\\
pageref{"
<<
lab
<<
"})"
<<
endl
;
}
}
void
RTFGenerator
::
docify
(
const
char
*
str
)
void
RTFGenerator
::
docify
(
const
char
*
str
)
...
...
src/rtfgen.h
View file @
3b8b750f
...
@@ -211,6 +211,9 @@ class RTFGenerator : public OutputGenerator
...
@@ -211,6 +211,9 @@ class RTFGenerator : public OutputGenerator
void
startParameter
(
bool
)
{}
void
startParameter
(
bool
)
{}
void
endParameter
(
bool
)
{}
void
endParameter
(
bool
)
{}
void
startFontClass
(
const
char
*
)
{}
void
endFontClass
()
{}
static
bool
preProcessFileInplace
(
const
char
*
path
,
const
char
*
name
);
static
bool
preProcessFileInplace
(
const
char
*
path
,
const
char
*
name
);
private
:
private
:
...
...
src/scanner.l
View file @
3b8b750f
...
@@ -3773,16 +3773,17 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
...
@@ -3773,16 +3773,17 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
<BasesProt>"private" { baseProt = Private; }
<BasesProt>"private" { baseProt = Private; }
<BasesProt>{BN} { lineCount(); }
<BasesProt>{BN} { lineCount(); }
<BasesProt>. { unput(*yytext); BEGIN(Bases); }
<BasesProt>. { unput(*yytext); BEGIN(Bases); }
<Bases>("::")
*
{BN}*({ID}{BN}*"::"{BN}*)*{ID} {
<Bases>("::")
?
{BN}*({ID}{BN}*"::"{BN}*)*{ID} {
//current->extends->append(
//current->extends->append(
// new BaseInfo(yytext,baseProt,baseVirt)
// new BaseInfo(yytext,baseProt,baseVirt)
//) ;
//) ;
if (*yytext != ':')
bool globalScope = *yytext==':' && baseName.isEmpty();
if (!globalScope)
baseName += yytext;
baseName += yytext;
else
else
baseName += (yytext+2);
baseName += (yytext+2);
current->args += ' ';
current->args += ' ';
if (
*yytext != ':'
)
if (
!globalScope
)
current->args += yytext;
current->args += yytext;
else
else
current->args += (yytext+2);
current->args += (yytext+2);
...
@@ -4492,7 +4493,7 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
...
@@ -4492,7 +4493,7 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
);
);
}
}
<DocBaseClass>\n { yyLineNr++; BEGIN( ClassDoc ); }
<DocBaseClass>\n { yyLineNr++; BEGIN( ClassDoc ); }
<ClassDocBrief>{BS}
{BL}
{
<ClassDocBrief>{BS}
({BL}|"\\n\\n")
{
current->brief=current->brief.stripWhiteSpace();
current->brief=current->brief.stripWhiteSpace();
if (!current->doc.isEmpty()) current->doc+="<p>";
if (!current->doc.isEmpty()) current->doc+="<p>";
yyLineNr++;
yyLineNr++;
...
@@ -4659,13 +4660,26 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
...
@@ -4659,13 +4660,26 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
unput(afterDocTerminator);
unput(afterDocTerminator);
BEGIN(lastAfterDocContext);
BEGIN(lastAfterDocContext);
}
}
<ClassDocRelates,ClassDocFunc,ClassDocDefine,GroupDocArg1,ClassDocArg1,SectionTitle,EnumDocArg1,
FileDocArg1,
PageDocArg1,ExampleDocArg1,ClassDefineArgs,GroupName>"*/" {
<ClassDocRelates,ClassDocFunc,ClassDocDefine,GroupDocArg1,ClassDocArg1,SectionTitle,EnumDocArg1,PageDocArg1,ExampleDocArg1,ClassDefineArgs,GroupName>"*/" {
current->doc += "\n\n";
current->doc += "\n\n";
err("Warning: unexpected end of "
err("Warning: unexpected end of "
"documentation block found in "
"documentation block found in "
"file %s at line %d\n",yyFileName,yyLineNr);
"file %s at line %d\n",yyFileName,yyLineNr);
BEGIN( lastDocContext );
BEGIN( lastDocContext );
}
}
<FileDocArg1>"*/" {
current->name = yyFileName;
current->doc += "\n\n";
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( FindMembers );
}
<Doc>"*/" {
<Doc>"*/" {
checkDocs();
checkDocs();
current->doc += "\n\n";
current->doc += "\n\n";
...
...
src/translator_de.h
View file @
3b8b750f
...
@@ -48,7 +48,7 @@ class TranslatorGerman : public Translator
...
@@ -48,7 +48,7 @@ class TranslatorGerman : public Translator
QCString
latexBabelPackage
()
QCString
latexBabelPackage
()
// returns the name of the package that is included by LaTeX
// returns the name of the package that is included by LaTeX
{
return
"
deutsch
"
;
}
{
return
"
german
"
;
}
QCString
trRelatedFunctions
()
QCString
trRelatedFunctions
()
// used in the compound documentation before a list of related functions.
// used in the compound documentation before a list of related functions.
...
...
src/util.cpp
View file @
3b8b750f
...
@@ -248,7 +248,7 @@ QCString removeRedundantWhiteSpace(const QCString &s)
...
@@ -248,7 +248,7 @@ QCString removeRedundantWhiteSpace(const QCString &s)
(
i
!=
0
&&
i
!=
s
.
length
()
-
1
&&
isId
(
s
.
at
(
i
-
1
))
&&
isId
(
s
.
at
(
i
+
1
)))
(
i
!=
0
&&
i
!=
s
.
length
()
-
1
&&
isId
(
s
.
at
(
i
-
1
))
&&
isId
(
s
.
at
(
i
+
1
)))
)
)
{
{
if
((
c
==
'*'
||
c
==
'&'
)
&&
if
((
c
==
'*'
||
c
==
'&'
||
c
==
'@'
)
&&
!
result
.
isEmpty
()
&&
isId
(
result
.
at
(
result
.
length
()
-
1
))
!
result
.
isEmpty
()
&&
isId
(
result
.
at
(
result
.
length
()
-
1
))
)
result
+=
' '
;
)
result
+=
' '
;
result
+=
c
;
result
+=
c
;
...
@@ -535,7 +535,7 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext)
...
@@ -535,7 +535,7 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext)
//bool texEnabled = ol.isEnabled(OutputGenerator::Latex);
//bool texEnabled = ol.isEnabled(OutputGenerator::Latex);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
QCString
extLink
,
absPath
;
QCString
extLink
,
absPath
;
if
(
ext
)
{
extLink
=
"_doc
:
"
;
absPath
=
"/"
;
}
if
(
ext
)
{
extLink
=
"_doc"
;
absPath
=
"/"
;
}
//if (manEnabled) ol.disable(OutputGenerator::Man);
//if (manEnabled) ol.disable(OutputGenerator::Man);
//if (texEnabled) ol.disable(OutputGenerator::Latex);
//if (texEnabled) ol.disable(OutputGenerator::Latex);
if
(
compact
)
ol
.
startCenter
();
else
ol
.
startItemList
();
if
(
compact
)
ol
.
startCenter
();
else
ol
.
startItemList
();
...
@@ -2217,3 +2217,27 @@ void extractNamespaceName(const QCString &scopeName,
...
@@ -2217,3 +2217,27 @@ void extractNamespaceName(const QCString &scopeName,
return
;
return
;
}
}
QCString
insertTemplateSpecifierInScope
(
const
QCString
&
scope
,
const
QCString
&
templ
)
{
QCString
result
=
scope
.
copy
();
if
(
!
templ
.
isEmpty
()
&&
scope
.
find
(
'<'
)
==-
1
)
{
int
si
,
pi
=
0
;
while
((
si
=
scope
.
find
(
"::"
,
pi
))
!=-
1
&&
!
getClass
(
scope
.
left
(
si
)
+
templ
)
&&
!
getClass
(
scope
.
left
(
si
)))
{
//printf("Tried `%s'\n",(scope.left(si)+templ).data());
pi
=
si
+
2
;
}
if
(
si
==-
1
)
// not nested => append template specifier
{
result
+=
templ
;
}
else
// nested => insert template specifier before after first class name
{
result
=
scope
.
left
(
si
)
+
templ
+
scope
.
right
(
scope
.
length
()
-
si
);
}
}
//printf("insertTemplateSpecifierInScope(`%s',`%s')=%s\n",
// scope.data(),templ.data(),result.data());
return
result
;
}
src/util.h
View file @
3b8b750f
...
@@ -93,5 +93,6 @@ int minClassDistance(ClassDef *cd,ClassDef *bcd,int level=0);
...
@@ -93,5 +93,6 @@ int minClassDistance(ClassDef *cd,ClassDef *bcd,int level=0);
QCString
convertNameToFile
(
const
char
*
name
);
QCString
convertNameToFile
(
const
char
*
name
);
void
extractNamespaceName
(
const
QCString
&
scopeName
,
void
extractNamespaceName
(
const
QCString
&
scopeName
,
QCString
&
className
,
QCString
&
namespaceName
);
QCString
&
className
,
QCString
&
namespaceName
);
QCString
insertTemplateSpecifierInScope
(
const
QCString
&
scope
,
const
QCString
&
templ
);
#endif
#endif
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