Commit 23b0a900 authored by dimitri's avatar dimitri

Release-1.6.3

parent 20e951b9
DOXYGEN Version 1.6.2-20100216 DOXYGEN Version 1.6.3
Please read the installation section of the manual Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions. (http://www.doxygen.org/install.html) for instructions.
-------- --------
Dimitri van Heesch (16 February 2010) Dimitri van Heesch (21 February 2010)
DOXYGEN Version 1.6.2_20100216 DOXYGEN Version 1.6.3
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. ...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (16 February 2010) Dimitri van Heesch (dimitri@stack.nl) (21 February 2010)
...@@ -17,10 +17,10 @@ ...@@ -17,10 +17,10 @@
doxygen_version_major=1 doxygen_version_major=1
doxygen_version_minor=6 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. #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"` bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
......
...@@ -395,6 +395,8 @@ static bool inGroupParamFound; ...@@ -395,6 +395,8 @@ static bool inGroupParamFound;
static int braceCount; static int braceCount;
static bool insidePre; static bool insidePre;
static bool parseMore; static bool parseMore;
static int g_condCount;
static int g_sectionLevel;
static int g_commentCount; static int g_commentCount;
...@@ -1691,6 +1693,48 @@ RCSTAG "$"{ID}":"[^\n$]+"$" ...@@ -1691,6 +1693,48 @@ RCSTAG "$"{ID}":"[^\n$]+"$"
if (*yytext=='\n') yyLineNr++; if (*yytext=='\n') yyLineNr++;
addOutput('\n'); 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>[^ \\@\n]+ { // skip non-special characters
} }
<SkipInternal>. { // any other character <SkipInternal>. { // any other character
...@@ -2134,6 +2178,10 @@ static bool handleSection(const QCString &s) ...@@ -2134,6 +2178,10 @@ static bool handleSection(const QCString &s)
setOutput(OutputDoc); setOutput(OutputDoc);
addOutput("@"+s+" "); addOutput("@"+s+" ");
BEGIN(SectionLabel); 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; return FALSE;
} }
...@@ -2283,6 +2331,7 @@ static bool handleInternal(const QCString &) ...@@ -2283,6 +2331,7 @@ static bool handleInternal(const QCString &)
{ {
current->doc.resize(0); current->doc.resize(0);
} }
g_condCount=0;
BEGIN( SkipInternal ); BEGIN( SkipInternal );
} }
else else
...@@ -2409,6 +2458,8 @@ bool parseCommentBlock(/* in */ ParserInterface *parser, ...@@ -2409,6 +2458,8 @@ bool parseCommentBlock(/* in */ ParserInterface *parser,
outputXRef.resize(0); outputXRef.resize(0);
setOutput( isBrief || isAutoBriefOn ? OutputBrief : OutputDoc ); setOutput( isBrief || isAutoBriefOn ? OutputBrief : OutputDoc );
briefEndsAtDot = isAutoBriefOn; briefEndsAtDot = isAutoBriefOn;
g_condCount = 0;
g_sectionLevel = 0;
if (!current->inbodyDocs.isEmpty() && isInbody) // separate in body fragments if (!current->inbodyDocs.isEmpty() && isInbody) // separate in body fragments
{ {
......
...@@ -449,7 +449,7 @@ void Definition::_setBriefDescription(const char *b,const char *briefFile,int br ...@@ -449,7 +449,7 @@ void Definition::_setBriefDescription(const char *b,const char *briefFile,int br
{ {
switch(brief.at(bl-1)) switch(brief.at(bl-1))
{ {
case '.': case '!': case '?': break; case '.': case '!': case '?': case '>': case ':': break;
default: default:
if (uni_isupper(brief.at(0))) brief+='.'; if (uni_isupper(brief.at(0))) brief+='.';
break; break;
......
...@@ -4929,8 +4929,11 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag ...@@ -4929,8 +4929,11 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag
DBG(("handleHtmlStartTag(%s,%d)\n",tagName.data(),tagHtmlAttribs.count())); DBG(("handleHtmlStartTag(%s,%d)\n",tagName.data(),tagHtmlAttribs.count()));
int retval=RetVal_OK; int retval=RetVal_OK;
int tagId = Mappers::htmlTagMapper->map(tagName); 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."); warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: HTML tags may not use the 'empty tag' XHTML syntax.");
}
switch (tagId) switch (tagId)
{ {
case HTML_UL: case HTML_UL:
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
#include "pagedef.h" #include "pagedef.h"
#include "portable.h" #include "portable.h"
#include "dirdef.h" #include "dirdef.h"
#include "vhdldocgen.h"
#include <qdir.h> #include <qdir.h>
#include <qfile.h> #include <qfile.h>
#include <qtextstream.h> #include <qtextstream.h>
...@@ -718,9 +718,18 @@ void DotNode::writeBox(QTextStream &t, ...@@ -718,9 +718,18 @@ void DotNode::writeBox(QTextStream &t,
} }
else 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 else
{ {
......
...@@ -10025,14 +10025,12 @@ void parseInput() ...@@ -10025,14 +10025,12 @@ void parseInput()
msg("Computing class relations...\n"); msg("Computing class relations...\n");
computeTemplateClassRelations(); computeTemplateClassRelations();
flushUnresolvedRelations(); flushUnresolvedRelations();
computeClassRelations();
if (Config_getBool("OPTIMIZE_OUTPUT_VHDL")) if (Config_getBool("OPTIMIZE_OUTPUT_VHDL"))
{
VhdlDocGen::computeVhdlComponentRelations(); VhdlDocGen::computeVhdlComponentRelations();
}
else
{
computeClassRelations();
}
g_classEntries.clear(); g_classEntries.clear();
msg("Add enum values to enums...\n"); msg("Add enum values to enums...\n");
......
...@@ -80,6 +80,8 @@ static bool mustBeOutsideParagraph(DocNode *n) ...@@ -80,6 +80,8 @@ static bool mustBeOutsideParagraph(DocNode *n)
/* <h?> */ /* <h?> */
case DocNode::Kind_Section: case DocNode::Kind_Section:
case DocNode::Kind_HtmlHeader: case DocNode::Kind_HtmlHeader:
/* \internal */
case DocNode::Kind_Internal:
/* <div> */ /* <div> */
case DocNode::Kind_Verbatim: case DocNode::Kind_Verbatim:
case DocNode::Kind_Include: case DocNode::Kind_Include:
...@@ -705,6 +707,7 @@ void HtmlDocVisitor::visitPre(DocPara *p) ...@@ -705,6 +707,7 @@ void HtmlDocVisitor::visitPre(DocPara *p)
switch (p->parent()->kind()) switch (p->parent()->kind())
{ {
case DocNode::Kind_Section: case DocNode::Kind_Section:
case DocNode::Kind_Internal:
case DocNode::Kind_HtmlListItem: case DocNode::Kind_HtmlListItem:
case DocNode::Kind_HtmlDescData: case DocNode::Kind_HtmlDescData:
case DocNode::Kind_HtmlCell: case DocNode::Kind_HtmlCell:
...@@ -784,6 +787,7 @@ void HtmlDocVisitor::visitPost(DocPara *p) ...@@ -784,6 +787,7 @@ void HtmlDocVisitor::visitPost(DocPara *p)
switch (p->parent()->kind()) switch (p->parent()->kind())
{ {
case DocNode::Kind_Section: case DocNode::Kind_Section:
case DocNode::Kind_Internal:
case DocNode::Kind_HtmlListItem: case DocNode::Kind_HtmlListItem:
case DocNode::Kind_HtmlDescData: case DocNode::Kind_HtmlDescData:
case DocNode::Kind_HtmlCell: case DocNode::Kind_HtmlCell:
...@@ -1106,17 +1110,17 @@ void HtmlDocVisitor::visitPost(DocHtmlCaption *) ...@@ -1106,17 +1110,17 @@ void HtmlDocVisitor::visitPost(DocHtmlCaption *)
m_t << "</caption>\n"; m_t << "</caption>\n";
} }
void HtmlDocVisitor::visitPre(DocInternal *) void HtmlDocVisitor::visitPre(DocInternal *i)
{ {
if (m_hide) return; if (m_hide) return;
forceEndParagraph(i);
m_t << "<p><b>" << theTranslator->trForInternalUseOnly() << "</b></p>" << endl; 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; if (m_hide) return;
m_t << "</p>" << endl; forceStartParagraph(i);
} }
void HtmlDocVisitor::visitPre(DocHRef *href) void HtmlDocVisitor::visitPre(DocHRef *href)
......
...@@ -317,8 +317,21 @@ void endFile(OutputList &ol,bool) ...@@ -317,8 +317,21 @@ void endFile(OutputList &ol,bool)
static bool classHasVisibleChildren(ClassDef *cd) static bool classHasVisibleChildren(ClassDef *cd)
{ {
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; if (cd->subClasses()==0) return FALSE;
BaseClassList *bcl=cd->subClasses(); bcl=cd->subClasses();
}
BaseClassListIterator bcli(*bcl); BaseClassListIterator bcli(*bcl);
for ( ; bcli.current() ; ++bcli) for ( ; bcli.current() ; ++bcli)
{ {
...@@ -332,13 +345,25 @@ static bool classHasVisibleChildren(ClassDef *cd) ...@@ -332,13 +345,25 @@ static bool classHasVisibleChildren(ClassDef *cd)
void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level,FTVHelp* ftv) void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level,FTVHelp* ftv)
{ {
static bool vhdl=Config_getBool("OPTIMIZE_OUTPUT_VHDL");
if (bcl==0) return; if (bcl==0) return;
BaseClassListIterator bcli(*bcl); BaseClassListIterator bcli(*bcl);
bool started=FALSE; bool started=FALSE;
for ( ; bcli.current() ; ++bcli) for ( ; bcli.current() ; ++bcli)
{ {
ClassDef *cd=bcli.current()->classDef; 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) if (!started)
{ {
...@@ -382,8 +407,15 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level,F ...@@ -382,8 +407,15 @@ 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); //printf("Class %s at %p visited=%d\n",cd->name().data(),cd,cd->visited);
bool wasVisited=cd->visited; bool wasVisited=cd->visited;
cd->visited=TRUE; cd->visited=TRUE;
if (vhdl)
{
writeClassTree(ol,cd->baseClasses(),wasVisited,level+1,ftv);
}
else
{
writeClassTree(ol,cd->subClasses(),wasVisited,level+1,ftv); writeClassTree(ol,cd->subClasses(),wasVisited,level+1,ftv);
} }
}
ol.endIndexListItem(); ol.endIndexListItem();
} }
} }
...@@ -441,6 +473,8 @@ void writeClassTree(BaseClassList *cl,int level) ...@@ -441,6 +473,8 @@ void writeClassTree(BaseClassList *cl,int level)
void writeClassTreeNode(ClassDef *cd,bool &started,int level) void writeClassTreeNode(ClassDef *cd,bool &started,int level)
{ {
//printf("writeClassTreeNode(%s) visited=%d\n",cd->name().data(),cd->visited); //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 (cd->isVisibleInHierarchy() && !cd->visited)
{ {
if (!started) if (!started)
...@@ -454,9 +488,16 @@ void writeClassTreeNode(ClassDef *cd,bool &started,int level) ...@@ -454,9 +488,16 @@ void writeClassTreeNode(ClassDef *cd,bool &started,int level)
Doxygen::indexList.addContentsItem(hasChildren,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),0); Doxygen::indexList.addContentsItem(hasChildren,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),0);
} }
if (hasChildren) if (hasChildren)
{
if (vhdl)
{
writeClassTree(cd->baseClasses(),level+1);
}
else
{ {
writeClassTree(cd->subClasses(),level+1); writeClassTree(cd->subClasses(),level+1);
} }
}
cd->visited=TRUE; cd->visited=TRUE;
} }
} }
...@@ -495,6 +536,7 @@ void writeClassTree(ClassSDict *d,int level) ...@@ -495,6 +536,7 @@ void writeClassTree(ClassSDict *d,int level)
static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started,FTVHelp* ftv) static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started,FTVHelp* ftv)
{ {
static bool vhdl=Config_getBool("OPTIMIZE_OUTPUT_VHDL");
ClassSDict::Iterator cli(*cl); ClassSDict::Iterator cli(*cl);
for (;cli.current(); ++cli) for (;cli.current(); ++cli)
{ {
...@@ -504,7 +546,22 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started,FT ...@@ -504,7 +546,22 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started,FT
// hasVisibleRoot(cd->baseClasses()), // hasVisibleRoot(cd->baseClasses()),
// cd->isVisibleInHierarchy() // 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 if (cd->isVisibleInHierarchy()) // should it be visible
{ {
...@@ -543,7 +600,12 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started,FT ...@@ -543,7 +600,12 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started,FT
if (ftv) if (ftv)
ftv->addContentsItem(hasChildren,cd->displayName(),0,0,0); 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); writeClassTree(ol,cd->subClasses(),cd->visited,1,ftv);
cd->visited=TRUE; cd->visited=TRUE;
...@@ -1073,6 +1135,13 @@ void writeAnnotatedClassList(OutputList &ol) ...@@ -1073,6 +1135,13 @@ void writeAnnotatedClassList(OutputList &ol)
{ {
QCString type=cd->compoundTypeString(); QCString type=cd->compoundTypeString();
ol.startIndexKey(); 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.writeObjectLink(0,cd->getOutputFileBase(),0,cd->displayName());
ol.endIndexKey(); ol.endIndexKey();
bool hasBrief = !cd->briefDescription().isEmpty(); bool hasBrief = !cd->briefDescription().isEmpty();
......
...@@ -351,7 +351,7 @@ static void writeDefaultStyleSheetPart3(QTextStream &t) ...@@ -351,7 +351,7 @@ static void writeDefaultStyleSheetPart3(QTextStream &t)
" \\setlength{\\itemsep}{-4pt}%\n" " \\setlength{\\itemsep}{-4pt}%\n"
" \\renewcommand{\\makelabel}{\\entrylabel}%\n" " \\renewcommand{\\makelabel}{\\entrylabel}%\n"
" }%\n" " }%\n"
" \\item[#1:]%\n" " \\item[#1]%\n"
"}{%\n" "}{%\n"
" \\end{list}%\n" " \\end{list}%\n"
"}\n\n"; "}\n\n";
...@@ -504,9 +504,8 @@ static void writeDefaultStyleSheetPart3(QTextStream &t) ...@@ -504,9 +504,8 @@ static void writeDefaultStyleSheetPart3(QTextStream &t)
"}\n\n"; "}\n\n";
t << "% Used by @internal\n" t << "% Used by @internal\n"
"\\newenvironment{DoxyInternal}[1]{%\n" "\\newenvironment{DoxyInternal}[1]{%\n"
" \\begin{DoxyDesc}{#1}%\n" " \\paragraph*{#1}%\n"
"}{%\n" "}{%\n"
" \\end{DoxyDesc}%\n"
"}\n\n"; "}\n\n";
t << "% Used by @par and @paragraph\n" t << "% Used by @par and @paragraph\n"
"\\newenvironment{DoxyParagraph}[1]{%\n" "\\newenvironment{DoxyParagraph}[1]{%\n"
...@@ -1127,6 +1126,7 @@ void LatexGenerator::startParagraph() ...@@ -1127,6 +1126,7 @@ void LatexGenerator::startParagraph()
void LatexGenerator::endParagraph() void LatexGenerator::endParagraph()
{ {
t << endl << endl;
} }
void LatexGenerator::writeString(const char *text) void LatexGenerator::writeString(const char *text)
...@@ -1658,7 +1658,6 @@ void LatexGenerator::startClassDiagram() ...@@ -1658,7 +1658,6 @@ void LatexGenerator::startClassDiagram()
{ {
//if (Config_getBool("COMPACT_LATEX")) t << "\\subsubsection"; else t << "\\subsection"; //if (Config_getBool("COMPACT_LATEX")) t << "\\subsubsection"; else t << "\\subsection";
//t << "{"; //t << "{";
newParagraph();
} }
void LatexGenerator::endClassDiagram(const ClassDiagram &d, void LatexGenerator::endClassDiagram(const ClassDiagram &d,
......
...@@ -145,7 +145,7 @@ static bool insideTryBlock=FALSE; ...@@ -145,7 +145,7 @@ static bool insideTryBlock=FALSE;
static bool insideCode; static bool insideCode;
static bool needsSemi; static bool needsSemi;
static int depthIf; //static int depthIf;
static int initBracketCount; static int initBracketCount;
static QCString memberGroupRelates; static QCString memberGroupRelates;
static QCString memberGroupInside; static QCString memberGroupInside;
...@@ -5495,7 +5495,7 @@ static void parseCompounds(Entry *rt) ...@@ -5495,7 +5495,7 @@ static void parseCompounds(Entry *rt)
// ce->name.data(),ce->program.data()); // ce->name.data(),ce->program.data());
// init scanner state // init scanner state
padCount=0; padCount=0;
depthIf = 0; //depthIf = 0;
inputString = ce->program; inputString = ce->program;
inputPosition = 0; inputPosition = 0;
scanYYrestart( scanYYin ) ; scanYYrestart( scanYYin ) ;
...@@ -5577,10 +5577,10 @@ static void parseCompounds(Entry *rt) ...@@ -5577,10 +5577,10 @@ static void parseCompounds(Entry *rt)
ce->program.resize(0); ce->program.resize(0);
if (depthIf>0) //if (depthIf>0)
{ //{
warn(yyFileName,yyLineNr,"Documentation block ended in the middle of a conditional section!"); // warn(yyFileName,yyLineNr,"Documentation block ended in the middle of a conditional section!");
} //}
} }
parseCompounds(ce); parseCompounds(ce);
} }
...@@ -5598,7 +5598,7 @@ static void parseMain(const char *fileName,const char *fileBuf,Entry *rt) ...@@ -5598,7 +5598,7 @@ static void parseMain(const char *fileName,const char *fileBuf,Entry *rt)
g_inputFromFile = FALSE; g_inputFromFile = FALSE;
//anonCount = 0; // don't reset per file //anonCount = 0; // don't reset per file
depthIf = 0; //depthIf = 0;
protection = Public; protection = Public;
mtype = Method; mtype = Method;
gstat = FALSE; gstat = FALSE;
...@@ -5648,10 +5648,10 @@ static void parseMain(const char *fileName,const char *fileBuf,Entry *rt) ...@@ -5648,10 +5648,10 @@ static void parseMain(const char *fileName,const char *fileBuf,Entry *rt)
//forceEndGroup(); //forceEndGroup();
groupLeaveFile(yyFileName,yyLineNr); groupLeaveFile(yyFileName,yyLineNr);
if (depthIf>0) //if (depthIf>0)
{ //{
warn(yyFileName,yyLineNr,"Documentation block ended in the middle of a conditional section!"); // warn(yyFileName,yyLineNr,"Documentation block ended in the middle of a conditional section!");
} //}
rt->program.resize(0); rt->program.resize(0);
delete current; current=0; delete current; current=0;
......
...@@ -6325,7 +6325,7 @@ bool findAndRemoveWord(QCString &s,const QCString &word) ...@@ -6325,7 +6325,7 @@ bool findAndRemoveWord(QCString &s,const QCString &word)
{ {
if (s.mid(i,l)==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++; i--,l++;
else if (i+l<(int)s.length() && isspace(s.at(i+l))) else if (i+l<(int)s.length() && isspace(s.at(i+l)))
l++; l++;
......
...@@ -199,7 +199,7 @@ int guessSection(const char *name); ...@@ -199,7 +199,7 @@ int guessSection(const char *name);
inline bool isId(int c) 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); QCString removeRedundantWhiteSpace(const QCString &s);
......
...@@ -213,17 +213,20 @@ void VhdlDocGen::computeVhdlComponentRelations() ...@@ -213,17 +213,20 @@ void VhdlDocGen::computeVhdlComponentRelations()
{ {
cli.current()->visited=FALSE; cli.current()->visited=FALSE;
ClassDef * cd = cli.current(); 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(); QCString bName=cd->name();
int i=bName.find("::"); int i=bName.find("::");
if (i>0) if (i>0)
{ {
QCString entityName=bName.left(i); QCString entityName=bName.left(i);
entityName.stripPrefix("_");
ClassDef *classEntity=Doxygen::classSDict->find(entityName); ClassDef *classEntity=Doxygen::classSDict->find(entityName);
// entity for architecutre ? // entity for architecutre ?
if (classEntity) if (classEntity)
{ {
// printf("\n entity %s arch %s",entityName.data(),bName.data());
classEntity->insertBaseClass(cd,bName,Public,Normal,0); classEntity->insertBaseClass(cd,bName,Public,Normal,0);
cd->insertSubClass(classEntity,Public,Normal,0); cd->insertSubClass(classEntity,Public,Normal,0);
} }
...@@ -1163,6 +1166,19 @@ void VhdlDocGen::getFuncParams(QList<Argument>& ql, const char* str) ...@@ -1163,6 +1166,19 @@ void VhdlDocGen::getFuncParams(QList<Argument>& ql, const char* str)
}//while }//while
} // getFuncName } // 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) QCString VhdlDocGen::trTypeString(int type)
{ {
......
...@@ -264,7 +264,7 @@ class VhdlDocGen ...@@ -264,7 +264,7 @@ class VhdlDocGen
static bool membersHaveSpecificType(MemberList *ml,int type); static bool membersHaveSpecificType(MemberList *ml,int type);
static void startFonts(const QCString& q, const char *keyword,OutputList& ol); static void startFonts(const QCString& q, const char *keyword,OutputList& ol);
static bool isNumber(const QCString& s); static bool isNumber(const QCString& s);
static QCString getProtectionName(int prot);
private: private:
static void getFuncParams(QList<Argument>&, const char* str); static void getFuncParams(QList<Argument>&, const char* str);
static bool compareArgList(ArgumentList*,ArgumentList*); static bool compareArgList(ArgumentList*,ArgumentList*);
......
...@@ -875,6 +875,11 @@ ENDPROTECEDBODY "end"{BR}+"protected"{BR}+"body"{BR}+{NAME} ...@@ -875,6 +875,11 @@ ENDPROTECEDBODY "end"{BR}+"protected"{BR}+"body"{BR}+{NAME}
current->name=QCString(qsl[0]); current->name=QCString(qsl[0]);
if (lastCompound) if (lastCompound)
{ {
if (!VhdlDocGen::foundInsertedComponent(current->type,lastCompound))
{
BaseInfo *bb=new BaseInfo(current->type,Public,Normal);
lastCompound->extends->append(bb);
}
lastCompound->addSubEntry(current); lastCompound->addSubEntry(current);
current = new Entry; current = new Entry;
initEntry(current); initEntry(current);
...@@ -968,15 +973,15 @@ ENDPROTECEDBODY "end"{BR}+"protected"{BR}+"body"{BR}+{NAME} ...@@ -968,15 +973,15 @@ ENDPROTECEDBODY "end"{BR}+"protected"{BR}+"body"{BR}+{NAME}
//current->name+=qcs.lower(); //current->name+=qcs.lower();
current->name.prepend(qcs+"::"); current->name.prepend(qcs+"::");
if (lastEntity) //if (lastEntity)
{ //{
// inherit private inheritance relation between entity and architecture // inherit private inheritance relation between entity and architecture
if (!VhdlDocGen::foundInsertedComponent(current->name,lastEntity)) //if (!VhdlDocGen::foundInsertedComponent(current->name,lastEntity))
{ //{
BaseInfo *bb=new BaseInfo(current->name,Private,Normal); // BaseInfo *bb=new BaseInfo(current->name,Private,Normal);
lastEntity->extends->append(bb); // lastEntity->extends->append(bb);
} //}
} //}
} }
else if (current->spec==VhdlDocGen::PACKAGE_BODY) else if (current->spec==VhdlDocGen::PACKAGE_BODY)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment