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
ac16b765
Commit
ac16b765
authored
Feb 03, 2002
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.2.13-20020203
parent
75fa97fc
Changes
45
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
45 changed files
with
803 additions
and
362 deletions
+803
-362
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
commands.doc
doc/commands.doc
+1
-1
index.doc
doc/index.doc
+1
-1
install.doc
doc/install.doc
+13
-1
language.doc
doc/language.doc
+17
-17
translator.pl
doc/translator.pl
+20
-7
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
classdef.cpp
src/classdef.cpp
+7
-7
classdef.h
src/classdef.h
+1
-3
code.l
src/code.l
+2
-6
definition.cpp
src/definition.cpp
+12
-1
definition.h
src/definition.h
+10
-8
doc.h
src/doc.h
+2
-1
doc.l
src/doc.l
+88
-7
doxygen.cpp
src/doxygen.cpp
+212
-134
entry.cpp
src/entry.cpp
+10
-3
entry.h
src/entry.h
+5
-3
ftvhelp.cpp
src/ftvhelp.cpp
+3
-1
htmlgen.cpp
src/htmlgen.cpp
+6
-4
htmlgen.h
src/htmlgen.h
+1
-1
htmlhelp.cpp
src/htmlhelp.cpp
+5
-1
index.cpp
src/index.cpp
+2
-1
latexgen.h
src/latexgen.h
+4
-4
mangen.h
src/mangen.h
+1
-1
memberdef.cpp
src/memberdef.cpp
+67
-43
memberdef.h
src/memberdef.h
+19
-8
membergroup.cpp
src/membergroup.cpp
+2
-2
memberlist.cpp
src/memberlist.cpp
+1
-1
outputgen.h
src/outputgen.h
+4
-4
outputlist.h
src/outputlist.h
+4
-4
pre.l
src/pre.l
+7
-2
reflist.cpp
src/reflist.cpp
+0
-1
rtfgen.h
src/rtfgen.h
+3
-3
scanner.l
src/scanner.l
+82
-25
translator_br.h
src/translator_br.h
+23
-5
translator_cz.h
src/translator_cz.h
+23
-0
translator_en.h
src/translator_en.h
+1
-1
translator_fr.h
src/translator_fr.h
+24
-2
translator_hr.h
src/translator_hr.h
+22
-1
translator_it.h
src/translator_it.h
+45
-24
translator_ru.h
src/translator_ru.h
+27
-2
util.cpp
src/util.cpp
+11
-4
xmlgen.cpp
src/xmlgen.cpp
+9
-11
No files found.
INSTALL
View file @
ac16b765
DOXYGEN Version 1.2.13-20020
121
DOXYGEN Version 1.2.13-20020
203
Please read the installation section of the manual for instructions.
--------
Dimitri van Heesch (
21 Jan
uary 2002)
Dimitri van Heesch (
03 Febr
uary 2002)
README
View file @
ac16b765
DOXYGEN Version 1.2.13_20020
121
DOXYGEN Version 1.2.13_20020
203
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) (
21 Jan
uary 2002)
Dimitri van Heesch (dimitri@stack.nl) (
03 Febr
uary 2002)
VERSION
View file @
ac16b765
1.2.13-20020
121
1.2.13-20020
203
doc/commands.doc
View file @
ac16b765
...
...
@@ -1113,7 +1113,7 @@ ALIASES = "english=\if english" \
\sa
Section \ref cmdpage "\\page" for an example of the
\ref cmdsubsection "\\
cmd
subsection" command.
\ref cmdsubsection "\\subsection" command.
<hr>
...
...
doc/index.doc
View file @
ac16b765
...
...
@@ -166,7 +166,7 @@ Thanks go to:
for rendering the logos.
<li>Harm van der Heijden for adding HTML help support.
<li>Wouter Slegers for registering the www.doxygen.org domain.
<li>Parker Wae
r
chter for adding the RTF output generator.
<li>Parker Waechter for adding the RTF output generator.
<li>Joerg Baumann, for adding conditional documentation blocks,
PDF links, and the configuration generator.
<li>Matthias Andree for providing a .spec script for building rpms from the
...
...
doc/install.doc
View file @
ac16b765
...
...
@@ -66,7 +66,7 @@ tools should be installed.
\latexonly(see {\tt http://www.research.att.com/sw/tools/graphviz/})\endlatexonly.
Needed for the include dependency graphs,
the graphical inheritance graphs, and the collaboration graphs.
\note
If you compile graphviz yourself, make sure you do include
If you compile graphviz yourself, make sure you do include
freetype support (which requires the freetype library and header files),
otherwise dot will produce a warning that it cannot find doxfont!
<li>The ghostscript interpreter.
...
...
@@ -210,6 +210,18 @@ instead of the <code>export</code> command above.
Now install doxygen as described above.
<b>Bison problems</b>
Versions 1.31 and 1.32 of bison contain a "bug" that results in a
compiler error like this:
ce_parse.cpp:348: member `class CPPValue yyalloc::yyvs' with
constructor not allowed in union
There is no real solution to this problem, but it is discussed on the
bison mailing list. I recomment to use version 1.29 until the problems
with bison are resolved.
<b>Latex problems</b>
The file <code>a4wide.sty</code> is not available for all distributions. If
...
...
doc/language.doc
View file @
ac16b765
...
...
@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time.
Currently (version 1.2.13
.
1), 25 languages
Currently (version 1.2.13
-2002012
1), 25 languages
are supported (sorted alphabetically):
Brazilian Portuguese, Chinese, Croatian, Czech, Danish,
Dutch, English, Finnish, French, German,
...
...
@@ -60,7 +60,7 @@ when the translator was updated.
<TD>Chinese</TD>
<TD>Wei Liu<br>Wang Weihan</TD>
<TD>liuwei@NOSPAM.asiainfo.com<br>wangweihan@NOSPAM.capinfo.com.cn</TD>
<TD>
up-to-date
</TD>
<TD>
1.2.13
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Croatian</TD>
...
...
@@ -72,7 +72,7 @@ when the translator was updated.
<TD>Czech</TD>
<TD>Petr Přikryl</TD>
<TD>prikrylp@NOSPAM.skil.cz</TD>
<TD>
up-to-date
</TD>
<TD>
1.2.13
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Danish</TD>
...
...
@@ -108,7 +108,7 @@ when the translator was updated.
<TD>German</TD>
<TD>Jens Seidel<br>Jens Breitenstein</TD>
<TD>jensseidel@NOSPAM.users.sf.net<br>Jens.Breitenstein@NOSPAM.tlc.de</TD>
<TD>
up-to-date
</TD>
<TD>
1.2.13
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Greek</TD>
...
...
@@ -132,13 +132,13 @@ when the translator was updated.
<TD>Japanese</TD>
<TD>Ryunosuke Sato<br>Kenji Nagamatsu</TD>
<TD>puyo@NOSPAM.mint.freemail.ne.jp<br>naga@NOSPAM.joyful.club.ne.jp</TD>
<TD>
up-to-date
</TD>
<TD>
1.2.13
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Korean</TD>
<TD>Richard Kim</TD>
<TD>ryk@NOSPAM.dspwiz.com</TD>
<TD>
up-to-date
</TD>
<TD>
1.2.13
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Norwegian</TD>
...
...
@@ -156,7 +156,7 @@ when the translator was updated.
<TD>Portuguese</TD>
<TD>Rui Godinho Lopes</TD>
<TD>ruiglopes@NOSPAM.yahoo.com</TD>
<TD>
up-to-date
</TD>
<TD>
1.2.13
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Romanian</TD>
...
...
@@ -174,13 +174,13 @@ when the translator was updated.
<TD>Slovak</TD>
<TD>Stanislav Kudláč</TD>
<TD>skudlac@NOSPAM.pobox.sk</TD>
<TD>
up-to-date
</TD>
<TD>
1.2.13
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Slovene</TD>
<TD>Matjaz Ostroversnik</TD>
<TD>matjaz.ostroversnik@NOSPAM.zrs-tk.si</TD>
<TD>
up-to-date
</TD>
<TD>
1.2.13
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Spanish</TD>
...
...
@@ -213,12 +213,12 @@ when the translator was updated.
\hline
Brazilian & Fabio "FJTC" Jun Takada Chino & {\tt chino@icmc.sc.usp.br} & up-to-date \\
\hline
Chinese & Wei Liu & {\tt liuwei@asiainfo.com} &
up-to-date
\\
Chinese & Wei Liu & {\tt liuwei@asiainfo.com} &
1.2.13
\\
& Wang Weihan & {\tt wangweihan@capinfo.com.cn} & \\
\hline
Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & up-to-date \\
\hline
Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} &
up-to-date
\\
Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} &
1.2.13
\\
\hline
Danish & Erik S\o{}e S\o{}rensen & {\tt erik@mail.nu} & 1.2.7 \\
\hline
...
...
@@ -230,7 +230,7 @@ when the translator was updated.
\hline
French & Xavier Outhier & {\tt xouthier@yahoo.fr} & up-to-date \\
\hline
German & Jens Seidel & {\tt jensseidel@users.sf.net} &
up-to-date
\\
German & Jens Seidel & {\tt jensseidel@users.sf.net} &
1.2.13
\\
& Jens Breitenstein & {\tt Jens.Breitenstein@tlc.de} & \\
\hline
Greek & Harry Kalogirou & {\tt harkal@rainbow.cs.unipi.gr} & 1.2.11 \\
...
...
@@ -240,24 +240,24 @@ when the translator was updated.
Italian & Alessandro Falappa & {\tt alessandro@falappa.net} & up-to-date \\
& Ahmed Aldo Faisal & {\tt aaf23@cam.ac.uk} & \\
\hline
Japanese & Ryunosuke Sato & {\tt puyo@mint.freemail.ne.jp} &
up-to-date
\\
Japanese & Ryunosuke Sato & {\tt puyo@mint.freemail.ne.jp} &
1.2.13
\\
& Kenji Nagamatsu & {\tt naga@joyful.club.ne.jp} & \\
\hline
Korean & Richard Kim & {\tt ryk@dspwiz.com} &
up-to-date
\\
Korean & Richard Kim & {\tt ryk@dspwiz.com} &
1.2.13
\\
\hline
Norwegian & Lars Erik Jordet & {\tt larsej@stud.ifd.hibu.no} & 1.2.2 \\
\hline
Polish & Grzegorz Kowal & {\tt g\_kowal@poczta.onet.pl} & 1.2.1 \\
\hline
Portuguese & Rui Godinho Lopes & {\tt ruiglopes@yahoo.com} &
up-to-date
\\
Portuguese & Rui Godinho Lopes & {\tt ruiglopes@yahoo.com} &
1.2.13
\\
\hline
Romanian & Alexandru Iosup & {\tt aiosup@yahoo.com} & 1.2.1 \\
\hline
Russian & Alexandr Chelpanov & {\tt cav@cryptopro.ru} & up-to-date \\
\hline
Slovak & Stanislav Kudl\'{a}\v{c} & {\tt skudlac@pobox.sk} &
up-to-date
\\
Slovak & Stanislav Kudl\'{a}\v{c} & {\tt skudlac@pobox.sk} &
1.2.13
\\
\hline
Slovene & Matjaz Ostroversnik & {\tt matjaz.ostroversnik@zrs-tk.si} &
up-to-date
\\
Slovene & Matjaz Ostroversnik & {\tt matjaz.ostroversnik@zrs-tk.si} &
1.2.13
\\
\hline
Spanish & Francisco Oltra Thennet & {\tt foltra@puc.cl} & 1.2.7 \\
\hline
...
...
doc/translator.pl
View file @
ac16b765
...
...
@@ -110,6 +110,14 @@
# The older translator adapters are derived from newer ones.
# The mistaken comment said the opposite.
#
# 2002/01/23
# - The nasty bug corrected. GetAdapterClassesInfo() did not
# strip trailing blanks from the method prototype; consequently,
# the required methods implemented by a translator adapter was
# not recognized as the required one (i.e. not listed).
# - Some defined() operators used on hash elements were replaced
# by exists() operators where appropriate.
#
################################################################
use
5.005
;
...
...
@@ -421,6 +429,11 @@ sub GetAdapterClassesInfo ##{{{
#
$cont
=~
s{\n\s*\n}{\n}sg
;
# Trim the spaces.
#
$cont
=~
s{^\s+}{}mg
;
$cont
=~
s{\s+$}{}mg
;
# Split the string into the lines again.
#
@content
=
split
(
/\n/
,
$cont
);
...
...
@@ -475,7 +488,7 @@ sub GetAdapterClassesInfo ##{{{
#
my
$stripped_prototype
=
StripArgIdentifiers
(
$line
);
if
(
defined
$$reqref
{
$stripped_prototype
}
)
if
(
exists
(
$$reqref
{
$stripped_prototype
})
)
{
++
$cnt
;
$methods
.=
" $line\n"
;
...
...
@@ -498,11 +511,11 @@ sub GetAdapterClassesInfo ##{{{
# Return the result list.
#
# push @result, $cont; # ???
return
@result
;
}
##}}}
################################################################
# GenerateLanguageDoc takes document templates and code sources
# generates the content as expected in the $flangdoc file (the
...
...
@@ -656,7 +669,7 @@ xxxTABLE_FOOTxxx
# was not defined in sources, add the question mark to the
# language identifier.
#
if
(
defined
$language
{
$lang
}
)
{
if
(
exists
(
$language
{
$lang
})
)
{
$language
{
$lang
}
=
$$rcb
{
"Translator$lang"
}
.
'<msep/>'
.
join
(
"<sep/>"
,
@info
);
}
...
...
@@ -1053,8 +1066,8 @@ print STDERR "\n\n";
# Otherwise, remember it as old method which is
# implemented, but not required.
#
if
(
defined
$required
{
$prototype
}
)
{
$required
{
$prototype
}
=
0
;
if
(
exists
(
$required
{
$prototype
})
)
{
$required
{
$prototype
}
=
0
;
# satisfaction
}
else
{
push
(
@old_methods
,
$implemented
);
...
...
packages/rpm/doxygen.spec
View file @
ac16b765
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.2.13_20020
121
Version: 1.2.13_20020
203
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
...
...
src/classdef.cpp
View file @
ac16b765
...
...
@@ -1580,7 +1580,6 @@ bool ClassDef::isLinkableInProject() const
else
{
return
!
name
().
isEmpty
()
&&
/* no name */
//m_isTemplBaseClass==-1 && /* template base class */
!
m_artificial
&&
name
().
find
(
'@'
)
==-
1
&&
/* anonymous compound */
(
m_prot
!=
Private
||
Config_getBool
(
"EXTRACT_PRIVATE"
))
&&
/* private */
...
...
@@ -1635,7 +1634,7 @@ bool ClassDef::hasDocumentation() const
// returns TRUE iff class definition `bcd' represents an (in)direct base
// class of class definition `cd'.
bool
ClassDef
::
isBaseClass
(
ClassDef
*
bcd
)
bool
ClassDef
::
isBaseClass
(
ClassDef
*
bcd
,
bool
followInstances
)
{
bool
found
=
FALSE
;
//printf("isBaseClass(cd=%s) looking for %s\n",cd->name().data(),bcd->name().data());
...
...
@@ -1643,12 +1642,12 @@ bool ClassDef::isBaseClass(ClassDef *bcd)
for
(
;
bcli
.
current
()
&&
!
found
;
++
bcli
)
{
ClassDef
*
ccd
=
bcli
.
current
()
->
classDef
;
if
(
ccd
->
templateMaster
())
ccd
=
ccd
->
templateMaster
();
if
(
!
followInstances
&&
ccd
->
templateMaster
())
ccd
=
ccd
->
templateMaster
();
//printf("isBaseClass() baseclass %s\n",ccd->name().data());
if
(
ccd
==
bcd
)
found
=
TRUE
;
else
found
=
ccd
->
isBaseClass
(
bcd
);
found
=
ccd
->
isBaseClass
(
bcd
,
followInstances
);
}
return
found
;
}
...
...
@@ -1719,7 +1718,7 @@ void ClassDef::mergeMembers()
{
ClassDef
*
dstCd
=
dstMd
->
getClassDef
();
//printf(" Is %s a base class of %s?\n",srcCd->name().data(),dstCd->name().data());
if
(
srcCd
==
dstCd
||
dstCd
->
isBaseClass
(
srcCd
))
if
(
srcCd
==
dstCd
||
dstCd
->
isBaseClass
(
srcCd
,
TRUE
))
// member is in the same or a base class
{
found
=
matchArguments
(
srcMd
->
argumentList
(),
...
...
@@ -1748,7 +1747,8 @@ void ClassDef::mergeMembers()
{
// do not add if base class is virtual or
// if scope paths are equal
if
((
srcMi
->
virt
==
Virtual
&&
dstMi
->
virt
==
Virtual
)
||
//printf("same member found srcMi->virt=%d dstMi->virt=%d\n",srcMi->virt,dstMi->virt);
if
((
srcMi
->
virt
!=
Normal
&&
dstMi
->
virt
!=
Normal
)
||
bClass
->
name
()
+
"::"
+
srcMi
->
scopePath
==
dstMi
->
scopePath
)
{
...
...
src/classdef.h
View file @
ac16b765
...
...
@@ -151,7 +151,7 @@ class ClassDef : public Definition
* class. This function will recusively traverse all branches of the
* inheritance tree.
*/
bool
isBaseClass
(
ClassDef
*
bcd
);
bool
isBaseClass
(
ClassDef
*
bcd
,
bool
followInstances
);
/*! Returns a sorted dictionary with all template instances found for
* this template class. Returns 0 if not a template or no instances.
...
...
@@ -279,8 +279,6 @@ class ClassDef : public Definition
void
addListReferences
();
/*! Creates a new compound definition.
* \param outerScope class, file or namespace in which this class is
* defined.
* \param fileName full path and file name in which this compound was
* found.
* \param startLine line number where the definition of this compound
...
...
src/code.l
View file @
ac16b765
...
...
@@ -1092,17 +1092,13 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
g_code->codify(yytext);
// TODO: remove
g_inClass=FALSE;
if (--g_curlyCount<=0)
{
//g_classScope.resize(0);
//g_codeParmList.clear();
}
if (--g_bodyCurlyCount<=0)
{
g_insideBody=FALSE;
g_currentMemberDef=0;
g_currentDefinition=0;
}
}
<ClassName,ClassVar>";" {
...
...
src/definition.cpp
View file @
ac16b765
...
...
@@ -102,8 +102,17 @@ void Definition::writeDocAnchorsToTagFile()
}
}
void
Definition
::
setDocumentation
(
const
char
*
d
,
const
char
*
docFile
,
int
docLine
,
bool
stripWhiteSpace
=
TRUE
)
{
if
(
stripWhiteSpace
)
m_doc
=
((
QCString
)
d
).
stripWhiteSpace
();
else
m_doc
=
d
;
m_docFile
=
docFile
;
m_docLine
=
docLine
;
}
void
Definition
::
setBriefDescription
(
const
char
*
b
)
void
Definition
::
setBriefDescription
(
const
char
*
b
,
const
char
*
briefFile
,
int
briefLine
)
{
m_brief
=
QCString
(
b
).
stripWhiteSpace
();
int
bl
=
m_brief
.
length
();
...
...
@@ -115,6 +124,8 @@ void Definition::setBriefDescription(const char *b)
default
:
m_brief
+=
'.'
;
break
;
}
}
m_briefFile
=
briefFile
;
m_briefLine
=
briefLine
;
}
/*! Reads a fragment of code from file \a fileName starting at
...
...
src/definition.h
View file @
ac16b765
...
...
@@ -64,17 +64,15 @@ class Definition
/*! Sets a new \a name for the definition */
void
setName
(
const
char
*
name
)
{
m_name
=
name
;
}
/*! Sets the documentation of this definition to \a d. */
void
setDocumentation
(
const
char
*
d
,
bool
stripWhiteSpace
=
TRUE
)
{
if
(
stripWhiteSpace
)
m_doc
=
((
QCString
)
d
).
stripWhiteSpace
();
else
m_doc
=
d
;
}
void
setDocumentation
(
const
char
*
d
,
const
char
*
docFile
,
int
docLine
,
bool
stripWhiteSpace
=
TRUE
);
int
docLine
()
const
{
return
m_docLine
;
}
QCString
docFile
()
const
{
return
m_docFile
;
}
/*! Sets the brief description of this definition to \a b.
* A dot is added to the sentence if not available.
*/
void
setBriefDescription
(
const
char
*
b
);
void
setBriefDescription
(
const
char
*
b
,
const
char
*
briefFile
,
int
briefLine
);
int
briefLine
()
const
{
return
m_briefLine
;
}
QCString
briefFile
()
const
{
return
m_briefFile
;
}
/*! Returns TRUE iff the definition is documented */
virtual
bool
hasDocumentation
()
const
;
virtual
bool
isLinkableInProject
()
const
=
0
;
...
...
@@ -155,6 +153,10 @@ class Definition
int
m_testId
;
// id for test list item
int
m_todoId
;
// id for todo list item
int
m_bugId
;
// id for bug list item
int
m_docLine
;
QCString
m_docFile
;
int
m_briefLine
;
QCString
m_briefFile
;
};
...
...
src/doc.h
View file @
ac16b765
...
...
@@ -21,10 +21,11 @@
#include "qtbc.h"
class
OutputDocInterface
;
class
MemberDef
;
extern
void
parseDoc
(
OutputDocInterface
&
ol
,
const
char
*
fileName
,
int
startLine
,
const
char
*
clName
,
const
char
*
memName
,
const
char
*
clName
,
MemberDef
*
md
,
const
QCString
&
docString
);
extern
void
parseExample
(
OutputDocInterface
&
ol
,
const
QCString
&
docString
,
const
char
*
fileName
);
...
...
src/doc.l
View file @
ac16b765
...
...
@@ -22,7 +22,6 @@
*/
#include <stdio.h>
#include <stdlib.h>
//#include <iostream.h>
#include <assert.h>
#include <ctype.h>
...
...
@@ -51,10 +50,13 @@
*
* scanner's state variables
*/
static MemberDef * memberDef;
static bool hasParamCommand;
static QDict<void> paramsFound;
static OutputDocInterface * outDoc;
static bool insideArgumentList;
static QCString className;
static QCString memberName;
static QCString linkRef;
static QCString linkText;
static QCString codeBlock;
...
...
@@ -109,7 +111,6 @@ static void initParser()
{
insideArgumentList=FALSE;
className.resize(0);
memberName.resize(0);
linkRef.resize(0);
linkText.resize(0);
codeBlock.resize(0);
...
...
@@ -875,6 +876,44 @@ static void writeDotFile(const char *fileName, const char *captionText)
}
}
/* ----------------------------------------------------------------- */
static void checkArgName(const QCString &name)
{
hasParamCommand=TRUE;
if (memberDef==0) return; // not a member
ArgumentList *al=memberDef->isDocsForDefinition() ?
memberDef->argumentList() :
memberDef->declArgumentList();
if (al==0) return; // no argument list
if (!Config_getBool("WARN_IF_UNDOCUMENTED")) return;
static QRegExp re("[a-zA-Z0-9_]+");
int p=0,i=0,l;
while ((i=re.match(name,p,&l))!=-1)
{
QCString aName=name.mid(i,l);
ArgumentListIterator ali(*al);
Argument *a;
for (ali.toFirst();(a=ali.current());++ali)
{
if (name==a->name)
{
paramsFound.insert(name,(void *)(0x8));
return;
}
}
QCString scope=memberDef->getScopeString();
if (!scope.isEmpty()) scope+="::"; else scope="";
warn(memberDef->docFile(),memberDef->docLine(),
"Warning: argument `%s' of command @param "
"is not found in the argument list of %s%s%s",
name.data(),scope.data(),memberDef->name().data(),
argListToString(al).data()
);
p=i+l;
}
}
/* ----------------------------------------------------------------- */
#undef YY_INPUT
...
...
@@ -911,7 +950,7 @@ SCOPEMASK {ID}?(("::"|"#")?(~)?{ID})+
URLCHAR [a-z_A-Z0-9\~\:\?\@\&\%\#\.\-\+\/\=]
URLMASK ([a-z_A-Z][^\>\"\n]*{URLCHAR})|({URLCHAR}+)
NONTERM [\{\}\[\]\`\~\@\|\-\+\#\$\/\\\!\%\^\&\*()a-z_A-Z<>0-9\x80-\xff]
WORD ({NONTERM}+([^\n\t ]*{NONTERM}+)?)|("\""[^\n\"]"\"")
WORD ({NONTERM}+([^\n\t ]*{NONTERM}+)?)|("\""[^\n\"]
*
"\"")
ATTR ({B}+[^>\n]*)?
A [aA]
BOLD [bB]
...
...
@@ -1631,8 +1670,10 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
}
<DocScan>"\\capt".*
<DocParam>({DOCPARAM}{BN}*","{BN}*)*{DOCPARAM}{BSEP}* {
QCString argName = substitute(yytext,"\"","").stripWhiteSpace();
if (inParamBlock) checkArgName(argName);
outDoc->startDescTableTitle();
scanDoc(
substitute(yytext,"\"","").stripWhiteSpace()
);
scanDoc(
argName
);
outDoc->endDescTableTitle();
outDoc->startDescTableData();
BEGIN(DocScan);
...
...
@@ -2633,18 +2674,58 @@ void parseDocument(OutputDocInterface &od,const QCString &docString)
//----------------------------------------------------------------------------
void parseDoc(OutputDocInterface &od,const char *fileName,int startLine,
const char *clName,
const char *memName
,const QCString &docString)
const char *clName,
MemberDef *md
,const QCString &docString)
{
//printf("parseDoc(file=`%s',line=%d)\n",fileName,startLine);
initParser();
initParseCodeContext();
exampleDoc=FALSE; // do not cross reference with member docs
className=clName;
memberName=memName;
memberDef = md;
hasParamCommand = FALSE;
paramsFound.setAutoDelete(FALSE);
paramsFound.clear();
strcpy(yyFileName,fileName);
yyLineNr = startLine;
parseDocument(od,docString);
if (md && hasParamCommand && Config_getBool("WARN_IF_UNDOCUMENTED"))
{
ArgumentList *al=memberDef->isDocsForDefinition() ?
memberDef->argumentList() :
memberDef->declArgumentList();
if (al)
{
ArgumentListIterator ali(*al);
Argument *a;
bool found=FALSE;
for (ali.toFirst();(a=ali.current());++ali)
{
if (!a->name.isEmpty() && paramsFound.find(a->name)==0)
{
found = TRUE;
break;
}
}
if (found)
{
QCString scope=memberDef->getScopeString();
if (!scope.isEmpty()) scope+="::"; else scope="";
warn(memberDef->docFile(),memberDef->docLine(),
"Warning: The following parameters of "
"%s%s%s are not documented:",
scope.data(),memberDef->name().data(),
argListToString(al).data());
for (ali.toFirst();(a=ali.current());++ali)
{
if (!a->name.isEmpty() && paramsFound.find(a->name)==0)
{
warn_cont( " parameter %s\n",a->name.data());
}
}
}
}
}
}
//----------------------------------------------------------------------------
...
...
src/doxygen.cpp
View file @
ac16b765
This diff is collapsed.
Click to expand it.
src/entry.cpp
View file @
ac16b765
...
...
@@ -65,8 +65,12 @@ Entry::Entry(const Entry &e)
includeFile
=
e
.
includeFile
.
copy
();
includeName
=
e
.
includeFile
.
copy
();
doc
=
e
.
doc
.
copy
();
docLine
=
e
.
docLine
;
docFile
=
e
.
docFile
.
copy
();
relates
=
e
.
relates
.
copy
();
brief
=
e
.
brief
.
copy
();
briefLine
=
e
.
briefLine
;
briefFile
=
e
.
briefFile
.
copy
();
inside
=
e
.
inside
.
copy
();
fileName
=
e
.
fileName
.
copy
();
startLine
=
e
.
startLine
;
...
...
@@ -90,9 +94,7 @@ Entry::Entry(const Entry &e)
anchors
->
setAutoDelete
(
TRUE
);
argList
=
new
ArgumentList
;
argList
->
setAutoDelete
(
TRUE
);
//printf("Entry::Entry(copy) tArgList=0\n");
tArgLists
=
0
;
//mtArgList = 0;
groupDocType
=
e
.
groupDocType
;
// deep copy of the child entry list
...
...
@@ -206,8 +208,12 @@ void Entry::reset()
includeFile
.
resize
(
0
);
includeName
.
resize
(
0
);
doc
.
resize
(
0
);
docFile
.
resize
(
0
);
docLine
=-
1
;
relates
.
resize
(
0
);
brief
.
resize
(
0
);
briefFile
.
resize
(
0
);
briefLine
=-
1
;
inside
.
resize
(
0
);
fileName
.
resize
(
0
);
//scopeSpec.resize(0);
...
...
@@ -251,12 +257,13 @@ int Entry::getSize()
size
+=
bitfields
.
length
()
+
1
;
size
+=
exception
.
length
()
+
1
;
size
+=
program
.
length
()
+
1
;
//size+=body.length()+1;
size
+=
includeFile
.
length
()
+
1
;
size
+=
includeName
.
length
()
+
1
;
size
+=
doc
.
length
()
+
1
;
size
+=
docFile
.
length
()
+
1
;
size
+=
relates
.
length
()
+
1
;
size
+=
brief
.
length
()
+
1
;
size
+=
briefFile
.
length
()
+
1
;
size
+=
inside
.
length
()
+
1
;
size
+=
fileName
.
length
()
+
1
;
size
+=
initializer
.
length
()
+
1
;
...
...
src/entry.h
View file @
ac16b765
...
...
@@ -254,15 +254,17 @@ class Entry
QCString
bitfields
;
//!< member's bit fields
ArgumentList
*
argList
;
//!< member arguments as a list
QList
<
ArgumentList
>
*
tArgLists
;
//!< template argument declarations
//QCString scopeSpec; //!< template specialization of the scope
//QCString memberSpec; //!< template specialization of the member
QCString
program
;
//!< the program text
QCString
initializer
;
//!< initial value (for variables)
QCString
includeFile
;
//!< include file (2 arg of \class, must be unique)
QCString
includeName
;
//!< include name (3 arg of \class)
QCString
doc
;
//!< documentation block (partly parsed)
QCString
relates
;
//!< related class (doc block)
int
docLine
;
//!< line number at which the documentation was found
QCString
docFile
;
//!< file in which the documentation was found
QCString
brief
;
//!< brief description (doc block)
int
briefLine
;
//!< line number at which the brief desc. was found
QCString
briefFile
;
//!< file in which the brief desc. was found
QCString
relates
;
//!< related class (doc block)
QCString
inside
;
//!< name of the class in which documents are found
QCString
exception
;
//!< throw specification
int
bodyLine
;
//!< line number of the definition in the source
...
...
src/ftvhelp.cpp
View file @
ac16b765
...
...
@@ -443,8 +443,10 @@ int FTVHelp::decContentsDepth()
/*! Add a list item to the contents file.
* \param isDir TRUE if the item is a directory, FALSE if it is a text
* \param name the name of the item.
* \param ref the URL of to the item.
* \param file the file containing the definition of the item
* \param anchor the anchor within the file.
* \param name the name of the item.
*/
void
FTVHelp
::
addContentsItem
(
bool
isDir
,
const
char
*
ref
,
...
...
src/htmlgen.cpp
View file @
ac16b765
...
...
@@ -134,14 +134,16 @@ void HtmlGenerator::writeStyleSheetFile(QFile &file)
t
<<
defaultStyleSheet
;
}
static
void
writeDefaultHeaderFile
(
QTextStream
&
t
,
const
char
*
title
,
static
void
writeDefaultHeaderFile
(
QTextStream
&
t
,
const
char
*
title
,
bool
external
)
{
t
<<
"<!DOCTYPE HTML PUBLIC
\"
-//W3C//DTD HTML 4.0 Transitional//EN
\"
>
\n
"
"<html><head>"
/*"<meta name=\"robots\" content=\"noindex\">\n"*/
"<meta http-equiv=
\"
Content-Type
\"
content=
\"
text/html;charset="
<<
theTranslator
->
idLanguageCharset
()
<<
"
\"
>
\n
"
"<title>"
<<
title
<<
"</title>
\n
"
;
"<title>"
;
t
<<
convertToHtml
(
title
);
t
<<
"</title>
\n
"
;
t
<<
"<link "
;
if
(
external
)
t
<<
"doxygen=
\"
_doc:"
<<
Config_getString
(
"DOC_URL"
)
...
...
@@ -212,7 +214,7 @@ void HtmlGenerator::startFile(const char *name,const char *,
}
else
{
t
<<
substituteKeywords
(
g_header
,
lastTitle
);
t
<<
substituteKeywords
(
g_header
,
convertToHtml
(
lastTitle
)
);
}
t
<<
"<!-- "
<<
theTranslator
->
trGeneratedBy
()
<<
" Doxygen "
<<
versionString
<<
" -->"
<<
endl
;
...
...
@@ -255,7 +257,7 @@ void HtmlGenerator::writeFooter(int part,bool external)
if
(
g_footer
.
isEmpty
())
t
<<
"<hr><address><small>"
;
else
t
<<
substituteKeywords
(
g_footer
,
lastTitle
);
t
<<
substituteKeywords
(
g_footer
,
convertToHtml
(
lastTitle
)
);
break
;
case
1
:
if
(
g_footer
.
isEmpty
())
...
...
src/htmlgen.h
View file @
ac16b765
...
...
@@ -82,7 +82,7 @@ class HtmlGenerator : public OutputGenerator
void
codify
(
const
char
*
text
);
void
writeObjectLink
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
anchor
,
const
char
*
name
);
void
writeCodeLink
(
const
char
*
ref
,
const
char
*
f
,
void
writeCodeLink
(
const
char
*
ref
,
const
char
*
f
ile
,
const
char
*
anchor
,
const
char
*
name
);
void
startTextLink
(
const
char
*
file
,
const
char
*
anchor
);
void
endTextLink
();
...
...
src/htmlhelp.cpp
View file @
ac16b765
...
...
@@ -396,8 +396,10 @@ int HtmlHelp::decContentsDepth()
}
/*! Add an list item to the contents file.
* \param isDir boolean indicating if this is a dir or file entry
* \param name the name of the item.
* \param ref the URL of to the item.
* \param anchor the anchor of the item.
*/
void
HtmlHelp
::
addContentsItem
(
bool
isDir
,
const
char
*
name
,
const
char
*
ref
,
...
...
@@ -433,8 +435,10 @@ void HtmlHelp::addContentsItem(bool isDir,
}
/*! Add an list item to the index file.
* \param name the name of the item.
* \param level1 the main index of the item.
* \param level2 the sub index of the item.
* \param ref the URL of to the item.
* \param anchor the anchor of the item.
* \sa HtmlHelpIndex
*/
void
HtmlHelp
::
addIndexItem
(
const
char
*
level1
,
const
char
*
level2
,
...
...
src/index.cpp
View file @
ac16b765
...
...
@@ -586,7 +586,8 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started)
bool
hasChildren
=
!
cd
->
visited
&&
cd
->
subClasses
()
->
count
()
>
0
;
if
(
cd
->
isLinkable
())
{
//printf("Writing class %s\n",cd->displayName().data());
//printf("Writing class %s isLinkable()=%d isLinkableInProject()=%d cd->templateMaster()=%p\n",
// cd->displayName().data(),cd->isLinkable(),cd->isLinkableInProject(),cd->templateMaster());
ol
.
writeIndexItem
(
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
cd
->
displayName
());
if
(
cd
->
isReference
())
{
...
...
src/latexgen.h
View file @
ac16b765
...
...
@@ -78,14 +78,14 @@ class LatexGenerator : public OutputGenerator
void
docify
(
const
char
*
text
);
void
codify
(
const
char
*
text
);
void
writeObjectLink
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
anchor
,
const
char
*
text
);
const
char
*
anchor
,
const
char
*
name
);
void
writeCodeLink
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
anchor
,
const
char
*
text
);
const
char
*
anchor
,
const
char
*
name
);
void
startTextLink
(
const
char
*
,
const
char
*
);
void
endTextLink
();
void
startHtmlLink
(
const
char
*
);
void
startHtmlLink
(
const
char
*
url
);
void
endHtmlLink
();
void
writeMailLink
(
const
char
*
);
void
writeMailLink
(
const
char
*
url
);
void
startTypewriter
()
{
t
<<
"{
\\
tt "
;
}
void
endTypewriter
()
{
t
<<
"}"
;
}
void
startGroupHeader
();
...
...
src/mangen.h
View file @
ac16b765
...
...
@@ -77,7 +77,7 @@ class ManGenerator : public OutputGenerator
void
codify
(
const
char
*
text
);
void
writeObjectLink
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
anchor
,
const
char
*
name
);
void
writeCodeLink
(
const
char
*
ref
,
const
char
*
f
,
void
writeCodeLink
(
const
char
*
ref
,
const
char
*
f
ile
,
const
char
*
anchor
,
const
char
*
name
);
void
startTextLink
(
const
char
*
,
const
char
*
)
{}
void
endTextLink
()
{}
...
...
src/memberdef.cpp
View file @
ac16b765
This diff is collapsed.
Click to expand it.
src/memberdef.h
View file @
ac16b765
...
...
@@ -164,8 +164,8 @@ class MemberDef : public Definition
// relation to other members
void
setReimplements
(
MemberDef
*
md
);
void
insertReimplementedBy
(
MemberDef
*
md
);
MemberDef
*
reimplements
()
const
{
return
redefines
;
}
MemberList
*
reimplementedBy
()
const
{
return
redefinedBy
;
}
MemberDef
*
reimplements
()
const
;
MemberList
*
reimplementedBy
()
const
;
// enumeration specific members
void
insertEnumField
(
MemberDef
*
md
);
...
...
@@ -180,6 +180,7 @@ class MemberDef : public Definition
bool
hasDocumentedEnumValues
()
const
{
return
docEnumValues
;
}
void
setAnonymousEnumType
(
MemberDef
*
md
)
{
annEnumType
=
md
;
}
MemberDef
*
getAnonymousEnumType
()
const
{
return
annEnumType
;
}
bool
isDocsForDefinition
()
const
{
return
docsForDefinition
;
}
// example related members
bool
addExample
(
const
char
*
anchor
,
const
char
*
name
,
const
char
*
file
);
...
...
@@ -191,10 +192,17 @@ class MemberDef : public Definition
bool
isPrototype
()
const
{
return
proto
;
}
// argument related members
ArgumentList
*
argumentList
()
const
{
return
argList
;
}
ArgumentList
*
argumentList
()
const
{
return
defArgList
;
}
ArgumentList
*
declArgumentList
()
const
{
return
declArgList
;
}
void
setArgumentList
(
ArgumentList
*
al
)
{
if
(
argList
)
delete
argList
;
argList
=
al
;
{
if
(
defArgList
)
delete
defArgList
;
defArgList
=
al
;
}
void
setDeclArgumentList
(
ArgumentList
*
al
)
{
if
(
declArgList
)
delete
declArgList
;
declArgList
=
al
;
}
ArgumentList
*
templateArguments
()
const
{
return
tArgList
;
}
void
setDefinitionTemplateParameterLists
(
QList
<
ArgumentList
>
*
lists
);
...
...
@@ -234,6 +242,7 @@ class MemberDef : public Definition
return
bodyMemb
?
bodyMemb
->
anchor
()
:
anchor
();
}
void
setBodyMember
(
MemberDef
*
md
)
{
bodyMemb
=
md
;
}
void
setDocsForDefinition
(
bool
b
)
{
docsForDefinition
=
b
;
}
bool
visited
;
...
...
@@ -281,10 +290,9 @@ class MemberDef : public Definition
int
userInitLines
;
// result of explicit \hideinitializer or \showinitializer
MemberList
*
section
;
// declation list containing this member
MemberDef
*
annMemb
;
ArgumentList
*
argList
;
// argument list of this member
ArgumentList
*
defArgList
;
// argument list of this member definition
ArgumentList
*
declArgList
;
// argument list of this member declaration
ArgumentList
*
tArgList
;
// template argument list of function template
//ArgumentList *scopeTAL; // template argument list of class template
//ArgumentList *membTAL; // template argument list of class template
QList
<
ArgumentList
>
*
m_defTmpArgLists
;
int
grpId
;
// group id
MemberGroup
*
memberGroup
;
// group's member definition
...
...
@@ -302,6 +310,9 @@ class MemberDef : public Definition
bool
groupHasDocs
;
// true if the entry that caused the grouping was documented
MemberDef
*
m_templateMaster
;
SIntDict
<
MemberList
>
*
classSectionSDict
;
bool
docsForDefinition
;
// TRUE => documentation block is put before
// definition.
// FALSE => block is put before declaration.
// disable copying of member defs
...
...
src/membergroup.cpp
View file @
ac16b765
...
...
@@ -142,8 +142,8 @@ void MemberGroup::distributeMemberGroupDocumentation()
if
(
omd
->
documentation
().
isEmpty
()
&&
omd
->
briefDescription
().
isEmpty
())
{
//printf("Copying documentation to member %s\n",omd->name().data());
omd
->
setBriefDescription
(
md
->
briefDescription
());
omd
->
setDocumentation
(
md
->
documentation
());
omd
->
setBriefDescription
(
md
->
briefDescription
()
,
md
->
briefFile
(),
md
->
briefLine
()
);
omd
->
setDocumentation
(
md
->
documentation
()
,
md
->
docFile
(),
md
->
docLine
()
);
}
omd
=
memberList
->
next
();
}
...
...
src/memberlist.cpp
View file @
ac16b765
...
...
@@ -343,7 +343,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
ol
.
startMemberDescription
();
parseDoc
(
ol
,
md
->
getDefFileName
(),
md
->
getDefLine
(),
cd
?
cd
->
name
().
data
()
:
0
,
md
->
name
().
data
()
,
cd
?
cd
->
name
().
data
()
:
0
,
md
,
md
->
briefDescription
()
);
if
(
md
->
isDetailedSectionLinkable
())
...
...
src/outputgen.h
View file @
ac16b765
...
...
@@ -95,10 +95,10 @@ class BaseOutputDocInterface
* \param file The file in which the object is located.
* \param anchor The anchor uniquely identifying the object within
* the file.
* \param
text
The text to display as a placeholder for the link.
* \param
name
The text to display as a placeholder for the link.
*/
virtual
void
writeObjectLink
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
anchor
,
const
char
*
text
)
=
0
;
const
char
*
anchor
,
const
char
*
name
)
=
0
;
/*! Writes a link to an object in a code fragment.
* \param ref If this is non-zero, the object is to be found in
...
...
@@ -106,10 +106,10 @@ class BaseOutputDocInterface
* \param file The file in which the object is located.
* \param anchor The anchor uniquely identifying the object within
* the file.
* \param
text
The text to display as a placeholder for the link.
* \param
name
The text to display as a placeholder for the link.
*/
virtual
void
writeCodeLink
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
anchor
,
const
char
*
text
)
=
0
;
const
char
*
anchor
,
const
char
*
name
)
=
0
;
/*! Starts a (link to an) URL found in the documentation.
* \param url The URL to link to.
...
...
src/outputlist.h
View file @
ac16b765
...
...
@@ -134,11 +134,11 @@ class OutputList : public OutputDocInterface
void
codify
(
const
char
*
s
)
{
forall
(
&
OutputGenerator
::
codify
,
s
);
}
void
writeObjectLink
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
anchor
,
const
char
*
text
)
{
forall
(
&
OutputGenerator
::
writeObjectLink
,
ref
,
file
,
anchor
,
text
);
}
const
char
*
anchor
,
const
char
*
name
)
{
forall
(
&
OutputGenerator
::
writeObjectLink
,
ref
,
file
,
anchor
,
name
);
}
void
writeCodeLink
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
anchor
,
const
char
*
text
)
{
forall
(
&
OutputGenerator
::
writeCodeLink
,
ref
,
file
,
anchor
,
text
);
}
const
char
*
anchor
,
const
char
*
name
)
{
forall
(
&
OutputGenerator
::
writeCodeLink
,
ref
,
file
,
anchor
,
name
);
}
void
startTextLink
(
const
char
*
file
,
const
char
*
anchor
)
{
forall
(
&
OutputGenerator
::
startTextLink
,
file
,
anchor
);
}
void
endTextLink
()
...
...
src/pre.l
View file @
ac16b765
...
...
@@ -1122,10 +1122,15 @@ BN [ \t\r\n]
}
<CopyLine>{ID}/{BN}*"(" {
Define *def=0;
//printf("Search for define %s\n",yytext);
//def=g_fileDefineDict->find(yytext);
//printf("Search for define %s found=%d g_includeStack.isEmpty()=%d "
// "g_curlyCount=%d g_macroExpansion=%d g_expandOnlyPredef=%d "
// "isPreDefined=%d\n",yytext,def ? 1 : 0,
// g_includeStack.isEmpty(),g_curlyCount,g_macroExpansion,g_expandOnlyPredef,
// def ? def->isPredefined : -1
// );
if ((g_includeStack.isEmpty() || g_curlyCount>0) &&
g_macroExpansion &&
/* (expandDefine=fileDefineCache->findDefine(g_yyFileName,yytext)) */
(def=g_fileDefineDict->find(yytext)) &&
(!g_expandOnlyPredef || def->isPredefined)
)
...
...
src/reflist.cpp
View file @
ac16b765
...
...
@@ -41,7 +41,6 @@ RefList::~RefList()
}
/*! Adds a new item to the list.
* \param text The item text.
* \returns A unique id for this item.
*/
int
RefList
::
addRefItem
()
...
...
src/rtfgen.h
View file @
ac16b765
...
...
@@ -79,12 +79,12 @@ class RTFGenerator : public OutputGenerator
void
docify
(
const
char
*
text
);
void
codify
(
const
char
*
text
);
void
writeObjectLink
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
anchor
,
const
char
*
text
);
const
char
*
anchor
,
const
char
*
name
);
void
writeCodeLink
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
anchor
,
const
char
*
text
);
const
char
*
anchor
,
const
char
*
name
);
void
startTextLink
(
const
char
*
f
,
const
char
*
anchor
);
void
endTextLink
();
void
startHtmlLink
(
const
char
*
);
void
startHtmlLink
(
const
char
*
url
);
void
endHtmlLink
();
void
writeMailLink
(
const
char
*
url
);
void
startTypewriter
()
{
t
<<
"{
\\
f2 "
;
}
...
...
src/scanner.l
View file @
ac16b765
...
...
@@ -477,6 +477,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
%x Function
%x FuncRound
%x ExcpRound
%x ExcpList
%x FuncQual
%x Operator
%x Array
...
...
@@ -1246,16 +1247,24 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
if (yytext[yyleng-3]=='/')
{
current->brief.resize(0);
current->briefLine = yyLineNr;
current->briefFile = yyFileName;
BEGIN(AfterDocLine);
}
else if (yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF"))
{
current->brief.resize(0);
current->briefLine = yyLineNr;
current->briefFile = yyLineNr;
current->docLine = yyLineNr;
current->docFile = yyFileName;
BEGIN(AfterDocBrief);
}
else
{
current->doc.resize(0);
current->docLine = yyLineNr;
current->docFile = yyFileName;
BEGIN(AfterDoc);
}
}
...
...
@@ -1266,16 +1275,24 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
if (yytext[yyleng-3]=='/')
{
current->brief.resize(0);
current->briefLine = yyLineNr;
current->briefFile = yyLineNr;
BEGIN(AfterDocLine);
}
else if (yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF"))
{
current->brief.resize(0);
current->briefLine = yyLineNr;
current->briefFile = yyLineNr;
current->docLine = yyLineNr;
current->docFile = yyFileName;
BEGIN(AfterDocBrief);
}
else
{
current->doc.resize(0);
current->docLine = yyLineNr;
current->docFile = yyFileName;
BEGIN(AfterDoc);
}
}
...
...
@@ -1292,16 +1309,22 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
if (yytext[yyleng-3]=='/')
{
current->brief.resize(0);
current->briefLine = yyLineNr;
current->briefFile = yyFileName;
BEGIN(AfterDocLine);
}
else if (yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF"))
{
current->brief.resize(0);
current->briefLine = yyLineNr;
current->briefFile = yyFileName;
BEGIN(AfterDocBrief);
}
else
{
current->doc.resize(0);
current->docLine = yyLineNr;
current->docFile = yyFileName;
BEGIN(AfterDoc);
}
}
...
...
@@ -1319,12 +1342,16 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
if (yytext[1]=='/') // C++ style comment
{
current->brief.resize(0);
current->briefLine = yyLineNr;
current->briefFile = yyFileName;
lastDocContext = YY_START;
BEGIN( LineDoc );
}
else // C style comment
{
current->doc.resize(0);
current->docLine = yyLineNr;
current->docFile = yyFileName;
lastDocContext = YY_START;
removeSlashes=FALSE;
BEGIN( Doc );
...
...
@@ -2195,7 +2222,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<FuncQual>{BN}*"try"{BN}+ { /* try-function-block */
insideTryBlock=TRUE;
}
<FuncQual>{BN}*"throw"{BN}*"(" {
<FuncQual>{BN}*"throw"{BN}*"(" {
// C++ style throw clause
current->exception = " throw (" ;
roundCount=0;
lineCount() ;
...
...
@@ -2207,6 +2234,11 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
roundCount=0;
BEGIN( ExcpRound ) ;
}
<FuncQual>{BN}*"throws"{BN}+ { // Java style throw clause
current->exception = " throws " ;
lineCount() ;
BEGIN( ExcpList );
}
<ExcpRound>"(" { current->exception += *yytext ;
++roundCount ;
}
...
...
@@ -2217,7 +2249,16 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
BEGIN( FuncQual ) ;
}
<ExcpRound>. {
current->exception += yytext;
current->exception += *yytext;
}
<ExcpList>"{" {
unput('{'); BEGIN( FuncQual );
}
<ExcpList>"\n" {
current->exception += ' ';
}
<ExcpList>. {
current->exception += *yytext;
}
<Function>"(" { current->type += current->name ;
current->name = current->args ;
...
...
@@ -2235,29 +2276,17 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->name=current->name.simplifyWhiteSpace();
current->type=current->type.simplifyWhiteSpace();
current->args=current->args.simplifyWhiteSpace();
//QCString &cn=current->name;
//QCString &rn=current_root->name;
//int i;
//if ((i=cn.findRev("::"))!=-1) // name contains scope
//{
// if (cn.left(i)==rn.right(i)) // scope name is redundant
// {
// cn=cn.right(cn.length()-i-2); // strip scope
// //printf("new name=`%s'\n",cn.data());
// }
//}
current->fileName = yyFileName;
current->startLine = yyLineNr;
if (*yytext!=';' || (current_root->section&Entry::COMPOUND_MASK) )
{
int tempArg=current->name.find('<');
QCString tempName;
if (tempArg==-1)
tempName=current->name;
else
tempName=current->name.left(tempArg);
if (current->type.isEmpty() && tempName.find("operator")==-1 &&
(tempName.find('*')!=-1 || tempName.find('&')!=-1))
static QRegExp re("operator[^a-z_A-Z0-9]");
if (tempArg==-1) tempName=current->name; else tempName=current->name.left(tempArg);
if ((current->type.isEmpty() && tempName.find(re)==-1) ||
current->type.left(8)=="typedef "
)
{
//printf("Scanner.l: found in class variable: `%s' `%s' `%s'\n",
// current->type.data(),current->name.data(),current->args.data());
...
...
@@ -2268,12 +2297,13 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
//printf("Scanner.l: found in class function: `%s' `%s' `%s'\n",
// current->type.data(),current->name.data(),current->args.data());
current->section = Entry::FUNCTION_SEC ;
current->proto = *yytext==';';
}
}
else // a global function prototype or function variable
{
static QRegExp re("([^)]*)");
//printf("Scanner.l: prototype? type=`%s' name=`%s' args=`%s'\n",current->type.data(),current->name.data(),current->args.data());
QRegExp re("([^)]*)");
if (!current->type.isEmpty() &&
(current->type.find(re,0)!=-1 || current->type.left(8)=="typedef "))
{
...
...
@@ -2305,11 +2335,6 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
curlyCount=0;
BEGIN( SkipCurly ) ;
}
//else if( *yytext == ':' )
//{
// //addToBody(yytext);
// BEGIN( SkipInits ) ;
//}
else
{
if (previous->section!=Entry::VARIABLE_SEC)
...
...
@@ -2359,13 +2384,27 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
lastAfterDocContext = SkipCurlyEndDoc;
afterDocTerminator = '}';
if (yytext[yyleng-3]=='/')
{
current->briefLine = yyLineNr;
current->briefFile = yyFileName;
BEGIN(AfterDocLine);
}
else if (yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF"))
{
current->briefLine = yyLineNr;
current->briefFile = yyFileName;
current->docLine = yyLineNr;
current->docFile = yyFileName;
BEGIN(AfterDocBrief);
}
else
{
current->docLine = yyLineNr;
current->docFile = yyFileName;
BEGIN(AfterDoc);
}
}
}
<SkipCurlyEndDoc>"}" {
//addToBody("}");
current = tempEntry;
...
...
@@ -2667,9 +2706,15 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
removeSlashes=(yytext[1]=='/');
tmpDocType=-1;
if (YY_START==ReadBody)
{
current->doc+="\n\n";
}
else
{
current->doc.resize(0);
}
current->docLine = yyLineNr;
current->docFile = yyFileName;
lastDocContext = YY_START;
if (current_root->section & Entry::SCOPE_MASK)
{
...
...
@@ -2696,9 +2741,15 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
{
tmpDocType=-1;
if (YY_START==ReadBody)
{
current->doc+="\n\n";
}
else
{
current->doc.resize(0);
}
current->docLine = yyLineNr;
current->docFile = yyFileName;
BEGIN( Doc );
}
else // Use the javadoc style
...
...
@@ -2708,6 +2759,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
tmpDocType=-1;
current->doc+="\n\n";
lastDocContext = ReadBody;
current->docLine = yyLineNr;
current->docFile = yyFileName;
BEGIN( Doc );
}
else
...
...
@@ -2715,6 +2768,10 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
tmpDocType=Doc;
current->doc.resize(0);
current->brief.resize(0);
current->docLine = yyLineNr;
current->docFile = yyFileName;
current->briefLine = yyLineNr;
current->briefFile = yyFileName;
BEGIN( JavaDoc );
}
}
...
...
src/translator_br.h
View file @
ac16b765
...
...
@@ -13,15 +13,12 @@
* Brazilian Portuguese version by
* Fabio "FJTC" Jun Takada Chino <chino@icmc.sc.usp.br>
* http://www.icmc.sc.usp.br/~chino
* Version: 1.2.11 (2001/11/23)
*
* News:
* - Everything was revised.
* Version: 1.2.13 (2002/01/24)
*/
#ifndef TRANSLATOR_BR_H
#define TRANSLATOR_BR_H
class
TranslatorBrazilian
:
public
Translator
Adapter_1_2_13
class
TranslatorBrazilian
:
public
Translator
{
public
:
...
...
@@ -1313,5 +1310,26 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_13
{
return
"Referências"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.13
//////////////////////////////////////////////////////////////////////////
/*! used in member documentation blocks to produce a list of
* members that are implemented by this one.
*/
virtual
QCString
trImplementedFromList
(
int
numEntries
)
{
return
"Implementa "
+
trWriteList
(
numEntries
)
+
"."
;
}
/*! used in member documentation blocks to produce a list of
* all members that implementation this member.
*/
virtual
QCString
trImplementedInList
(
int
numEntries
)
{
return
"Implementado em "
+
trWriteList
(
numEntries
)
+
"."
;
}
};
#endif
src/translator_cz.h
View file @
ac16b765
...
...
@@ -131,6 +131,9 @@
// 2001/11/06
// - trReferences() implemented.
//
// 2002/01/23
// - trImplementedFromList() and trImplementedInList() implemented
// (new since 1.2.13)
//
// Todo
// ----
...
...
@@ -1479,6 +1482,26 @@ class TranslatorCzech : public TranslatorAdapter_1_2_13
return
decode
(
"Odkazuje se na"
);
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.13
//////////////////////////////////////////////////////////////////////////
/*! used in member documentation blocks to produce a list of
* members that are implemented by this one.
*/
virtual
QCString
trImplementedFromList
(
int
numEntries
)
{
return
"Implementuje "
+
trWriteList
(
numEntries
)
+
"."
;
}
/*! used in member documentation blocks to produce a list of
* all members that implement this member.
*/
virtual
QCString
trImplementedInList
(
int
numEntries
)
{
return
"Implementováno v "
+
trWriteList
(
numEntries
)
+
"."
;
}
};
#endif // TRANSLATOR_CZ_H
src/translator_en.h
View file @
ac16b765
...
...
@@ -1385,7 +1385,7 @@ class TranslatorEnglish : public Translator
}
/*! used in member documentation blocks to produce a list of
* all members that implement
ation this
member.
* all members that implement
this abstract
member.
*/
virtual
QCString
trImplementedInList
(
int
numEntries
)
{
...
...
src/translator_fr.h
View file @
ac16b765
...
...
@@ -2,7 +2,7 @@
*
*
*
* Copyright (C) 1997-200
2
by Dimitri van Heesch.
* Copyright (C) 1997-200
1
by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
...
...
@@ -33,11 +33,13 @@
* | QCString trIncludeFile()
* | QCString trVerbatimText(const char *f)
* -------------+------------------------------------------------------------
* 2002-01-23 | Update for new since 1.2.13
* -------------+------------------------------------------------------------
*/
#ifndef TRANSLATOR_FR_H
#define TRANSLATOR_FR_H
class
TranslatorFrench
:
public
Translator
Adapter_1_2_13
class
TranslatorFrench
:
public
Translator
{
public
:
QCString
idLanguage
()
...
...
@@ -1232,5 +1234,25 @@ class TranslatorFrench : public TranslatorAdapter_1_2_13
{
return
"Références"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.13
//////////////////////////////////////////////////////////////////////////
/*! used in member documentation blocks to produce a list of
* members that are implemented by this one.
*/
virtual
QCString
trImplementedFromList
(
int
numEntries
)
{
return
"Implémente "
+
trWriteList
(
numEntries
)
+
"."
;
}
/*! used in member documentation blocks to produce a list of
* all members that implementation this member.
*/
virtual
QCString
trImplementedInList
(
int
numEntries
)
{
return
"Implémenté dans "
+
trWriteList
(
numEntries
)
+
"."
;
}
};
#endif
src/translator_hr.h
View file @
ac16b765
...
...
@@ -44,11 +44,13 @@
// - Added strings for 1.2.11
// - better output for C documentation (trCompoundMembersDescription(), trClassDocumentation())
//
// 2001/11/13
// - Added strings for 1.2.13
#ifndef TRANSLATOR_HR_H
#define TRANSLATOR_HR_H
class
TranslatorCroatian
:
public
Translator
Adapter_1_2_13
class
TranslatorCroatian
:
public
Translator
{
private
:
/*! to avoid macro redefinition from translator_cz.h */
...
...
@@ -1019,6 +1021,25 @@ class TranslatorCroatian : public TranslatorAdapter_1_2_13
{
return
"Reference"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.13
//////////////////////////////////////////////////////////////////////////
/*! used in member documentation blocks to produce a list of
* members that are implemented by this one.
*/
virtual
QCString
trImplementedFromList
(
int
numEntries
)
{
return
"Implementira "
+
trWriteList
(
numEntries
)
+
"."
;
}
/*! used in member documentation blocks to produce a list of
* all members that implementation this member.
*/
virtual
QCString
trImplementedInList
(
int
numEntries
)
{
return
"Implementirano u "
+
trWriteList
(
numEntries
)
+
"."
;
}
};
#endif
src/translator_it.h
View file @
ac16b765
...
...
@@ -19,9 +19,8 @@
*
* Revision history
*
* Initial Italian Translation by Ahmed Aldo Faisal
* Revised and completed by Alessandro Falappa (since June 1999)
* Updates:
* 2002/01: translated new items used since version 1.2.13
* updated e-mail address
* 2001/11: corrected the translation fixing the issues reported by the translator.pl script
* translated new items used since version 1.2.11
* 2001/08: corrected the translation fixing the issues reported by the translator.pl script
...
...
@@ -41,6 +40,8 @@
* commented translator.h for the english language
* 1999/09: corrected some small typos in the "new since 0.49-990425" section
* added the "new since 0.49-990728" section
* 1999/06: revised and completed by Alessandro Falappa (actual mantainer)
* 1999/??: initial italian translation by Ahmed Aldo Faisal
*/
/******************************************************************************
...
...
@@ -55,13 +56,13 @@
* tecnica (ad es "lista dei file" e non "lista dei files")
*
* Se avete suggerimenti sulla traduzione di alcuni termini o volete segnalare
* eventuali sviste potete scrivermi all'indirizzo: a
falappa@interfree.i
t
* eventuali sviste potete scrivermi all'indirizzo: a
lessandro@falappa.ne
t
*/
#ifndef TRANSLATOR_IT_H
#define TRANSLATOR_IT_H
class
TranslatorItalian
:
public
Translator
Adapter_1_2_13
class
TranslatorItalian
:
public
Translator
{
public
:
...
...
@@ -1321,6 +1322,26 @@ class TranslatorItalian : public TranslatorAdapter_1_2_13
{
return
"Riferimenti"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.13
//////////////////////////////////////////////////////////////////////////
/*! used in member documentation blocks to produce a list of
* members that are implemented by this one.
*/
virtual
QCString
trImplementedFromList
(
int
numEntries
)
{
return
"Implementa "
+
trWriteList
(
numEntries
)
+
"."
;
}
/*! used in member documentation blocks to produce a list of
* all members that implementation this member.
*/
virtual
QCString
trImplementedInList
(
int
numEntries
)
{
return
"Implementato in "
+
trWriteList
(
numEntries
)
+
"."
;
}
};
#endif
src/translator_ru.h
View file @
ac16b765
...
...
@@ -50,7 +50,7 @@
#ifndef TRANSLATOR_RU_H
#define TRANSLATOR_RU_H
class
TranslatorRussian
:
public
Translator
Adapter_1_2_13
class
TranslatorRussian
:
public
Translator
{
private
:
/*! The Decode() inline assumes the source written in the
...
...
@@ -746,7 +746,12 @@ class TranslatorRussian : public TranslatorAdapter_1_2_13
*/
virtual
QCString
trReimplementedFromList
(
int
numEntries
)
{
return
decode
(
" "
)
+
trWriteList
(
numEntries
)
+
"."
;
QCString
result
=
" "
;
if
(
numEntries
>
1
)
result
+=
" "
;
else
result
+=
" "
;
return
decode
(
result
+
" "
)
+
trWriteList
(
numEntries
)
+
"."
;
}
/*! used in member documentation blocks to produce a list of
...
...
@@ -1369,6 +1374,26 @@ class TranslatorRussian : public TranslatorAdapter_1_2_13
return
" "
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.13
//////////////////////////////////////////////////////////////////////////
/*! used in member documentation blocks to produce a list of
* members that are implemented by this one.
*/
virtual
QCString
trImplementedFromList
(
int
numEntries
)
{
return
" "
+
trWriteList
(
numEntries
)
+
"."
;
}
/*! used in member documentation blocks to produce a list of
* all members that implementation this member.
*/
virtual
QCString
trImplementedInList
(
int
numEntries
)
{
return
" "
+
trWriteList
(
numEntries
)
+
"."
;
}
};
#endif
src/util.cpp
View file @
ac16b765
...
...
@@ -570,7 +570,7 @@ QCString removeRedundantWhiteSpace(const QCString &s)
result
+=
"< "
;
// insert extra space for layouting (nested) templates
}
else
if
(
i
>
0
&&
c
==
'>'
&&
// current char is a >
(
isId
(
s
.
at
(
i
-
1
))
||
isspace
(
s
.
at
(
i
-
1
)))
&&
// prev char is an id char or space
(
isId
(
s
.
at
(
i
-
1
))
||
isspace
(
s
.
at
(
i
-
1
))
||
s
.
at
(
i
-
1
)
==
'*'
||
s
.
at
(
i
-
1
)
==
'&'
)
&&
// prev char is an id char or space
(
i
<
8
||
!
findOperator
(
s
,
i
))
// string in front is not "operator"
)
{
...
...
@@ -1546,6 +1546,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
return
TRUE
;
}
#if 0
static void mergeArgument(Argument *srcA,Argument *dstA,
const QCString &className,
const QCString &namespaceName,
...
...
@@ -1779,6 +1780,7 @@ done:
// dstA->type.data(),dstA->name.data());
return;
}
#endif
/*!
...
...
@@ -1885,8 +1887,8 @@ bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl,
++
srcAli
,
++
dstAli
)
{
mergeArgument
(
srcA
,
dstA
,
className
,
namespaceName
,
usingNamespaces
,
usingClasses
);
//
mergeArgument(srcA,dstA,className,namespaceName,
//
usingNamespaces,usingClasses);
}
MATCH
return
TRUE
;
// all arguments match
...
...
@@ -2213,7 +2215,12 @@ bool getDefs(const QCString &scName,const QCString &memberName,
}
}
}
if
(
found
)
return
TRUE
;
if
(
found
)
{
gd
=
md
->
getGroupDef
();
if
(
gd
&&
gd
->
isLinkable
())
nd
=
0
;
else
gd
=
0
;
return
TRUE
;
}
}
else
// no scope => global function
{
...
...
src/xmlgen.cpp
View file @
ac16b765
...
...
@@ -930,7 +930,7 @@ static void writeXMLDocBlock(QTextStream &t,
const
QCString
&
fileName
,
int
lineNr
,
const
QCString
&
scope
,
const
QCString
&
name
,
MemberDef
*
md
,
const
QCString
&
text
)
{
QCString
stext
=
text
.
stripWhiteSpace
();
...
...
@@ -941,7 +941,7 @@ static void writeXMLDocBlock(QTextStream &t,
fileName
,
// input definition file
lineNr
,
// input definition line
scope
,
// scope (which should not be linked to)
name
,
// member (which should not be linked to)
md
,
// member (which should not be linked to)
stext
+
"
\n
"
// actual text
);
xmlGen
->
endParMode
();
...
...
@@ -1112,10 +1112,9 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
if
(
isFunc
)
//function
{
ArgumentList
*
declAl
=
new
ArgumentList
;
ArgumentList
*
declAl
=
md
->
declArgumentList
()
;
ArgumentList
*
defAl
=
md
->
argumentList
();
stringToArgumentList
(
md
->
argsString
(),
declAl
);
if
(
declAl
->
count
()
>
0
)
if
(
declAl
&&
declAl
->
count
()
>
0
)
{
ArgumentListIterator
declAli
(
*
declAl
);
ArgumentListIterator
defAli
(
*
defAl
);
...
...
@@ -1164,7 +1163,6 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
if
(
defArg
)
++
defAli
;
}
}
delete
declAl
;
}
else
if
(
md
->
memberType
()
==
MemberDef
::
Define
&&
md
->
argsString
()
!=
0
)
// define
...
...
@@ -1213,10 +1211,10 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
}
}
t
<<
" <briefdescription>"
<<
endl
;
writeXMLDocBlock
(
t
,
md
->
getDefFileName
(),
md
->
getDefLine
(),
scopeName
,
md
->
name
()
,
md
->
briefDescription
());
writeXMLDocBlock
(
t
,
md
->
getDefFileName
(),
md
->
getDefLine
(),
scopeName
,
md
,
md
->
briefDescription
());
t
<<
" </briefdescription>"
<<
endl
;
t
<<
" <detaileddescription>"
<<
endl
;
writeXMLDocBlock
(
t
,
md
->
getDefFileName
(),
md
->
getDefLine
(),
scopeName
,
md
->
name
()
,
md
->
documentation
());
writeXMLDocBlock
(
t
,
md
->
getDefFileName
(),
md
->
getDefLine
(),
scopeName
,
md
,
md
->
documentation
());
t
<<
" </detaileddescription>"
<<
endl
;
if
(
md
->
getDefLine
()
!=-
1
)
{
...
...
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