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
cd19d7a2
Commit
cd19d7a2
authored
Feb 21, 2010
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.6.3
parent
e2eb1d33
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
212 additions
and
58 deletions
+212
-58
INSTALL
INSTALL
+2
-2
README
README
+2
-2
configure
configure
+2
-2
commentscan.l
src/commentscan.l
+51
-0
definition.cpp
src/definition.cpp
+1
-1
docparser.cpp
src/docparser.cpp
+4
-1
dot.cpp
src/dot.cpp
+12
-3
doxygen.cpp
src/doxygen.cpp
+4
-6
htmldocvisitor.cpp
src/htmldocvisitor.cpp
+8
-4
index.cpp
src/index.cpp
+76
-7
latexgen.cpp
src/latexgen.cpp
+3
-4
scanner.l
src/scanner.l
+11
-11
util.cpp
src/util.cpp
+4
-4
util.h
src/util.h
+1
-1
vhdldocgen.cpp
src/vhdldocgen.cpp
+17
-1
vhdldocgen.h
src/vhdldocgen.h
+1
-1
vhdlscanner.l
src/vhdlscanner.l
+13
-8
No files found.
INSTALL
View file @
cd19d7a2
DOXYGEN Version 1.6.
2-20100216
DOXYGEN Version 1.6.
3
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (
16
February 2010)
Dimitri van Heesch (
21
February 2010)
README
View file @
cd19d7a2
DOXYGEN Version 1.6.
2_20100216
DOXYGEN Version 1.6.
3
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) (
16
February 2010)
Dimitri van Heesch (dimitri@stack.nl) (
21
February 2010)
configure
View file @
cd19d7a2
...
...
@@ -17,10 +17,10 @@
doxygen_version_major
=
1
doxygen_version_minor
=
6
doxygen_version_revision
=
2
doxygen_version_revision
=
3
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn
=
20100216
doxygen_version_mmn
=
NO
bin_dirs
=
`
echo
$PATH
|
sed
-e
"s/:/ /g"
`
...
...
src/commentscan.l
View file @
cd19d7a2
...
...
@@ -395,6 +395,8 @@ static bool inGroupParamFound;
static int braceCount;
static bool insidePre;
static bool parseMore;
static int g_condCount;
static int g_sectionLevel;
static int g_commentCount;
...
...
@@ -1691,6 +1693,48 @@ RCSTAG "$"{ID}":"[^\n$]+"$"
if (*yytext=='\n') yyLineNr++;
addOutput('\n');
}
<SkipInternal>[@\\]"if"/[ \t] {
g_condCount++;
}
<SkipInternal>[@\\]"ifnot"/[ \t] {
g_condCount++;
}
<SkipInternal>[@\\]/"endif" {
g_condCount--;
if (g_condCount<0) // handle conditional section around of \internal, see bug607743
{
unput('\\');
BEGIN(Comment);
}
}
<SkipInternal>[@\\]/"section"[ \t] {
if (g_sectionLevel>0)
{
unput('\\');
BEGIN(Comment);
}
}
<SkipInternal>[@\\]/"subsection"[ \t] {
if (g_sectionLevel>1)
{
unput('\\');
BEGIN(Comment);
}
}
<SkipInternal>[@\\]/"subsubsection"[ \t] {
if (g_sectionLevel>2)
{
unput('\\');
BEGIN(Comment);
}
}
<SkipInternal>[@\\]/"paragraph"[ \t] {
if (g_sectionLevel>3)
{
unput('\\');
BEGIN(Comment);
}
}
<SkipInternal>[^ \\@\n]+ { // skip non-special characters
}
<SkipInternal>. { // any other character
...
...
@@ -2134,6 +2178,10 @@ static bool handleSection(const QCString &s)
setOutput(OutputDoc);
addOutput("@"+s+" ");
BEGIN(SectionLabel);
if (s=="section") g_sectionLevel=1;
else if (s=="subsection") g_sectionLevel=2;
else if (s=="subsubsection") g_sectionLevel=3;
else if (s=="paragraph") g_sectionLevel=4;
return FALSE;
}
...
...
@@ -2283,6 +2331,7 @@ static bool handleInternal(const QCString &)
{
current->doc.resize(0);
}
g_condCount=0;
BEGIN( SkipInternal );
}
else
...
...
@@ -2409,6 +2458,8 @@ bool parseCommentBlock(/* in */ ParserInterface *parser,
outputXRef.resize(0);
setOutput( isBrief || isAutoBriefOn ? OutputBrief : OutputDoc );
briefEndsAtDot = isAutoBriefOn;
g_condCount = 0;
g_sectionLevel = 0;
if (!current->inbodyDocs.isEmpty() && isInbody) // separate in body fragments
{
...
...
src/definition.cpp
View file @
cd19d7a2
...
...
@@ -449,7 +449,7 @@ void Definition::_setBriefDescription(const char *b,const char *briefFile,int br
{
switch
(
brief
.
at
(
bl
-
1
))
{
case
'.'
:
case
'!'
:
case
'?'
:
break
;
case
'.'
:
case
'!'
:
case
'?'
:
case
'>'
:
case
':'
:
break
;
default
:
if
(
uni_isupper
(
brief
.
at
(
0
)))
brief
+=
'.'
;
break
;
...
...
src/docparser.cpp
View file @
cd19d7a2
...
...
@@ -4929,8 +4929,11 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag
DBG
((
"handleHtmlStartTag(%s,%d)
\n
"
,
tagName
.
data
(),
tagHtmlAttribs
.
count
()));
int
retval
=
RetVal_OK
;
int
tagId
=
Mappers
::
htmlTagMapper
->
map
(
tagName
);
if
(
g_token
->
emptyTag
&&
!
(
tagId
&
XML_CmdMask
)
&&
tagId
!=
HTML_UNKNOWN
)
if
(
g_token
->
emptyTag
&&
!
(
tagId
&
XML_CmdMask
)
&&
tagId
!=
HTML_UNKNOWN
&&
tagId
!=
HTML_IMG
&&
tagId
!=
HTML_BR
)
{
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: HTML tags may not use the 'empty tag' XHTML syntax."
);
}
switch
(
tagId
)
{
case
HTML_UL
:
...
...
src/dot.cpp
View file @
cd19d7a2
...
...
@@ -35,7 +35,7 @@
#include "pagedef.h"
#include "portable.h"
#include "dirdef.h"
#include "vhdldocgen.h"
#include <qdir.h>
#include <qfile.h>
#include <qtextstream.h>
...
...
@@ -718,9 +718,18 @@ void DotNode::writeBox(QTextStream &t,
}
else
{
if
(
!
Config_getBool
(
"DOT_TRANSPARENT"
))
static
bool
dotTransparent
=
Config_getBool
(
"DOT_TRANSPARENT"
);
static
bool
vhdlOpt
=
Config_getBool
(
"OPTIMIZE_OUTPUT_VHDL"
);
if
(
!
dotTransparent
)
{
t
<<
",color=
\"
"
<<
labCol
<<
"
\"
, fillcolor=
\"
white
\"
, style=
\"
filled
\"
"
;
ClassDef
*
ccd
=
this
->
m_classDef
;
t
<<
",color=
\"
"
<<
labCol
<<
"
\"
, fillcolor=
\"
"
;
if
(
ccd
&&
vhdlOpt
&&
(
VhdlDocGen
::
VhdlClasses
)
ccd
->
protection
()
==
VhdlDocGen
::
ARCHITECTURECLASS
)
t
<<
"khaki"
;
else
t
<<
"white"
;
t
<<
"
\"
, style=
\"
filled
\"
"
;
}
else
{
...
...
src/doxygen.cpp
View file @
cd19d7a2
...
...
@@ -10025,14 +10025,12 @@ void parseInput()
msg
(
"Computing class relations...
\n
"
);
computeTemplateClassRelations
();
flushUnresolvedRelations
();
computeClassRelations
();
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_VHDL"
))
{
VhdlDocGen
::
computeVhdlComponentRelations
();
}
else
{
computeClassRelations
();
}
g_classEntries
.
clear
();
msg
(
"Add enum values to enums...
\n
"
);
...
...
src/htmldocvisitor.cpp
View file @
cd19d7a2
...
...
@@ -80,6 +80,8 @@ static bool mustBeOutsideParagraph(DocNode *n)
/* <h?> */
case
DocNode
:
:
Kind_Section
:
case
DocNode
:
:
Kind_HtmlHeader
:
/* \internal */
case
DocNode
:
:
Kind_Internal
:
/* <div> */
case
DocNode
:
:
Kind_Verbatim
:
case
DocNode
:
:
Kind_Include
:
...
...
@@ -705,6 +707,7 @@ void HtmlDocVisitor::visitPre(DocPara *p)
switch
(
p
->
parent
()
->
kind
())
{
case
DocNode
:
:
Kind_Section
:
case
DocNode
:
:
Kind_Internal
:
case
DocNode
:
:
Kind_HtmlListItem
:
case
DocNode
:
:
Kind_HtmlDescData
:
case
DocNode
:
:
Kind_HtmlCell
:
...
...
@@ -784,6 +787,7 @@ void HtmlDocVisitor::visitPost(DocPara *p)
switch
(
p
->
parent
()
->
kind
())
{
case
DocNode
:
:
Kind_Section
:
case
DocNode
:
:
Kind_Internal
:
case
DocNode
:
:
Kind_HtmlListItem
:
case
DocNode
:
:
Kind_HtmlDescData
:
case
DocNode
:
:
Kind_HtmlCell
:
...
...
@@ -1106,17 +1110,17 @@ void HtmlDocVisitor::visitPost(DocHtmlCaption *)
m_t
<<
"</caption>
\n
"
;
}
void
HtmlDocVisitor
::
visitPre
(
DocInternal
*
)
void
HtmlDocVisitor
::
visitPre
(
DocInternal
*
i
)
{
if
(
m_hide
)
return
;
forceEndParagraph
(
i
);
m_t
<<
"<p><b>"
<<
theTranslator
->
trForInternalUseOnly
()
<<
"</b></p>"
<<
endl
;
m_t
<<
"<p>"
<<
endl
;
}
void
HtmlDocVisitor
::
visitPost
(
DocInternal
*
)
void
HtmlDocVisitor
::
visitPost
(
DocInternal
*
i
)
{
if
(
m_hide
)
return
;
m_t
<<
"</p>"
<<
endl
;
forceStartParagraph
(
i
)
;
}
void
HtmlDocVisitor
::
visitPre
(
DocHRef
*
href
)
...
...
src/index.cpp
View file @
cd19d7a2
...
...
@@ -317,8 +317,21 @@ void endFile(OutputList &ol,bool)
static
bool
classHasVisibleChildren
(
ClassDef
*
cd
)
{
if
(
cd
->
subClasses
()
==
0
)
return
FALSE
;
BaseClassList
*
bcl
=
cd
->
subClasses
();
bool
vhdl
=
Config_getBool
(
"OPTIMIZE_OUTPUT_VHDL"
);
BaseClassList
*
bcl
;
if
(
vhdl
)
// reverse baseClass/subClass relation
{
if
(
cd
->
baseClasses
()
==
0
)
return
FALSE
;
bcl
=
cd
->
baseClasses
();
}
else
{
if
(
cd
->
subClasses
()
==
0
)
return
FALSE
;
bcl
=
cd
->
subClasses
();
}
BaseClassListIterator
bcli
(
*
bcl
);
for
(
;
bcli
.
current
()
;
++
bcli
)
{
...
...
@@ -332,13 +345,25 @@ static bool classHasVisibleChildren(ClassDef *cd)
void
writeClassTree
(
OutputList
&
ol
,
BaseClassList
*
bcl
,
bool
hideSuper
,
int
level
,
FTVHelp
*
ftv
)
{
static
bool
vhdl
=
Config_getBool
(
"OPTIMIZE_OUTPUT_VHDL"
);
if
(
bcl
==
0
)
return
;
BaseClassListIterator
bcli
(
*
bcl
);
bool
started
=
FALSE
;
for
(
;
bcli
.
current
()
;
++
bcli
)
{
ClassDef
*
cd
=
bcli
.
current
()
->
classDef
;
if
(
cd
->
isVisibleInHierarchy
()
&&
hasVisibleRoot
(
cd
->
baseClasses
()))
bool
b
;
if
(
vhdl
)
{
b
=
hasVisibleRoot
(
cd
->
subClasses
());
}
else
{
b
=
hasVisibleRoot
(
cd
->
baseClasses
());
}
if
(
cd
->
isVisibleInHierarchy
()
&&
b
)
// hasVisibleRoot(cd->baseClasses()))
{
if
(
!
started
)
{
...
...
@@ -382,7 +407,14 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level,F
//printf("Class %s at %p visited=%d\n",cd->name().data(),cd,cd->visited);
bool
wasVisited
=
cd
->
visited
;
cd
->
visited
=
TRUE
;
writeClassTree
(
ol
,
cd
->
subClasses
(),
wasVisited
,
level
+
1
,
ftv
);
if
(
vhdl
)
{
writeClassTree
(
ol
,
cd
->
baseClasses
(),
wasVisited
,
level
+
1
,
ftv
);
}
else
{
writeClassTree
(
ol
,
cd
->
subClasses
(),
wasVisited
,
level
+
1
,
ftv
);
}
}
ol
.
endIndexListItem
();
}
...
...
@@ -441,6 +473,8 @@ void writeClassTree(BaseClassList *cl,int level)
void
writeClassTreeNode
(
ClassDef
*
cd
,
bool
&
started
,
int
level
)
{
//printf("writeClassTreeNode(%s) visited=%d\n",cd->name().data(),cd->visited);
static
bool
vhdl
=
Config_getBool
(
"OPTIMIZE_OUTPUT_VHDL"
);
if
(
cd
->
isVisibleInHierarchy
()
&&
!
cd
->
visited
)
{
if
(
!
started
)
...
...
@@ -455,7 +489,14 @@ void writeClassTreeNode(ClassDef *cd,bool &started,int level)
}
if
(
hasChildren
)
{
writeClassTree
(
cd
->
subClasses
(),
level
+
1
);
if
(
vhdl
)
{
writeClassTree
(
cd
->
baseClasses
(),
level
+
1
);
}
else
{
writeClassTree
(
cd
->
subClasses
(),
level
+
1
);
}
}
cd
->
visited
=
TRUE
;
}
...
...
@@ -495,6 +536,7 @@ void writeClassTree(ClassSDict *d,int level)
static
void
writeClassTreeForList
(
OutputList
&
ol
,
ClassSDict
*
cl
,
bool
&
started
,
FTVHelp
*
ftv
)
{
static
bool
vhdl
=
Config_getBool
(
"OPTIMIZE_OUTPUT_VHDL"
);
ClassSDict
::
Iterator
cli
(
*
cl
);
for
(;
cli
.
current
();
++
cli
)
{
...
...
@@ -504,7 +546,22 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started,FT
// hasVisibleRoot(cd->baseClasses()),
// cd->isVisibleInHierarchy()
// );
if
(
!
hasVisibleRoot
(
cd
->
baseClasses
()))
// filter on root classes
bool
b
;
if
(
vhdl
)
{
if
((
VhdlDocGen
::
VhdlClasses
)
cd
->
protection
()
==
VhdlDocGen
::
PACKAGECLASS
||
(
VhdlDocGen
::
VhdlClasses
)
cd
->
protection
()
==
VhdlDocGen
::
PACKBODYCLASS
)
{
continue
;
}
b
=!
hasVisibleRoot
(
cd
->
subClasses
());
}
else
{
b
=!
hasVisibleRoot
(
cd
->
baseClasses
());
}
if
(
b
)
//filter on root classes
{
if
(
cd
->
isVisibleInHierarchy
())
// should it be visible
{
...
...
@@ -543,7 +600,12 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started,FT
if
(
ftv
)
ftv
->
addContentsItem
(
hasChildren
,
cd
->
displayName
(),
0
,
0
,
0
);
}
if
(
hasChildren
)
if
(
vhdl
&&
hasChildren
)
{
writeClassTree
(
ol
,
cd
->
baseClasses
(),
cd
->
visited
,
1
,
ftv
);
cd
->
visited
=
TRUE
;
}
else
if
(
hasChildren
)
{
writeClassTree
(
ol
,
cd
->
subClasses
(),
cd
->
visited
,
1
,
ftv
);
cd
->
visited
=
TRUE
;
...
...
@@ -1073,6 +1135,13 @@ void writeAnnotatedClassList(OutputList &ol)
{
QCString
type
=
cd
->
compoundTypeString
();
ol
.
startIndexKey
();
static
bool
vhdl
=
Config_getBool
(
"OPTIMIZE_OUTPUT_VHDL"
);
if
(
vhdl
)
{
QCString
prot
=
VhdlDocGen
::
getProtectionName
((
VhdlDocGen
::
VhdlClasses
)
cd
->
protection
());
ol
.
docify
(
prot
.
data
());
ol
.
insertMemberAlign
();
}
ol
.
writeObjectLink
(
0
,
cd
->
getOutputFileBase
(),
0
,
cd
->
displayName
());
ol
.
endIndexKey
();
bool
hasBrief
=
!
cd
->
briefDescription
().
isEmpty
();
...
...
src/latexgen.cpp
View file @
cd19d7a2
...
...
@@ -351,7 +351,7 @@ static void writeDefaultStyleSheetPart3(QTextStream &t)
"
\\
setlength{
\\
itemsep}{-4pt}%
\n
"
"
\\
renewcommand{
\\
makelabel}{
\\
entrylabel}%
\n
"
" }%
\n
"
"
\\
item[#1
:
]%
\n
"
"
\\
item[#1]%
\n
"
"}{%
\n
"
"
\\
end{list}%
\n
"
"}
\n\n
"
;
...
...
@@ -504,9 +504,8 @@ static void writeDefaultStyleSheetPart3(QTextStream &t)
"}
\n\n
"
;
t
<<
"% Used by @internal
\n
"
"
\\
newenvironment{DoxyInternal}[1]{%
\n
"
"
\\
begin{DoxyDesc}
{#1}%
\n
"
"
\\
paragraph*
{#1}%
\n
"
"}{%
\n
"
"
\\
end{DoxyDesc}%
\n
"
"}
\n\n
"
;
t
<<
"% Used by @par and @paragraph
\n
"
"
\\
newenvironment{DoxyParagraph}[1]{%
\n
"
...
...
@@ -1127,6 +1126,7 @@ void LatexGenerator::startParagraph()
void
LatexGenerator
::
endParagraph
()
{
t
<<
endl
<<
endl
;
}
void
LatexGenerator
::
writeString
(
const
char
*
text
)
...
...
@@ -1658,7 +1658,6 @@ void LatexGenerator::startClassDiagram()
{
//if (Config_getBool("COMPACT_LATEX")) t << "\\subsubsection"; else t << "\\subsection";
//t << "{";
newParagraph
();
}
void
LatexGenerator
::
endClassDiagram
(
const
ClassDiagram
&
d
,
...
...
src/scanner.l
View file @
cd19d7a2
...
...
@@ -145,7 +145,7 @@ static bool insideTryBlock=FALSE;
static bool insideCode;
static bool needsSemi;
static int depthIf;
//
static int depthIf;
static int initBracketCount;
static QCString memberGroupRelates;
static QCString memberGroupInside;
...
...
@@ -5495,7 +5495,7 @@ static void parseCompounds(Entry *rt)
// ce->name.data(),ce->program.data());
// init scanner state
padCount=0;
depthIf = 0;
//
depthIf = 0;
inputString = ce->program;
inputPosition = 0;
scanYYrestart( scanYYin ) ;
...
...
@@ -5577,10 +5577,10 @@ static void parseCompounds(Entry *rt)
ce->program.resize(0);
if (depthIf>0)
{
warn(yyFileName,yyLineNr,"Documentation block ended in the middle of a conditional section!");
}
//
if (depthIf>0)
//
{
//
warn(yyFileName,yyLineNr,"Documentation block ended in the middle of a conditional section!");
//
}
}
parseCompounds(ce);
}
...
...
@@ -5598,7 +5598,7 @@ static void parseMain(const char *fileName,const char *fileBuf,Entry *rt)
g_inputFromFile = FALSE;
//anonCount = 0; // don't reset per file
depthIf = 0;
//
depthIf = 0;
protection = Public;
mtype = Method;
gstat = FALSE;
...
...
@@ -5648,10 +5648,10 @@ static void parseMain(const char *fileName,const char *fileBuf,Entry *rt)
//forceEndGroup();
groupLeaveFile(yyFileName,yyLineNr);
if (depthIf>0)
{
warn(yyFileName,yyLineNr,"Documentation block ended in the middle of a conditional section!");
}
//
if (depthIf>0)
//
{
//
warn(yyFileName,yyLineNr,"Documentation block ended in the middle of a conditional section!");
//
}
rt->program.resize(0);
delete current; current=0;
...
...
src/util.cpp
View file @
cd19d7a2
...
...
@@ -1595,9 +1595,9 @@ nextChar:
ADD_CHAR
(
' '
);
}
else
if
(
i
>
0
&&
((
isId
(
s
.
at
(
i
))
&&
s
.
at
(
i
-
1
)
==
')'
)
||
(
s
.
at
(
i
)
==
'\''
&&
s
.
at
(
i
-
1
)
==
' '
)
)
((
isId
(
s
.
at
(
i
))
&&
s
.
at
(
i
-
1
)
==
')'
)
||
(
s
.
at
(
i
)
==
'\''
&&
s
.
at
(
i
-
1
)
==
' '
)
)
)
{
ADD_CHAR
(
' '
);
...
...
@@ -6325,7 +6325,7 @@ bool findAndRemoveWord(QCString &s,const QCString &word)
{
if
(
s
.
mid
(
i
,
l
)
==
word
)
{
if
(
i
>
0
&&
isspace
(
s
.
at
(
i
-
1
)))
if
(
i
>
0
&&
isspace
(
(
uchar
)
s
.
at
(
i
-
1
)))
i
--
,
l
++
;
else
if
(
i
+
l
<
(
int
)
s
.
length
()
&&
isspace
(
s
.
at
(
i
+
l
)))
l
++
;
...
...
src/util.h
View file @
cd19d7a2
...
...
@@ -199,7 +199,7 @@ int guessSection(const char *name);
inline
bool
isId
(
int
c
)
{
return
c
==
'_'
||
isalnum
(
c
)
||
c
>=
128
||
c
<
0
;
return
c
==
'_'
||
c
>=
128
||
c
<
0
||
isalnum
(
c
)
;
}
QCString
removeRedundantWhiteSpace
(
const
QCString
&
s
);
...
...
src/vhdldocgen.cpp
View file @
cd19d7a2
...
...
@@ -213,17 +213,20 @@ void VhdlDocGen::computeVhdlComponentRelations()
{
cli
.
current
()
->
visited
=
FALSE
;
ClassDef
*
cd
=
cli
.
current
();
if
((
VhdlDocGen
::
VhdlClasses
)
cd
->
protection
()
==
VhdlDocGen
::
ARCHITECTURECLASS
)
if
((
VhdlDocGen
::
VhdlClasses
)
cd
->
protection
()
==
VhdlDocGen
::
ARCHITECTURECLASS
||
(
VhdlDocGen
::
VhdlClasses
)
cd
->
protection
()
==
VhdlDocGen
::
PACKBODYCLASS
)
{
QCString
bName
=
cd
->
name
();
int
i
=
bName
.
find
(
"::"
);
if
(
i
>
0
)
{
QCString
entityName
=
bName
.
left
(
i
);
entityName
.
stripPrefix
(
"_"
);
ClassDef
*
classEntity
=
Doxygen
::
classSDict
->
find
(
entityName
);
// entity for architecutre ?
if
(
classEntity
)
{
// printf("\n entity %s arch %s",entityName.data(),bName.data());
classEntity
->
insertBaseClass
(
cd
,
bName
,
Public
,
Normal
,
0
);
cd
->
insertSubClass
(
classEntity
,
Public
,
Normal
,
0
);
}
...
...
@@ -1163,6 +1166,19 @@ void VhdlDocGen::getFuncParams(QList<Argument>& ql, const char* str)
}
//while
}
// getFuncName
QCString
VhdlDocGen
::
getProtectionName
(
int
prot
)
{
if
(
prot
==
VhdlDocGen
::
ENTITYCLASS
)
return
"entity"
;
else
if
(
prot
==
VhdlDocGen
::
ARCHITECTURECLASS
)
return
"architecture"
;
else
if
(
prot
==
VhdlDocGen
::
PACKAGECLASS
)
return
"package"
;
else
if
(
prot
==
VhdlDocGen
::
PACKBODYCLASS
)
return
"package body"
;
return
""
;
}
QCString
VhdlDocGen
::
trTypeString
(
int
type
)
{
...
...
src/vhdldocgen.h
View file @
cd19d7a2
...
...
@@ -264,7 +264,7 @@ class VhdlDocGen
static
bool
membersHaveSpecificType
(
MemberList
*
ml
,
int
type
);
static
void
startFonts
(
const
QCString
&
q
,
const
char
*
keyword
,
OutputList
&
ol
);
static
bool
isNumber
(
const
QCString
&
s
);
static
QCString
getProtectionName
(
int
prot
);
private
:
static
void
getFuncParams
(
QList
<
Argument
>&
,
const
char
*
str
);
static
bool
compareArgList
(
ArgumentList
*
,
ArgumentList
*
);
...
...
src/vhdlscanner.l
View file @
cd19d7a2
...
...
@@ -875,6 +875,11 @@ ENDPROTECEDBODY "end"{BR}+"protected"{BR}+"body"{BR}+{NAME}
current->name=QCString(qsl[0]);
if (lastCompound)
{
if (!VhdlDocGen::foundInsertedComponent(current->type,lastCompound))
{
BaseInfo *bb=new BaseInfo(current->type,Public,Normal);
lastCompound->extends->append(bb);
}
lastCompound->addSubEntry(current);
current = new Entry;
initEntry(current);
...
...
@@ -968,15 +973,15 @@ ENDPROTECEDBODY "end"{BR}+"protected"{BR}+"body"{BR}+{NAME}
//current->name+=qcs.lower();
current->name.prepend(qcs+"::");
if (lastEntity)
{
//
if (lastEntity)
//
{
// inherit private inheritance relation between entity and architecture
if (!VhdlDocGen::foundInsertedComponent(current->name,lastEntity))
{
BaseInfo *bb=new BaseInfo(current->name,Private,Normal);
lastEntity->extends->append(bb);
}
}
//
if (!VhdlDocGen::foundInsertedComponent(current->name,lastEntity))
//
{
//
BaseInfo *bb=new BaseInfo(current->name,Private,Normal);
//
lastEntity->extends->append(bb);
//
}
//
}
}
else if (current->spec==VhdlDocGen::PACKAGE_BODY)
...
...
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