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
2ed43d4c
Commit
2ed43d4c
authored
Feb 10, 2005
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.4.1-20050210
parent
c00ba20b
Changes
19
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
1038 additions
and
246 deletions
+1038
-246
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
commands.doc
doc/commands.doc
+11
-6
config.doc
doc/config.doc
+15
-0
language.doc
doc/language.doc
+3
-3
translator_report.txt
doc/translator_report.txt
+513
-97
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
Makefile.in
src/Makefile.in
+1
-1
code.l
src/code.l
+32
-12
commentscan.l
src/commentscan.l
+18
-11
docparser.cpp
src/docparser.cpp
+2
-1
doctokenizer.l
src/doctokenizer.l
+13
-0
doxygen.cpp
src/doxygen.cpp
+1
-1
namespacedef.cpp
src/namespacedef.cpp
+44
-33
scanner.l
src/scanner.l
+109
-49
translator.h
src/translator.h
+10
-10
translator_ua.h
src/translator_ua.h
+257
-14
xmlgen.cpp
src/xmlgen.cpp
+3
-2
No files found.
INSTALL
View file @
2ed43d4c
DOXYGEN Version 1.4.1-20050
129
DOXYGEN Version 1.4.1-20050
210
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (
29 Jan
uary 2005)
Dimitri van Heesch (
10 Febr
uary 2005)
README
View file @
2ed43d4c
DOXYGEN Version 1.4.1_20050
129
DOXYGEN Version 1.4.1_20050
210
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) (
29 Jan
uary 2005)
Dimitri van Heesch (dimitri@stack.nl) (
10 Febr
uary 2005)
VERSION
View file @
2ed43d4c
1.4.1-20050
129
1.4.1-20050
210
doc/commands.doc
View file @
2ed43d4c
...
...
@@ -1430,8 +1430,7 @@ void memcpy(void *dest, const void *src, size_t n);
tag of doxygen's configuration file.
If \<file-name\> itself is not unique for the set of example files specified
by the
\ref cfg_example_path "EXAMPLE_PATH" tag, you can include part
by the \ref cfg_example_path "EXAMPLE_PATH" tag, you can include part
of the absolute path to disambiguate it.
Using the \\include command is equivalent to inserting the file into
...
...
@@ -1446,9 +1445,13 @@ void memcpy(void *dest, const void *src, size_t n);
\ref cmddontinclude "\\dontinclude" command in combination with
the \ref cmdline "\\line", \ref cmdskip "\\skip",
\ref cmdskipline "\\skipline",
and \\until commands.
and \\until commands.
\note Doxygen's special commands do not work inside blocks of code.
It is allowed to nest C-style comments inside a code block though.
\sa section \ref cmdexample "\\example" and \ref cmddontinclude "\\dontinclude".
\sa section \ref cmdexample "\\example", \ref cmddontinclude "\\dontinclude", and
section \ref cmdverbatim "\\verbatim".
<hr>
\section cmdincludelineno \\includelineno <file-name>
...
...
@@ -1635,7 +1638,7 @@ void memcpy(void *dest, const void *src, size_t n);
classes and members that are documented are automatically replaced by
links to the documentation.
\sa section \ref cmdendcode "\\endcode", section \ref cmdverbatim "\\verbatim"
\sa section \ref cmdendcode "\\endcode", section \ref cmdverbatim "\\verbatim"
.
<hr>
\section cmdcopydoc \\copydoc <link-object>
...
...
@@ -1805,7 +1808,7 @@ class C {};
\addindex \\endverbatim
Ends a block of text that was started with a \\verbatim command.
\sa section \ref cmdverbatim "\\verbatim".
\sa section \ref cmd
endcode "\\endcode", section \ref cmd
verbatim "\\verbatim".
<hr>
\section cmdendxmlonly \\endxmlonly
...
...
@@ -2020,6 +2023,8 @@ class C {};
\warning Make sure you include a \\endverbatim command for each
\\verbatim command or the parser will get confused!
\sa section \ref cmdcode "\\code", and section \ref cmdverbinclude "\\verbinclude".
<hr>
\section cmdxmlonly \\xmlonly
...
...
doc/config.doc
View file @
2ed43d4c
...
...
@@ -121,6 +121,7 @@ followed by the descriptions of the tags grouped by category.
\
refitem
cfg_generate_treeview
GENERATE_TREEVIEW
\
refitem
cfg_generate_xml
GENERATE_XML
\
refitem
cfg_graphical_hierarchy
GRAPHICAL_HIERARCHY
\
refitem
cfg_group_graphs
GROUP_GRAPHS
\
refitem
cfg_have_dot
HAVE_DOT
\
refitem
cfg_hhc_location
HHC_LOCATION
\
refitem
cfg_hide_friend_compounds
HIDE_FRIEND_COMPOUNDS
...
...
@@ -202,6 +203,7 @@ followed by the descriptions of the tags grouped by category.
\
refitem
cfg_template_relations
TEMPLATE_RELATIONS
\
refitem
cfg_toc_expand
TOC_EXPAND
\
refitem
cfg_treeview_width
TREEVIEW_WIDTH
\
refitem
cfg_uml_look
UML_LOOK
\
refitem
cfg_use_windows_encoding
USE_WINDOWS_ENCODING
\
refitem
cfg_verbatim_headers
VERBATIM_HEADERS
\
refitem
cfg_warn_format
WARN_FORMAT
...
...
@@ -1586,6 +1588,19 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
indirect
implementation
dependencies
(
inheritance
,
containment
,
and
class
references
variables
)
of
the
class
with
other
documented
classes
.
\
anchor
cfg_group_graphs
<
dt
>\
c
GROUP_GRAPHS
<
dd
>
\
addindex
GROUP_GRAPHS
If
the
GROUP_GRAPHS
and
HAVE_DOT
tags
are
set
to
YES
then
doxygen
will
generate
a
graph
for
groups
,
showing
the
direct
groups
dependencies
.
\
anchor
cfg_uml_look
<
dt
>\
c
UML_LOOK
<
dd
>
\
addindex
UML_LOOK
If
the
UML_LOOK
tag
is
set
to
YES
doxygen
will
generate
inheritance
and
collaboration
diagrams
in
a
style
similar
to
the
OMG
's Unified Modeling
Language.
\anchor cfg_template_relations
<dt>\c TEMPLATE_RELATIONS <dd>
\addindex TEMPLATE_RELATIONS
...
...
doc/language.doc
View file @
2ed43d4c
...
...
@@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other
than English (the default). The output language is chosen through the
configuration file (with default name and known as Doxyfile).
Currently (version 1.4.1), 30 languages
Currently (version 1.4.1
-20050129
), 30 languages
are supported (sorted alphabetically):
Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese
Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French,
...
...
@@ -240,7 +240,7 @@ when the translator was updated.
<td>Ukrainian</td>
<td>Olexij Tkatchenko</td>
<td>olexij.tkatchenko at parcs dot de</td>
<td>
1.2.11
</td>
<td>
up-to-date
</td>
</tr>
<!-- table content end -->
</table>
...
...
@@ -329,7 +329,7 @@ when the translator was updated.
\hline
Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} & up-to-date \\
\hline
Ukrainian & Olexij Tkatchenko & {\tt\tiny olexij.tkatchenko@parcs.de} &
1.2.11
\\
Ukrainian & Olexij Tkatchenko & {\tt\tiny olexij.tkatchenko@parcs.de} &
up-to-date
\\
\hline
\end{tabular}
\endlatexonly
...
...
doc/translator_report.txt
View file @
2ed43d4c
This diff is collapsed.
Click to expand it.
packages/rpm/doxygen.spec
View file @
2ed43d4c
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.4.1_20050
129
Version: 1.4.1_20050
210
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
...
...
src/Makefile.in
View file @
2ed43d4c
...
...
@@ -46,7 +46,7 @@ clean: Makefile.libdoxygen Makefile.libdoxycfg Makefile.doxygen Makefile.doxytag
distclean
:
clean
-
$(RM)
scanner.cpp code.cpp config.cpp pre.cpp ce_lex.cpp
\
ce_parse.cpp ce_parse.h doxytag.cpp tag.cpp
\
ce_parse.cpp ce_parse.h doxytag.cpp tag.cpp
commentscan.cpp
\
declinfo.cpp defargs.cpp commentcnv.cpp doctokenizer.cpp
FORCE
:
src/code.l
View file @
2ed43d4c
...
...
@@ -290,23 +290,32 @@ static VariableContext g_theVarContext;
class CallContext
{
public:
struct Ctx
{
Ctx() : name(g_name), type(g_type), cd(0) {}
QCString name;
QCString type;
ClassDef *cd;
};
CallContext()
{
m_classList.append(0);
m_classList.append(new Ctx);
m_classList.setAutoDelete(TRUE);
}
virtual ~CallContext() {}
void setClass(ClassDef *cd)
{
if (cd)
Ctx *ctx = m_classList.getLast();
if (ctx)
{
DBG_CTX((stderr,"** Set call context %s (%p)\n",cd==0 ? "<null>" : cd->name().data(),cd));
m_classList.removeLast();
m_classList.append(cd);
ctx->cd=cd;
}
}
void pushScope()
{
m_classList.append(
0
);
m_classList.append(
new Ctx
);
DBG_CTX((stderr,"** Push call context %d\n",m_classList.count()));
}
void popScope()
...
...
@@ -314,6 +323,12 @@ class CallContext
if (m_classList.count()>1)
{
DBG_CTX((stderr,"** Pop call context %d\n",m_classList.count()));
Ctx *ctx = m_classList.getLast();
if (ctx)
{
g_name = ctx->name;
g_type = ctx->type;
}
m_classList.removeLast();
}
else
...
...
@@ -324,16 +339,20 @@ class CallContext
void clear()
{
DBG_CTX((stderr,"** Clear call context\n"));
m_classList.clear();
m_classList.append(0);
Ctx *ctx = m_classList.getLast();
if (ctx)
{
ctx->cd=0;
}
}
ClassDef *getClass() const
{
return m_classList.getLast();
Ctx *ctx = m_classList.getLast();
if (ctx) return ctx->cd; else return 0;
}
private:
QList<C
lassDef
> m_classList;
QList<C
tx
> m_classList;
};
static CallContext g_theCallContext;
...
...
@@ -761,7 +780,7 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
{
cd=getResolvedClass(d,g_sourceFileDef,className.left(i),&md);
}
//
printf(
"is found as a type %s\n",cd?cd->name().data():"<null>");
//
fprintf(stderr,
"is found as a type %s\n",cd?cd->name().data():"<null>");
}
else
{
...
...
@@ -928,7 +947,7 @@ static bool generateClassMemberLink(BaseCodeDocInterface &ol,ClassDef *mcd,const
if (mcd)
{
MemberDef *xmd = mcd->getMemberByName(memName);
//
printf(
"generateClassMemberLink(class=%s,member=%s)=%p\n",mcd->name().data(),memName,xmd);
//
fprintf(stderr,
"generateClassMemberLink(class=%s,member=%s)=%p\n",mcd->name().data(),memName,xmd);
if (xmd)
{
// extract class definition of the return type in order to resolve
...
...
@@ -967,7 +986,7 @@ static bool generateClassMemberLink(BaseCodeDocInterface &ol,ClassDef *mcd,const
// add usage reference
if (g_currentDefinition && g_currentMemberDef &&
xmd!=g_currentMemberDef &&
g_insideBody)
/*xmd!=g_currentMemberDef &&*/
g_insideBody)
{
addDocCrossReference(g_currentMemberDef,xmd);
}
...
...
@@ -2415,6 +2434,7 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
if (*yytext==';') g_searchingForBody=FALSE;
if (!g_inClass && !g_type.isEmpty())
{
//fprintf(stderr,"add variable g_type=%s g_name=%s)\n",g_type.data(),g_name.data());
g_theVarContext.addVariable(g_type,g_name);
}
g_parmType.resize(0);g_parmName.resize(0);
...
...
src/commentscan.l
View file @
2ed43d4c
...
...
@@ -412,6 +412,7 @@ static void addXRefItem(const char *listName,const char *itemTitle,const char *l
sectionTitle,SectionInfo::Anchor);
Doxygen::sectionDict.insert(anchorLabel,si);
docEntry->anchors->append(si);
outputXRef.resize(0);
}
//current->brief = slString; // restore orginial brief desc.
}
...
...
@@ -643,7 +644,7 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
* grouping commands (e.g. @{ and @})
*/
<Comment>{CMD}{CMD}[a-z_A-Z]
*
{B}* { // escaped command
<Comment>{CMD}{CMD}[a-z_A-Z]
+
{B}* { // escaped command
addOutput(yytext);
}
<Comment>("\\"[a-z_A-Z]+)+"\\" { // directory (or chain of commands!)
...
...
@@ -1116,8 +1117,8 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
<SectionLabel>{LABELID} { // first argyment
sectionLabel=yytext;
addOutput(yytext);
sectionTitle.resize(0);
current->doc+=yytext;
BEGIN(SectionTitle);
}
<SectionLabel>{DOCNL} { // missing argument
...
...
@@ -1151,15 +1152,19 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
}
<SectionTitle>[^\n@\\]* { // any character without special meaning
sectionTitle+=yytext;
current->doc+=yytext;
addOutput(yytext);
}
<SectionTitle>("\\\\"|"@@"){ID} { // unescape escaped command
sectionTitle+=&yytext[1];
addOutput(yytext);
}
<SectionTitle>
("\\\\"|"@@") { // unescape escaped command
sectionTitle+=
*yytext
;
current->doc+=*yytext
;
<SectionTitle>
{CMD}[$@\\&~<>#%] { // unescape escaped character
sectionTitle+=
yytext[1]
;
addOutput(yytext)
;
}
<SectionTitle>. { // anything else
sectionTitle+=yytext;
current->doc+=yytext
;
addOutput(*yytext)
;
}
/* ----- handle arguments of the anchor command ------- */
...
...
@@ -1168,7 +1173,7 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
SectionInfo *si = new SectionInfo(yyFileName,yytext,0,SectionInfo::Anchor);
Doxygen::sectionDict.insert(yytext,si);
current->anchors->append(si);
addOutput(yytext);
addOutput(yytext);
BEGIN( Comment );
}
<AnchorLabel>{DOCNL} { // missing argument
...
...
@@ -1646,8 +1651,9 @@ static void handleSection(const QCString &s)
BEGIN(SectionLabel);
}
static void handleAnchor(const QCString &)
static void handleAnchor(const QCString &
s
)
{
addOutput("@"+s+" ");
BEGIN(AnchorLabel);
}
...
...
@@ -1825,8 +1831,8 @@ bool parseCommentBlock(/* in,out */ Entry *curEntry,
/* in,out */ Protection &prot
)
{
//fprintf(stderr,"
isBrief=%d isJavaDocStyle
=%d\n",
// isBrief,isJavaDocStyle);
//fprintf(stderr,"
parseCommentBlock() isBrief=%d isJavaDocStyle=%d lineNr
=%d\n",
// isBrief,isJavaDocStyle
,lineNr
);
initParser();
guards.setAutoDelete(TRUE);
guards.clear();
...
...
@@ -1840,6 +1846,7 @@ bool parseCommentBlock(/* in,out */ Entry *curEntry,
//inBody = foundInBody;
protection = prot;
needNewEntry = FALSE;
outputXRef.resize(0);
setOutput( isBrief || isJavaDocStyle ? OutputBrief : OutputDoc );
briefEndsAtDot = isJavaDocStyle;
commentScanYYrestart( commentScanYYin );
...
...
src/docparser.cpp
View file @
2ed43d4c
...
...
@@ -1332,7 +1332,7 @@ static void readTextFileByName(const QString &file,QString &text)
FileDef
*
fd
;
if
((
fd
=
findFileDef
(
Doxygen
::
exampleNameDict
,
file
,
ambig
)))
{
text
=
fileToString
(
fd
->
absFilePath
(),
Config_getBool
(
"FILTER_SOURCE_FILES"
)
);
text
=
fileToString
(
fd
->
absFilePath
(),
FALSE
);
}
else
if
(
ambig
)
{
...
...
@@ -5126,6 +5126,7 @@ DocNode *validatingParseDoc(const char *fileName,int startLine,
g_paramsFound
.
clear
();
g_sectionDict
=
0
;
//sections;
//printf("Starting comment block at %s:%d\n",g_fileName.data(),startLine);
doctokenizerYYlineno
=
startLine
;
doctokenizerYYinit
(
input
,
g_fileName
);
...
...
src/doctokenizer.l
View file @
2ed43d4c
...
...
@@ -252,6 +252,18 @@ static void handleHtmlTag()
g_token->endTag = startNamePos==2;
}
static QString stripEmptyLines(const char *s)
{
int result=0,p=0;
for (;;)
{
int c;
while ((c=s[p]) && (c==' ' || c=='\t' || c=='\r')) p++;
if (s[p]=='\n') result=++p; else break;
}
return &s[result];
}
//--------------------------------------------------------------------------
#undef YY_INPUT
...
...
@@ -565,6 +577,7 @@ REFWORD ("#"|"::")?({ID}("."|"#"|"::"|"-"))*{ID}{FUNCARG}?
g_token->verb+=yytext;
}
<St_Verbatim>{CMD}"endverbatim" {
g_token->verb=stripEmptyLines(g_token->verb);
return RetVal_OK;
}
<St_Verbatim>[^\\@\n]+ |
...
...
src/doxygen.cpp
View file @
2ed43d4c
...
...
@@ -8775,7 +8775,7 @@ void generateOutput()
}
Doxygen
::
tagFile
.
setDevice
(
tag
);
Doxygen
::
tagFile
.
setEncoding
(
QTextStream
::
Latin1
);
Doxygen
::
tagFile
<<
"<?xml version='1.0' encoding='ISO-8859-1' standalone='yes'?>"
<<
endl
;
Doxygen
::
tagFile
<<
"<?xml version='1.0' encoding='ISO-8859-1' standalone='yes'
?>"
<<
endl
;
Doxygen
::
tagFile
<<
"<tagfile>"
<<
endl
;
}
...
...
src/namespacedef.cpp
View file @
2ed43d4c
...
...
@@ -516,7 +516,17 @@ void NamespaceDef::combineUsingRelations()
void
NamespaceSDict
::
writeDeclaration
(
OutputList
&
ol
,
bool
localName
)
{
if
(
count
()
==
0
)
return
;
if
(
count
()
==
0
)
return
;
// no namespaces in the list
SDict
<
NamespaceDef
>::
Iterator
ni
(
*
this
);
NamespaceDef
*
nd
;
bool
found
=
FALSE
;
for
(
ni
.
toFirst
();(
nd
=
ni
.
current
())
&&
!
found
;
++
ni
)
{
if
(
nd
->
isLinkable
())
found
=
TRUE
;
}
if
(
!
found
)
return
;
// no linkable namespaces in the list
// write list of namespaces
ol
.
startMemberHeader
();
bool
javaOpt
=
Config_getBool
(
"OPTIMIZE_OUTPUT_JAVA"
);
...
...
@@ -530,41 +540,42 @@ void NamespaceSDict::writeDeclaration(OutputList &ol,bool localName)
}
ol
.
endMemberHeader
();
ol
.
startMemberList
();
SDict
<
NamespaceDef
>::
Iterator
ni
(
*
this
);
NamespaceDef
*
nd
;
for
(
ni
.
toFirst
();(
nd
=
ni
.
current
());
++
ni
)
{
ol
.
startMemberItem
(
0
);
if
(
javaOpt
)
{
ol
.
docify
(
"package "
);
}
else
{
ol
.
docify
(
"namespace "
);
}
ol
.
insertMemberAlign
();
QCString
name
;
if
(
localName
)
{
name
=
nd
->
localName
();
}
else
{
name
=
nd
->
displayName
();
}
ol
.
writeObjectLink
(
nd
->
getReference
(),
nd
->
getOutputFileBase
(),
0
,
name
);
if
(
!
Config_getString
(
"GENERATE_TAGFILE"
).
isEmpty
())
if
(
nd
->
isLinkable
())
{
Doxygen
::
tagFile
<<
" <namespace>"
<<
convertToXML
(
nd
->
name
())
<<
"</namespace>"
<<
endl
;
}
ol
.
endMemberItem
();
if
(
!
nd
->
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"BRIEF_MEMBER_DESC"
))
{
ol
.
startMemberDescription
();
ol
.
parseDoc
(
nd
->
briefFile
(),
nd
->
briefLine
(),
nd
,
0
,
nd
->
briefDescription
(),
FALSE
,
FALSE
);
ol
.
endMemberDescription
();
ol
.
newParagraph
();
ol
.
startMemberItem
(
0
);
if
(
javaOpt
)
{
ol
.
docify
(
"package "
);
}
else
{
ol
.
docify
(
"namespace "
);
}
ol
.
insertMemberAlign
();
QCString
name
;
if
(
localName
)
{
name
=
nd
->
localName
();
}
else
{
name
=
nd
->
displayName
();
}
ol
.
writeObjectLink
(
nd
->
getReference
(),
nd
->
getOutputFileBase
(),
0
,
name
);
if
(
!
Config_getString
(
"GENERATE_TAGFILE"
).
isEmpty
())
{
Doxygen
::
tagFile
<<
" <namespace>"
<<
convertToXML
(
nd
->
name
())
<<
"</namespace>"
<<
endl
;
}
ol
.
endMemberItem
();
if
(
!
nd
->
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"BRIEF_MEMBER_DESC"
))
{
ol
.
startMemberDescription
();
ol
.
parseDoc
(
nd
->
briefFile
(),
nd
->
briefLine
(),
nd
,
0
,
nd
->
briefDescription
(),
FALSE
,
FALSE
);
ol
.
endMemberDescription
();
ol
.
newParagraph
();
}
}
}
ol
.
endMemberList
();
...
...
src/scanner.l
View file @
2ed43d4c
...
...
@@ -183,6 +183,7 @@ static QCString docBlock;
static QCString docBlockName;
static bool docBlockInBody;
static bool docBlockJavaStyle;
static char docBlockTerm;
//-----------------------------------------------------------------------------
...
...
@@ -336,51 +337,8 @@ static void addMemberGroupDocs()
//-----------------------------------------------------------------
static void handleCommentBlock(const QCString &doc,bool brief)
{
if (brief)
{
current->briefFile = yyFileName;
current->briefLine = yyLineNr;
}
else
{
current->docFile = yyFileName;
current->docLine = yyLineNr;
}
if (docBlockInBody)
{
if (previous==0)
{
ASSERT(previous!=0); // shouldn't happen
return;
}
if (!previous->doc.isEmpty())
{ // start a new paragraph for the next piece of text found in the body
previous->doc=previous->doc.stripWhiteSpace()+"\n\n";
}
}
if (parseCommentBlock(
docBlockInBody ? previous : current,
doc, // text
yyFileName, // file
yyLineNr, // line
docBlockInBody ? FALSE : brief,
docBlockInBody ? FALSE : docBlockJavaStyle,
protection)
) // need to start a new entry
{
if (current->section==Entry::MEMBERGRP_SEC)
{
addMemberGroupDocs();
}
current_root->addSubEntry(current);
previous = current;
current = new Entry ;
initEntry();
}
}
static void startCommentBlock(bool);
static void handleCommentBlock(const QCString &doc,bool brief);
//-----------------------------------------------------------------
static void addXRefItem(bool inBody,const char *listName,const char *itemTitle,const char *listTitle)
...
...
@@ -2034,7 +1992,26 @@ IDLATTR ("["[^\]]*"]"){BN}*
<FindMembers,MemberSpec,Function,NextSemi,BitFields,ReadInitializer,OldStyleArgs>";"{BN}*("/**"|"//!"|"/*!"|"///")"<" {
lineCount();
if (current->bodyLine==-1)
{
current->bodyLine=yyLineNr;
}
#ifdef COMMENTSCAN
docBlockContext = YY_START;
docBlockInBody = FALSE;
docBlockJavaStyle = yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF");
docBlock.resize(0);
docBlockTerm = ';';
if (yytext[yyleng-3]=='/')
{
startCommentBlock(TRUE);
BEGIN( DocLine );
}
else
{
startCommentBlock(FALSE);
BEGIN( DocBlock );
}
#else
lastAfterDocContext = YY_START;
afterDocTerminator = ';';
if (yytext[yyleng-3]=='/')
...
...
@@ -2060,9 +2037,27 @@ IDLATTR ("["[^\]]*"]"){BN}*
current->docFile = yyFileName;
BEGIN(AfterDoc);
}
#endif
}
<MemberSpec,FindFields,FindMembers,NextSemi,BitFields,ReadInitializer,OldStyleArgs>","{BN}*("/**"|"//!"|"/*!"|"///")"<" {
lineCount();
#ifdef COMMENTSCAN
docBlockContext = YY_START;
docBlockInBody = FALSE;
docBlockJavaStyle = yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF");
docBlock.resize(0);
docBlockTerm = ',';
if (yytext[yyleng-3]=='/')
{
startCommentBlock(TRUE);
BEGIN( DocLine );
}
else
{
startCommentBlock(FALSE);
BEGIN( DocBlock );
}
#else
lastAfterDocContext = YY_START;
afterDocTerminator = ',';
if (yytext[yyleng-3]=='/')
...
...
@@ -2088,6 +2083,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
current->docFile = yyFileName;
BEGIN(AfterDoc);
}
#endif
}
<DefineEnd,FindFields,FindFieldArg,ReadInitializer,OldStyleArgs>{BN}*("/**"|"//!"|"/*!"|"///")"<" {
lineCount();
...
...
@@ -4142,6 +4138,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
docBlockInBody = YY_START==SkipCurly;
docBlockJavaStyle = FALSE;
docBlock.resize(0);
startCommentBlock(FALSE);
BEGIN( DocBlock );
#else
BEGIN( Doc );
...
...
@@ -4179,6 +4176,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
current->brief.resize(0);
}
}
startCommentBlock(FALSE);
BEGIN( DocBlock );
#else
if (!Config_getBool("JAVADOC_AUTOBRIEF")) // use the Qt style
...
...
@@ -4243,6 +4241,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
docBlockInBody = YY_START==SkipCurly;
docBlockJavaStyle = FALSE;
docBlock.resize(0);
startCommentBlock(TRUE);
BEGIN( DocLine );
#else
BEGIN( LineDoc );
...
...
@@ -4270,6 +4269,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
docBlockInBody = YY_START==SkipCurly;
docBlockJavaStyle = FALSE;
docBlock.resize(0);
startCommentBlock(TRUE);
BEGIN( DocLine );
#else
BEGIN( LineDoc );
...
...
@@ -4296,8 +4296,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
else
{
if ((insideJava || insideCS || insideD) &&
current->name.isEmpty() &&
current->type.isEmpty()
current->name.isEmpty()
)
{
// static Java initializer
...
...
@@ -4305,6 +4304,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
if (current->stat)
{
current->name="[static initializer]";
current->type.resize(0);
}
else
{
...
...
@@ -4365,7 +4365,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
}
<DocBlock>^{B}*"*"+/{BN}+ { // start of a comment line
}
<DocBlock>("@@"|"\\\\"){ID}
{ // escaped command
<DocBlock>("@@"|"\\\\"){ID}
/[^a-z_A-Z0-9]
{ // escaped command
docBlock+=yytext;
}
<DocBlock>{CMD}("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"dot"|"code")/[^a-z_A-Z0-9] { // verbatim command (which could contain nested comments!)
...
...
@@ -4399,9 +4399,12 @@ IDLATTR ("["[^\]]*"]"){BN}*
REJECT;
}
}
<DocCopyBlock>[^@
\
*\\\n]+ { // any character that is not special
<DocCopyBlock>[^@
/
*\\\n]+ { // any character that is not special
docBlock+=yytext;
}
<DocCopyBlock>"/*"|"*/"|"//" {
docBlock+=yytext;
}
<DocCopyBlock>\n { // newline
docBlock+=*yytext;
yyLineNr++;
...
...
@@ -5259,6 +5262,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
}
<AnchorLabel>{LABELID} {
SectionInfo *si = new SectionInfo(yyFileName,yytext,0,SectionInfo::Anchor);
printf("New anchor file=%s label=%s\n",yyFileName,yytext);
Doxygen::sectionDict.insert(yytext,si);
current->anchors->append(si);
current->doc+=yytext;
...
...
@@ -6142,6 +6146,62 @@ IDLATTR ("["[^\]]*"]"){BN}*
//----------------------------------------------------------------------------
static void startCommentBlock(bool brief)
{
if (brief)
{
current->briefFile = yyFileName;
current->briefLine = yyLineNr;
}
else
{
current->docFile = yyFileName;
current->docLine = yyLineNr;
}
}
static void handleCommentBlock(const QCString &doc,bool brief)
{
if (docBlockInBody)
{
if (previous==0)
{
ASSERT(previous!=0); // shouldn't happen
goto exit;
}
if (!previous->doc.isEmpty())
{ // start a new paragraph for the next piece of text found in the body
previous->doc=previous->doc.stripWhiteSpace()+"\n\n";
}
}
if (parseCommentBlock(
docBlockInBody ? previous : current,
doc, // text
yyFileName, // file
brief ? current->briefLine : current->docLine, // line of block start
docBlockInBody ? FALSE : brief,
docBlockInBody ? FALSE : docBlockJavaStyle,
protection)
) // need to start a new entry
{
if (current->section==Entry::MEMBERGRP_SEC)
{
addMemberGroupDocs();
}
current_root->addSubEntry(current);
previous = current;
current = new Entry ;
initEntry();
}
exit:
if (docBlockTerm)
{
unput(docBlockTerm);
docBlockTerm=0;
}
}
#ifndef COMMENTSCAN
static void startGroup()
{
...
...
src/translator.h
View file @
2ed43d4c
...
...
@@ -92,7 +92,7 @@ class Translator
virtual
QCString
trClassHierarchy
()
=
0
;
virtual
QCString
trCompoundList
()
=
0
;
virtual
QCString
trFileList
()
=
0
;
virtual
QCString
trHeaderFiles
()
=
0
;
//
virtual QCString trHeaderFiles() = 0;
virtual
QCString
trCompoundMembers
()
=
0
;
virtual
QCString
trFileMembers
()
=
0
;
virtual
QCString
trRelatedPages
()
=
0
;
...
...
@@ -103,11 +103,11 @@ class Translator
virtual
QCString
trCompoundListDescription
()
=
0
;
virtual
QCString
trCompoundMembersDescription
(
bool
extractAll
)
=
0
;
virtual
QCString
trFileMembersDescription
(
bool
extractAll
)
=
0
;
virtual
QCString
trHeaderFilesDescription
()
=
0
;
//
virtual QCString trHeaderFilesDescription() = 0;
virtual
QCString
trExamplesDescription
()
=
0
;
virtual
QCString
trRelatedPagesDescription
()
=
0
;
virtual
QCString
trModulesDescription
()
=
0
;
virtual
QCString
trNoDescriptionAvailable
()
=
0
;
//
virtual QCString trNoDescriptionAvailable() = 0;
// index titles (the project name is prepended for these)
...
...
@@ -133,7 +133,7 @@ class Translator
virtual
QCString
trFunctionPrototypeDocumentation
()
=
0
;
virtual
QCString
trTypedefDocumentation
()
=
0
;
virtual
QCString
trEnumerationTypeDocumentation
()
=
0
;
virtual
QCString
trEnumerationValueDocumentation
()
=
0
;
//
virtual QCString trEnumerationValueDocumentation() = 0;
virtual
QCString
trFunctionDocumentation
()
=
0
;
virtual
QCString
trVariableDocumentation
()
=
0
;
virtual
QCString
trCompounds
()
=
0
;
...
...
@@ -141,9 +141,9 @@ class Translator
virtual
QCString
trWrittenBy
()
=
0
;
virtual
QCString
trClassDiagram
(
const
char
*
clName
)
=
0
;
virtual
QCString
trForInternalUseOnly
()
=
0
;
virtual
QCString
trReimplementedForInternalReasons
()
=
0
;
//
virtual QCString trReimplementedForInternalReasons() = 0;
virtual
QCString
trWarning
()
=
0
;
virtual
QCString
trBugsAndLimitations
()
=
0
;
//
virtual QCString trBugsAndLimitations() = 0;
virtual
QCString
trVersion
()
=
0
;
virtual
QCString
trDate
()
=
0
;
virtual
QCString
trReturns
()
=
0
;
...
...
@@ -223,7 +223,7 @@ class Translator
// new since 0.49-991003
//////////////////////////////////////////////////////////////////////////
virtual
QCString
trSources
()
=
0
;
//
virtual QCString trSources() = 0;
virtual
QCString
trDefinedAtLineInSourceFile
()
=
0
;
virtual
QCString
trDefinedInSourceFile
()
=
0
;
...
...
@@ -317,13 +317,13 @@ class Translator
// new since 1.2.4
//////////////////////////////////////////////////////////////////////////
virtual
QCString
trInterfaces
()
=
0
;
//
virtual QCString trInterfaces() = 0;
virtual
QCString
trClasses
()
=
0
;
virtual
QCString
trPackage
(
const
char
*
name
)
=
0
;
virtual
QCString
trPackageList
()
=
0
;
virtual
QCString
trPackageListDescription
()
=
0
;
virtual
QCString
trPackages
()
=
0
;
virtual
QCString
trPackageDocumentation
()
=
0
;
//
virtual QCString trPackageDocumentation() = 0;
virtual
QCString
trDefineValue
()
=
0
;
//////////////////////////////////////////////////////////////////////////
...
...
@@ -349,7 +349,7 @@ class Translator
virtual
QCString
trGroup
(
bool
first_capital
,
bool
singular
)
=
0
;
virtual
QCString
trPage
(
bool
first_capital
,
bool
singular
)
=
0
;
virtual
QCString
trMember
(
bool
first_capital
,
bool
singular
)
=
0
;
virtual
QCString
trField
(
bool
first_capital
,
bool
singular
)
=
0
;
//
virtual QCString trField(bool first_capital, bool singular) = 0;
virtual
QCString
trGlobal
(
bool
first_capital
,
bool
singular
)
=
0
;
//////////////////////////////////////////////////////////////////////////
...
...
src/translator_ua.h
View file @
2ed43d4c
This diff is collapsed.
Click to expand it.
src/xmlgen.cpp
View file @
2ed43d4c
...
...
@@ -493,6 +493,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
// - body code
// + template arguments
// (templateArguments(), definitionTemplateParameterLists())
// - call graph
// enum values are written as part of the enum
if
(
md
->
memberType
()
==
MemberDef
::
EnumValue
)
return
;
...
...
@@ -896,7 +897,7 @@ static void writeInnerClasses(const ClassSDict *cl,QTextStream &t)
ClassDef
*
cd
;
for
(
cli
.
toFirst
();(
cd
=
cli
.
current
());
++
cli
)
{
if
(
cd
->
name
().
find
(
'@'
)
!
=-
1
)
// skip anonymous scopes
if
(
cd
->
name
().
find
(
'@'
)
=
=-
1
)
// skip anonymous scopes
{
t
<<
" <innerclass refid=
\"
"
<<
cd
->
getOutputFileBase
()
<<
"
\"
>"
<<
convertToXML
(
cd
->
name
())
<<
"</innerclass>"
<<
endl
;
...
...
@@ -913,7 +914,7 @@ static void writeInnerNamespaces(const NamespaceSDict *nl,QTextStream &t)
NamespaceDef
*
nd
;
for
(
nli
.
toFirst
();(
nd
=
nli
.
current
());
++
nli
)
{
if
(
nd
->
name
().
find
(
'@'
)
!
=-
1
)
// skip anonymouse scopes
if
(
nd
->
name
().
find
(
'@'
)
=
=-
1
)
// skip anonymouse scopes
{
t
<<
" <innernamespace refid=
\"
"
<<
nd
->
getOutputFileBase
()
<<
"
\"
>"
<<
convertToXML
(
nd
->
name
())
<<
"</innernamespace>"
<<
endl
;
...
...
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