浏览该文件的文档.
66 #define theTranslator_vhdlType theTranslator->trVhdlType
71 const std::shared_ptr<Entry> &cur);
104 const char *p=str.
data();
111 case '<': t <<
"<";
113 case '>': t <<
">";
115 case '&': t <<
"&";
117 case '\'': t <<
"'";
119 case '"': t <<
""";
163 QCString dir=
"-o \""+ov+
"/vhdl_design_overview.html\"";
164 ov+=
"/vhdl_design.dot";
166 QCString vlargs=
"-Tsvg \""+ov+
"\" "+dir ;
170 err(
"could not create dot file");
191 QCString fileName=ov+
"/vhdl_design.dot";
192 std::ofstream f(fileName.
str(),std::ofstream::out | std::ofstream::binary);
195 err(
"Warning: Cannot open file %s for writing\n",
qPrint(fileName));
209 std::vector<const MemberDef *> ports =
getPorts(cd.get());
222 for (
const auto &bcd : cd->baseClasses())
245 t <<
" digraph G { \n";
246 t <<
"rankdir=LR \n";
247 t <<
"concentrate=TRUE\n";
248 t <<
"stylesheet=\"doxygen.css\"\n";
258 t << className <<
" [ shape=none , fontname=\"arial\", fontcolor=\"blue\" , \n";
259 t <<
"label=<<TABLE BORDER=\"0\" CELLBORDER=\"1\" CELLSPACING=\"0\">\n";
268 t <<
"[style=" << style <<
"];\n";
277 QCString repl(
"<BR ALIGN=\"LEFT\"/>");
283 for(
const auto &line : qsl)
303 t << node <<
"[shape=none margin=0.1, label=<\n";
304 t <<
"<TABLE BORDER=\"0\" CELLBORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"2\" >\n ";
305 t <<
"<TR><TD BGCOLOR=\"lightcyan\"> ";
307 t <<
" </TD></TR></TABLE>>];";
335 t <<
"<TD ALIGN=\"LEFT\" ";
368 t <<
"BGCOLOR=\"orange\">";
370 t <<
"BGCOLOR=\"azure\">";
374 t <<
"BGCOLOR=\"pink\">";
378 t <<
"BGCOLOR=\"lightgrey\">";
404 t <<
"<TR><TD COLSPAN=\"2\" BGCOLOR=\"yellow\" ";
413 t <<
" </TD></TR>\n";
419 std::vector<const MemberDef *> portList;
426 for (
const auto &md : *ml)
440 std::vector<const MemberDef *> inPorts;
441 std::vector<const MemberDef *> outPorts;
443 for (
const auto &md : portList)
448 inPorts.push_back(md);
452 outPorts.push_back(md);
456 size_t inp = inPorts.
size();
457 size_t outp = outPorts.size();
470 for (i=0;i<maxLen;i++)
475 auto md = inPorts[i];
485 auto md = outPorts[i];
509 "abs",
"access",
"after",
"alias",
"all",
"and",
"architecture",
"array",
"assert",
"assume",
"assume_guarantee",
"attribute",
510 "begin",
"block",
"body",
"buffer",
"bus",
511 "case",
"component",
"configuration",
"constant",
"context",
"cover",
512 "default",
"disconnect",
"downto",
513 "else",
"elsif",
"end",
"entity",
"exit",
514 "fairness",
"file",
"for",
"force",
"function",
515 "generate",
"generic",
"group",
"guarded",
516 "if",
"impure",
"in",
"inertial",
"inout",
"is",
517 "label",
"library",
"linkage",
"literal",
"loop",
519 "nand",
"new",
"next",
"nor",
"not",
"null",
520 "of",
"on",
"open",
"or",
"others",
"out",
521 "package",
"parameter",
"port",
"postponed",
"procedure",
"process",
"property",
"protected",
"pure",
522 "range",
"record",
"register",
"reject",
"release",
"restrict",
"restrict_guarantee",
"rem",
"report",
"rol",
"ror",
"return",
523 "select",
"sequence",
"severity",
"signal",
"shared",
"sla",
"sll",
"sra",
"srl",
"strong",
"subtype",
524 "then",
"to",
"transport",
"type",
525 "unaffected",
"units",
"until",
"use",
526 "variable",
"vmode",
"vprop",
"vunit",
527 "wait",
"when",
"while",
"with",
535 "natural",
"unsigned",
"signed",
"string",
"boolean",
"bit",
"bit_vector",
"character",
536 "std_ulogic",
"std_ulogic_vector",
"std_logic",
"std_logic_vector",
"integer",
537 "real",
"float",
"ufixed",
"sfixed",
"time",
"positive"
543 "abs",
"and",
"or",
"not",
"mod",
"xor",
"rem",
"xnor",
"ror",
"rol",
"sla",
"sll"
549 "base",
"left",
"right",
"high",
"low",
"ascending",
550 "image",
"value",
"pos",
"val",
"succ",
"pred",
"leftof",
"rightof",
"left",
"right",
"high",
"low",
551 "range",
"reverse_range",
"length",
"ascending",
"delayed",
"stable",
"quiet",
"transaction",
"event",
552 "active",
"last_event",
"last_active",
"last_value",
"driving",
"driving_value",
"simple_name",
"instance_name",
"path_name"
566 if (word.empty())
return 0;
569 return "keywordflow";
572 return "keywordtype";
578 return "vhdlkeyword";
594 static std::map<std::string,const MemberDef*>
g_varMap;
596 static std::map<ClassDef*,std::vector<ClassDef*> >
g_packages;
608 if (mdef)
return mdef;
610 if (mdef)
return mdef;
638 if (mdef)
return mdef;
640 if (mdef)
return mdef;
681 for (
const auto &cdp : cList_it->second)
684 if (mdef)
return mdef;
686 if (mdef)
return mdef;
721 for (
const auto &md : *ml)
744 std::vector<ClassDef*> cList;
748 for (
const auto &md : *mem)
773 if (cdef==0)
return 0;
778 for (
const auto &mdef : *mem)
800 if (cd==0)
return "";
813 if (cd==0)
return "";
831 std::vector<QCString> ql;
876 for (
const auto &s : ql)
884 if (ql.size()==1) s1.
resize(0);
910 QCString className=citer->className();
912 if (cd != citer.get() && (pos=className.
find(
'-'))!=-1)
917 qll.push_back(className);
997 if (index<0) index=0;
1002 temp=s1.
mid(index+1,(
end-index-1));
1007 name=s1.
left(index);
1020 if (s==-1) s=s1.
find(
'\t');
1046 if ((
size_t)index < ql.size())
1060 return "architecture";
1064 return "package body";
1117 static int stringCounter;
1120 sprintf(buf,
"%d",stringCounter++);
1131 static const reg::Ex reg(R
"([\[\]./<>:\s,;'+*|&=()\"-])");
1156 else if (j != 0 && ss)
1173 int ii=find.
find(
'"',2);
1178 temp=find.
remove(0,ii+1);
1200 static const reg::Ex regg(R
"([0-9][0-9eEfFbBcCdDaA_.#+?xXzZ-]*)");
1223 unsigned int index=1;
1225 for (
int j=0;j<len;j++)
1229 if (j>0) b=qcs[j-1];
1230 if (c==
'"' || c==
',' || c==
'\''|| c==
'(' || c==
')' || c==
':' || c==
'[' || c==
']' )
1232 if (temp.
length()>=index && temp.
at(index-1) !=
' ')
1272 size_t len=al.
size();
1300 if (
qstricmp(arg.attrib,arg.type) != 0)
1302 startFonts(arg.attrib.lower(),
"stringliteral",ol);
1328 size_t len=al.
size();
1373 if (!arg.attrib.isEmpty())
1437 size_t index=al.
size();
1519 if (sem) argString.
append(
", ");
1522 argString+=arg.name;
1524 argString+=arg.type;
1528 argString+=arg.defval+
" ";
1529 argString+=arg.name+
" :";
1530 argString+=arg.attrib+
" ";
1531 argString+=arg.type;
1542 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::LIBRARY,
FALSE),
QCString(),
FALSE,
VhdlDocGen::LIBRARY);
1543 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::USE,
FALSE),
QCString(),
FALSE,
VhdlDocGen::USE);
1544 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::FUNCTION,
FALSE),
QCString(),
FALSE,
VhdlDocGen::FUNCTION);
1545 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::COMPONENT,
FALSE),
QCString(),
FALSE,
VhdlDocGen::COMPONENT);
1546 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::CONSTANT,
FALSE),
QCString(),
FALSE,
VhdlDocGen::CONSTANT);
1547 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::TYPE,
FALSE),
QCString(),
FALSE,
VhdlDocGen::TYPE);
1548 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::SUBTYPE,
FALSE),
QCString(),
FALSE,
VhdlDocGen::SUBTYPE);
1549 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::GENERIC,
FALSE),
QCString(),
FALSE,
VhdlDocGen::GENERIC);
1550 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::PORT,
FALSE),
QCString(),
FALSE,
VhdlDocGen::PORT);
1551 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::PROCESS,
FALSE),
QCString(),
FALSE,
VhdlDocGen::PROCESS);
1552 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::SIGNAL,
FALSE),
QCString(),
FALSE,
VhdlDocGen::SIGNAL);
1553 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::ATTRIBUTE,
FALSE),
QCString(),
FALSE,
VhdlDocGen::ATTRIBUTE);
1554 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::PROCEDURE,
FALSE),
QCString(),
FALSE,
VhdlDocGen::PROCEDURE);
1555 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::RECORD,
FALSE),
QCString(),
FALSE,
VhdlDocGen::RECORD);
1556 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::UNITS,
FALSE),
QCString(),
FALSE,
VhdlDocGen::UNITS);
1557 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::SHAREDVARIABLE,
FALSE),
QCString(),
FALSE,
VhdlDocGen::SHAREDVARIABLE);
1558 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::VFILE,
FALSE),
QCString(),
FALSE,
VhdlDocGen::VFILE);
1559 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::GROUP,
FALSE),
QCString(),
FALSE,
VhdlDocGen::GROUP);
1560 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::INSTANTIATION,
FALSE),
QCString(),
FALSE,
VhdlDocGen::INSTANTIATION);
1561 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::ALIAS,
FALSE),
QCString(),
FALSE,
VhdlDocGen::ALIAS);
1562 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::MISCELLANEOUS,
TRUE),
QCString(),
FALSE,
VhdlDocGen::MISCELLANEOUS);
1565 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::CONFIG,
FALSE),
QCString(),
FALSE,
VhdlDocGen::CONFIG);
1566 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::UCF_CONST,
FALSE),
QCString(),
FALSE,
VhdlDocGen::UCF_CONST);
1621 bool hasParams =
FALSE;
1623 if (cd==0)
return hasParams;
1677 bool c=largs==
"context";
1704 tagFile <<
" <member kind=\"";
1741 tagFile <<
" </member>\n";
1752 ASSERT(cd!=0 || nd!=0 || fd!=0 || gd!=0 ||
1781 uint isAnonymous = (bool)(annoClassDef);
1791 if (!detailsVisible)
1855 name+=
" <"+mdef->
name()+
">";
1864 if (largs==
"context")
1961 name+=mdef->
name()+
"> ";
1994 if (htmlOn && !ltype.
isEmpty())
2005 if (!detailsVisible)
2053 for (
const auto &imd : *mlist)
2066 if (pack.find(md->
name().
str())==pack.end())
2070 pack.insert(md->
name().
str());
2080 if (ml==0)
return FALSE;
2081 for (
const auto &mdd : *ml)
2083 if (mdd->getMemberSpecifiers()==type)
2088 for (
const auto &mg : ml->getMemberGroupList())
2090 if (!mg->members().empty())
2126 bool hasHeader=mg->header()!=
"[NOHEADER]";
2133 if (!mg->documentation().isEmpty())
2205 fi=codeFragment.
find(
"\n",++fi);
2206 }
while(fi>=0 && j++ <3);
2211 codeFragment=codeFragment.
left(fi);
2212 codeFragment.
append(
"\n .... ");
2219 intf->parseCode( ol,
2253 while((i=n.
find(
"__"))>0)
2258 while((i=n.
find(
"_1"))>0)
2275 int i=ucFile.
find(
"\n");
2293 int in=temp.
find(
"-name");
2296 temp=temp.
remove(0,in+5);
2305 static const reg::Ex ee(R
"([\s=])");
2313 initUCF(entity,ff,temp,lineNo,fileName,brief);
2319 ucFile=ucFile.
remove(0,i+1);
2349 std::shared_ptr<Entry> current = std::make_shared<Entry>();
2352 current->bodyLine=line;
2353 current->fileName=fileName;
2354 current->type=
"ucf_const";
2365 current->name= n+
"_";
2370 current->brief=brief;
2371 current->briefLine=line;
2372 current->briefFile=fileName;
2411 if (!entity.
contains(
":"))
return "";
2413 static const reg::Ex exp(R
"([:()\s])");
2422 if ((index=entity.
findRev(
"."))>=0)
2424 entity.
remove(0,index+1);
2443 static const reg::Ex exp(R
"([()\s])");
2457 std::string label=ql[0];
2460 if ((index=entity.
findRev(
"."))>=0)
2462 entity.
remove(0,index+1);
2513 if (cur->includeName==
"entity" || cur->includeName==
"component" )
2515 entity=cur->includeName+
" "+cur->type;
2518 else if (cur->includeName.isEmpty())
2555 if (classEntity==cd)
return;
2557 bName=classEntity->
name();
2559 n1=classEntity->
name();
2593 md->setTagInfo(&tg);
2600 md->setBriefDescription(cur->brief,cur->briefFile,cur->briefLine);
2601 md->setBodySegment(cur->startLine,cur->startLine,-1) ;
2602 md->setDocumentation(cur->doc,cur->docFile,cur->docLine);
2638 size_t len=ql.size();
2642 for(
size_t i=0;i<len;i++)
2671 err(
"Possible recursive class relation while inside %s and looking for %s\n",
qPrint(cd->
name()),
qPrint(scd->
name()));
2689 found=ccd->
isBaseClass(scd,followInstances,level+1);
2699 for (
auto &bcd : bcl)
2705 int i = n.
find(
'(');
2708 bcd.usedName.append(
"(2)");
2714 std::string t=r.str();
2721 bcd.templSpecifiers=t;
2732 for (
const auto &md :
mdList)
2744 if (mdef==0)
return;
2769 std::shared_ptr<Entry> root = std::make_shared<Entry>();
2771 parser->parseInput(
"",codeFragment.
data(),root,
nullptr);
2840 #define STARTL (FlowChart::WHILE_NO | FlowChart::IF_NO | \
2841 FlowChart::FOR_NO | FlowChart::CASE_NO | \
2842 FlowChart::LOOP_NO | WHEN_NO)
2843 #define DECLN (FlowChart::WHEN_NO | \
2844 FlowChart::ELSIF_NO | FlowChart::IF_NO | \
2845 FlowChart::FOR_NO | FlowChart::WHILE_NO | \
2846 FlowChart::CASE_NO | FlowChart::LOOP_NO )
2847 #define STARTFIN (FlowChart::START_NO | FlowChart::END_NO)
2848 #define LOOP (FlowChart::FOR_NO | FlowChart::WHILE_NO | \
2849 FlowChart::LOOP_NO )
2850 #define ENDCL (FlowChart::END_CASE | FlowChart::END_LOOP)
2851 #define EEND (FlowChart::ENDIF_NO | FlowChart::ELSE_NO )
2852 #define IFF (FlowChart::ELSIF_NO | FlowChart::IF_NO)
2853 #define EXITNEXT (FlowChart::EXIT_NO | FlowChart::NEXT_NO )
2854 #define EMPTY (EEND | FlowChart::ELSIF_NO)
2855 #define EE (FlowChart::ELSE_NO | FlowChart::ELSIF_NO)
2856 #define EMPTNODE (ENDCL | EEND | FlowChart::ELSIF_NO)
2857 #define FLOWLEN (flowList.size()-1)
2889 static std::map<std::string,int> g_keyMap;
2894 if (q.
length()<=80)
return;
2959 static const reg::Ex ep(R
"(\s)");
2983 printf(
"\n NO: %s[%d,%d]",t.c_str(),flo.
stamp,flo.
id);
2990 for (
const auto &flowChart :
flowList)
3000 for (
size_t j=0;j<
flowList.size();j++)
3027 for (
size_t j=0;j<
flowList.size()-1;j++)
3030 int kind = flo.
type;
3065 for (
size_t j=0;j<ql.size();j++)
3081 ql.push_back(s.
str());
3084 for (
size_t j=0;j<ql.size();j++)
3103 for (
uint j=0;j < size-1 ;j++)
3120 for (
size_t j=0;j <
flowList.size() ;j++)
3147 t <<
"[shape=none, label=<\n";
3148 t <<
"<TABLE BORDER=\"0\" CELLBORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"2\" >\n ";
3149 t <<
"<TR><TD BGCOLOR=\"";
3154 t <<
" </TD></TR></TABLE>>];";
3161 for (
size_t j=0; j<size; j++)
3185 const char *p=str.
data();
3192 case '<': t <<
"<";
break;
3193 case '>': t <<
">";
break;
3194 case '&': t <<
"&";
break;
3195 case '\'': t <<
"'";
break;
3196 case '"': t <<
""";
break;
3197 case '\n': t <<
"<BR ALIGN=\"LEFT\"/>";
break;
3198 default: t << c;
break;
3250 expression=
substitute(expression,
"\"",
"\\\"");
3279 case IF_NO : t=
"\nif ("+
exp+
") then (yes)";
break;
3280 case ELSIF_NO: t=
"\nelseif ("+
exp+
") then (yes)";
break;
3281 case ELSE_NO: t=
"\nelse";
break;
3285 t+=
"if ("+
exp+
") then (yes)";
3292 case FOR_NO: t=
"\nwhile ("+
exp+
") is (yes)";
break;
3293 case WHILE_NO: t=
"\nwhile ("+
exp+
") is (yes)";
break;
3294 case END_LOOP: t=
"\nendwhile";
break;
3295 case END_CASE: t=
"\nendif\n:end case;";
break;
3298 if (!endL) t+=
"\nstop";
3300 case LOOP_NO: t=
"\nwhile (infinite loop)";
break;
3303 case COMMENT_NO: t=
"\n note left \n "+flo.
label+
"\nend note \n";
break;
3304 case BEGIN_NO: t=
"\n:begin;";
break;
3305 default: assert(
false);
break;
3312 int caseCounter = 0;
3313 int whenCounter = 0;
3317 for (
size_t j=0;j<size;j++)
3332 bool ca = (caseCounter>0 && whenCounter==0);
3360 case IF_NO:
return "if ";
3366 case END_NO:
return "end ";
3370 case FOR_NO:
return "for ";
3376 case LOOP_NO:
return "infinite loop ";
3381 default:
return "--failure--";
3397 ov+=
"/flow_design.dot";
3399 QCString vlargs=
"-Tsvg \""+ov+
"\" "+dir ;
3403 err(
"could not create dot file");
3409 t <<
" digraph G { \n";
3410 t <<
"rankdir=TB \n";
3411 t <<
"concentrate=true\n";
3412 t <<
"stylesheet=\"doxygen.css\"\n";
3425 QCString fileName = ov+
"/flow_design.dot";
3426 std::ofstream f(fileName.
str(),std::ofstream::out | std::ofstream::binary);
3429 err(
"Cannot open file %s for writing\n",
qPrint(fileName));
3486 g_keyMap.insert({qq.
str(),fl.
id});
3500 t <<
" [shape=diamond,style=filled,color=\"";
3502 t <<
"\",label=\" ";
3504 if (exit) kl=fl.
text+
" ";
3521 t <<
" [shape=ellipse ,label=\""+val+
"\"]\n";
3526 t <<
"[shape=box , style=rounded label=<\n";
3527 t <<
"<TABLE BORDER=\"0\" CELLBORDER=\"0\" CELLSPACING=\"0\" CELLPADDING=\"0\" >\n ";
3528 t <<
"<TR><TD BGCOLOR=\"";
3532 t <<
" </TD></TR></TABLE>>];";
3547 if (z==(
int)q.
length()-1)
3551 t <<
"[shape=none margin=0.1, label=<\n";
3552 t <<
"<TABLE BORDER=\"0\" CELLBORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"2\" >\n ";
3555 t <<
"<TR><TD BGCOLOR=\"" <<
flowCol.varNode <<
"\" > ";
3559 t <<
"<TR><TD BGCOLOR=\"" <<
flowCol.textNode <<
"\" > ";
3562 t <<
" </TD></TR></TABLE>>];";
3575 auto it = g_keyMap.find(s1.
str());
3576 auto it1 = g_keyMap.find(s2.
str());
3578 assert(it!=g_keyMap.end());
3579 assert(it1!=g_keyMap.end());
3605 t <<
"edge [color=\""+col+
"\",label=\""+
label+
"\"]\n";
3607 if (bFrom) t <<
":s";
3616 size_t index=al.
size();
3617 if (index==0)
return;
3621 prev.
fill(
' ',len+1);
3631 attl+=arg.attrib+
" ";
3638 if (--index) attl+=
",\n";
else attl+=
"\n";
3649 for (
size_t j=index+1; j<
flowList.size(); j++)
3666 for (
size_t j=index;j>0;j--)
3689 for (
size_t j=index;j>0;j--)
3703 for (
size_t j=index+1; j<
flowList.size(); j++)
3716 for (
size_t j=index+1; j<
flowList.size(); j++)
3719 int kind = flo.
type;
3727 if (s<stamp && stamp>0)
3735 if (s<stamp && stamp>0)
3744 if (s<stamp && stamp>0)
3758 size_t start = index+1;
3763 if (elseifNode>0 && elseifNode<endifNode)
3768 if (elseNode>0 && elseNode<endifNode)
3785 for (
size_t j=0;j<size;j++)
3788 int kind = fll.
type;
static const MemberDef * getFlowMember()
QCString writePlantUMLSource(const QCString &outDir, const QCString &fileName, const QCString &content, OutputFormat format, const QCString &engine, const QCString &srcFile, int srcLine)
Write a PlantUML compatible file.
void startParameterType(bool first, const QCString &key)
std::vector< std::string > StringVector
void startParameterName(bool one)
void disableAllBut(OutputGenerator::OutputType o)
static QCString getProcessNumber()
static void writeFlowChart()
static void writePlainVHDLDeclarations(const MemberList *ml, OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, uint64_t specifier)
void startMemberDescription(const QCString &anchor, const QCString &inheritId=QCString(), bool typ=false)
static bool isPort(const MemberDef *mdef)
static void correctMemberProperties(MemberDefMutable *md)
static bool isConfig(const MemberDef *mdef)
This struct is used to capture the tag file information for an Entry.
static const char * getNodeType(int c)
static size_t getNextNode(size_t index, int stamp)
static QCString convertNameToFileName()
virtual void writeSourceReffedBy(OutputList &ol, const QCString &scopeName) const =0
std::string replace(const std::string &str, const Ex &re, const std::string &replacement)
Searching in a given input string for parts that match regular expression re and replaces those parts...
MemberDefMutable * toMemberDefMutable(Definition *d)
static QCString parseForConfig(QCString &entity, QCString &arch)
virtual bool hasReferencedByRelation() const =0
static void printNode(const FlowChart &n)
QCString & replace(size_t index, size_t len, const char *s)
static void colTextNodes()
virtual QCString argsString() const =0
std::vector< FlowChart > flowList
virtual QCString briefDescription(bool abbr=FALSE) const =0
virtual void writeSourceRefs(OutputList &ol, const QCString &scopeName) const =0
static bool isLibrary(const MemberDef *mdef)
The common base class of all entity definitions found in the sources.
static bool isGeneric(const MemberDef *mdef)
static void createFlowChart(const MemberDef *)
virtual QCString documentation() const =0
static void endDot(TextStream &t)
virtual void updateBaseClasses(const BaseClassList &bcd)=0
Update the list of base classes to the one passed
static void writeFunctionProto(OutputList &ol, const ArgumentList &al, const MemberDef *)
void startDoxyAnchor(const QCString &fName, const QCString &manName, const QCString &anchor, const QCString &name, const QCString &args)
static QCString getProtectionName(int prot)
An abstract interface of a namespace symbol.
void endDoxyAnchor(const QCString &fn, const QCString &anchor)
static std::map< ClassDef *, std::vector< ClassDef * > > g_packages
void docify(const QCString &s)
static void alignFuncProc(QCString &q, const ArgumentList &al, bool isFunc)
static bool writeVHDLTypeDocumentation(const MemberDef *mdef, const Definition *d, OutputList &ol)
uint length() const
Returns the length of the string, not counting the 0-terminator.
static QCString parseForBinding(QCString &entity, QCString &arch)
static const MemberDef * findMemFlow(const MemberDef *mdef)
const MemberGroupRefList & getMemberGroupList() const
This class represents an function or template argument list.
void endMemberDescription()
int findRev(char c, int index=-1, bool cs=TRUE) const
static void writeSource(const MemberDefMutable *mdef, OutputList &ol, const QCString &cname)
virtual void setName(const QCString &name)=0
bool isEmpty() const
Returns TRUE iff the string is empty
bool match(const std::string &str, Match &match, const Ex &re)
Matches a given string str for a match against regular expression re.
static QCString getClassTitle(const ClassDef *)
void writeString(const QCString &text)
void insertMemberAlign(bool templ=FALSE)
uint size() const
Returns the length of the string, not counting the 0-terminator.
static void writeVhdlDeclarations(const MemberList *, OutputList &, const GroupDef *, const ClassDef *, const FileDef *, const NamespaceDef *)
virtual ClassDef * getClassDefOfAnonymousType() const =0
static std::vector< QCString > split(const QCString &str, const QCString &sep, bool allowEmptyEntries=FALSE, bool cleanup=TRUE)
static void writeTable(const std::vector< const MemberDef * > &portList, TextStream &t)
void push_back(const MemberDef *md)
static void addBaseClass(ClassDef *cd, ClassDef *ent)
static void endDot(TextStream &t)
T * add(const char *k, Args &&... args)
Adds a new object to the ordered vector if it was not added already.
static void findAllArchitectures(std::vector< QCString > &ql, const ClassDef *cd)
virtual void setType(const QCString &t)=0
static void startFonts(const QCString &q, const char *keyword, OutputList &ol)
static void codify(TextStream &t, const QCString &str)
std::set< std::string > StringSet
static QCString formatBriefNote(const QCString &brief, ClassDef *cd)
virtual void insertBaseClass(ClassDef *, const QCString &name, Protection p, Specifier s, const QCString &t=QCString())=0
void endParameterName(bool last, bool one, bool bracket)
static QCString getNodeName(int n)
static PlantumlManager & instance()
static QCString printPlantUmlNode(const FlowChart &flo, bool, bool)
static void writeUCFLink(const MemberDef *mdef, OutputList &ol)
static void writeClassToDot(TextStream &t, ClassDef *cd)
static QCString getIndexWord(const QCString &, int index)
void err(const char *fmt,...)
static bool isVariable(const MemberDef *mdef)
static bool isAlias(const MemberDef *mdef)
char & at(size_t i)
Returns a reference to the character at index i.
Text streaming class that buffers data.
MemberDefMutable * createMemberDef(const QCString &defFileName, int defLine, int defColumn, const QCString &type, const QCString &name, const QCString &args, const QCString &excp, Protection prot, Specifier virt, bool stat, Relationship related, MemberType t, const ArgumentList &tal, const ArgumentList &al, const QCString &metaData)
Factory method to create a new instance of a MemberDef
virtual Protection protection() const =0
Return the protection level (Public,Protected,Private) in which this compound was found.
int find(char c, int index=0, bool cs=TRUE) const
virtual int briefLine() const =0
FlowChart(int typ, const QCString &t, const QCString &ex, const QCString &label=QCString())
@ MemberListType_pubMethods
static const MemberDef * findFunction(const QCString &name, const QCString &package)
void flush()
Flushes the buffer.
static void writeFormatString(const QCString &, OutputList &ol, const MemberDef *)
virtual FileDef * getFileDef() const =0
Returns the namespace this compound is in, or 0 if it has a global scope.
virtual QCString getReference() const =0
static bool isProcess(const MemberDef *mdef)
DirIterator begin(DirIterator it) noexcept
static bool isPackage(const MemberDef *mdef)
static void moveToPrevLevel()
void endMemberGroupDocs()
bool hasParameters() const
static const std::set< std::string > g_vhdlKeyWordSet1
DirIterator end(const DirIterator &) noexcept
int contains(char c, bool cs=TRUE) const
virtual bool isLinkable() const =0
static bool isSubType(const MemberDef *mdef)
virtual const ClassDef * templateMaster() const =0
Returns the template master of which this class is an instance.
virtual bool isBriefSectionVisible() const =0
A model of a group of symbols.
static size_t findPrevLoop(size_t j, int stamp, bool endif=FALSE)
virtual void setBodyDef(const FileDef *fd)=0
Namespace for the regular expression functions
static bool isProcedure(const MemberDef *mdef)
static void writeProcessProto(OutputList &ol, const ArgumentList &al, const MemberDef *)
void startMemberGroupDocs()
virtual QCString anchor() const =0
Class representing a list of output generators that are written to in parallel.
static void startDot(TextStream &t)
static QCString getClassName(const ClassDef *)
static const MemberDef * flowMember
static void addFlowChart(int type, const QCString &text, const QCString &exp, const QCString &label=QCString())
static void codify(TextStream &t, const QCString &str)
QCString addHtmlExtensionIfMissing(const QCString &fName)
const char * textNodeLink
A model of a class/file/namespace member symbol.
static const std::set< std::string > g_vhdlKeyWordSet0
const EntryList & getVhdlInstList()
static bool isConstraint(const MemberDef *mdef)
static bool deleteCharRev(QCString &s, char c)
virtual void setMemberSpecifiers(uint64 s)=0
void alignText(QCString &q)
A abstract class representing of a compound symbol.
void startParameterList(bool openBracket)
QCString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
static void writeFlowLinks(TextStream &t)
static MemberNameLinkedMap * functionNameLinkedMap
void startMemberItem(const QCString &anchor, int i1, const QCString &id=QCString())
void disable(OutputGenerator::OutputType o)
static void parseFuncProto(const QCString &text, QCString &name, QCString &ret, bool doc=false)
static void writeVHDLDeclarations(const MemberList *ml, OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const QCString &title, const QCString &subtitle, bool showEnumValues, int type)
void startMemberHeader(const QCString &anchor, int typ=2)
QCString left(size_t len) const
static QCString convertFileNameToClassName(QCString name)
virtual QCString excpString() const =0
static bool isVhdlFunction(const MemberDef *mdef)
virtual bool isVariable() const =0
static bool isFile(const MemberDef *mdef)
static ParserManager * parserManager
static int compareString(const QCString &s1, const QCString &s2)
std::unique_ptr< OutlineParserInterface > getOutlineParser(const QCString &extension)
Gets the interface to the parser associated with a given extension.
void endMemberGroup(bool last)
virtual QCString getOutputFileBase() const =0
Returns the unique base name (without extension) of the class's file on disk
virtual QCString symbolName() const =0
static bool isSignals(const MemberDef *mdef)
virtual const BaseClassList & baseClasses() const =0
Returns the list of base classes from which this class directly inherits.
static void writeLink(const MemberDef *mdef, OutputList &ol)
static void parseUCF(const char *input, Entry *entity, const QCString &f, bool vendor)
static void writeEdge(TextStream &t, int fl_from, int fl_to, int i, bool bFrom=FALSE, bool bTo=FALSE)
static bool isSignal(const MemberDef *mdef)
static void initUCF(Entry *root, const QCString &type, QCString &qcs, int line, const QCString &fileName, QCString &brief)
QCString simplifyWhiteSpace() const
return a copy of this string with leading and trailing whitespace removed and multiple whitespace cha...
#define theTranslator_vhdlType
static const ClassDef * findArchitecture(const ClassDef *cd)
int qstricmp(const char *str1, const char *str2)
static void writeVHDLDeclaration(const MemberDefMutable *mdef, OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, bool inGroup)
void lineBreak(const QCString &style=QCString())
Translator * theTranslator
virtual QCString name() const =0
static std::vector< const MemberDef * > getPorts(const ClassDef *cd)
static bool isCompInst(const MemberDef *mdef)
static void writeTagFile(MemberDefMutable *mdef, TextStream &tagFile)
static bool writeFuncProcDocu(const MemberDef *mdef, OutputList &ol, const ArgumentList &al, bool type=false)
virtual void addWord(const QCString &word, bool hiPriority)=0
static void formatString(const QCString &, OutputList &ol, const MemberDef *)
static void writeProcedureProto(OutputList &ol, const ArgumentList &al, const MemberDef *)
This class contains the information about the argument of a function or template
QCString parseCommentAsText(const Definition *scope, const MemberDef *md, const QCString &doc, const QCString &fileName, int lineNr)
virtual const ClassDef * getClassDef() const =0
static bool isComponent(const MemberDef *mdef)
static size_t findNextLoop(size_t j, int stamp)
void moveToSubEntryAndKeep(Entry *e)
virtual QCString trVhdlType(uint64 type, bool single)=0
static bool isSubClass(ClassDef *cd, ClassDef *scd, bool followInstances, int level)
virtual bool isBaseClass(const ClassDef *bcd, bool followInstances, int level=0) const =0
Returns TRUE iff bcd is a direct or indirect base class of this class.
virtual void warnIfUndocumented() const =0
static bool isNumber(const std::string &s)
bool readCodeFragment(const QCString &fileName, int &startLine, int &endLine, QCString &result)
Reads a fragment from file fileName starting with line startLine and ending with line endLine.
virtual void setLanguage(SrcLangExt lang)=0
static QCString getRecordNumber()
std::unique_ptr< CodeParserInterface > getCodeParser(const QCString &extension)
Gets the interface to the parser associated with a given extension.
virtual QCString briefDescription(bool abbreviate=FALSE) const =0
virtual QCString getOutputFileBase() const =0
virtual int getStartBodyLine() const =0
virtual int getEndBodyLine() const =0
static const MemberDef * findMemberDef(ClassDef *cd, const QCString &key, MemberListType type)
This function returns the entity|package in which the key (type) is found
static void alignCommentNode(TextStream &t, QCString com)
static void writeOverview()
static void writeStringLink(const MemberDef *mdef, QCString mem, OutputList &ol)
int system(const QCString &command, const QCString &args, bool commandHasConsole=true)
@ MemberListType_variableMembers
int toInt(bool *ok=0, int base=10) const
const T * find(const std::string &key) const
Find an object given the key.
ClassDef * toClassDef(Definition *d)
bool isEnabled(OutputGenerator::OutputType o)
bool fill(char c, int len=-1)
Fills a string with a predefined character
static void writeRecordUnit(QCString &largs, QCString <ype, OutputList &ol, const MemberDefMutable *mdef)
virtual void insertSubClass(ClassDef *, Protection p, Specifier s, const QCString &t=QCString())=0
static void writeColumn(TextStream &t, const MemberDef *md, bool start)
virtual const BaseClassList & subClasses() const =0
Returns the list of sub classes that directly derive from this class
static bool isGroup(const MemberDef *mdef)
static void writeInlineClassLink(const ClassDef *, OutputList &ol)
virtual QCString briefFile() const =0
void startTextLink(const QCString &file, const QCString &anchor)
static void deleteAllChars(QCString &s, char c)
static void endTable(TextStream &t)
QCString & setNum(short n)
static bool writeClassType(const ClassDef *, OutputList &ol, QCString &cname)
static bool isUnit(const MemberDef *mdef)
virtual uint64 getMemberSpecifiers() const =0
void startCodeFragment(const QCString &style)
static void startTable(TextStream &t, const QCString &className)
void startMemberGroupHeader(bool b)
static QCString splitString(QCString &str, char c)
static void writeVhdlLink(const ClassDef *cdd, OutputList &ol, QCString &type, QCString &name, QCString &beh)
virtual QCString qualifiedName() const =0
static SearchIndexIntf * searchIndex
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
static void buildCommentNodes(TextStream &t)
virtual QCString getOutputFileBase() const =0
static bool membersHaveSpecificType(const MemberList *ml, uint64 type)
virtual void writeDocAnchorsToTagFile(TextStream &) const =0
static const char * findKeyWord(const QCString &word)
QCString & remove(size_t index, size_t len)
Represents an unstructured piece of information, about an entity found in the sources.
#define Config_getBool(name)
static bool isVType(const MemberDef *mdef)
QCString & append(char c)
const char * decisionNode
static size_t getNextIfLink(const FlowChart &, size_t)
static std::map< std::string, const MemberDef * > g_varMap
Class representing a regular expression.
virtual QCString getReference() const =0
If this class originated from a tagfile, this will return the tag file reference
static void writeShape(TextStream &t, const FlowChart &fl)
static bool isAttribute(const MemberDef *mdef)
virtual void setCurrentDoc(const Definition *ctx, const QCString &anchor, bool isSourceFile)=0
static void findAllPackages(ClassDef *)
virtual Definition * getOuterScope() const =0
void parseText(const QCString &textStr)
void endMemberGroupHeader()
static void computeVhdlComponentRelations()
static QCString convertArgumentListToString(const ArgumentList &al, bool f)
virtual QCString absFilePath() const =0
static void delFlowList()
const char * qPrint(const char *s)
void startMemberSubtitle()
virtual const FileDef * getFileDef() const =0
static void writeRecUnitDocu(const MemberDef *md, OutputList &ol, QCString largs)
#define Config_getString(name)
static void writeVhdlEntityToolTip(TextStream &t, ClassDef *cd)
const char * startEndNode
virtual QCString getDefFileName() const =0
static ClassDef * findVhdlClass(const QCString &className)
void startFontClass(const QCString &c)
void generateDoc(const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const QCString &exampleName, bool singleLine, bool linkFromIndex, bool markdownSupport)
virtual const ArgumentList & argumentList() const =0
static bool isRecord(const MemberDef *mdef)
static const MemberDef * findMember(const QCString &className, const QCString &memName)
virtual void writeSourceDef(OutputList &ol, const QCString &scopeName) const =0
static const std::set< std::string > g_vhdlKeyWordSet3
void pushGeneratorState()
static void resetCodeVhdlParserState()
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string
virtual MemberList * getMemberList(MemberListType lt) const =0
Returns the members in the list identified by lt
QCString convertToXML(const QCString &s, bool keepEntities)
static const std::set< std::string > g_vhdlKeyWordSet2
A model of a file symbol.
static bool isPackageBody(const MemberDef *mdef)
static void printUmlTree()
static ClassDef * getPackageName(const QCString &name)
static std::vector< const MemberDef * > mdList
virtual void insertMember(MemberDef *)=0
void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)
void insertMemberAlignLeft(int typ=0, bool templ=FALSE)
static bool isMisc(const MemberDef *mdef)
ClassDefMutable * toClassDefMutable(Definition *d)
Portable versions of functions that are platform dependent.
void generatePlantUMLOutput(const QCString &baseName, const QCString &outDir, OutputFormat format)
Convert a PlantUML file to an image.
static size_t findLabel(size_t j, const QCString &)
static void addInstance(ClassDefMutable *entity, ClassDefMutable *arch, ClassDefMutable *inst, const std::shared_ptr< Entry > &cur)
virtual QCString briefDescriptionAsTooltip() const =0
virtual bool hasReferencesRelation() const =0
static ClassLinkedMap * classLinkedMap
static void startDot(TextStream &t)
A bunch of utility functions.
virtual QCString typeString() const =0
std::vector< BaseClassDef > BaseClassList
virtual QCString localName() const =0
static void setFlowMember(const MemberDef *flowMember)
static std::vector< ClassDef * > g_classList
void enable(OutputGenerator::OutputType o)
static void prepareComment(QCString &)
QCString convertToId(const QCString &s)
A list of MemberDef objects as shown in documentation sections.
virtual bool hasDetailedDescription() const =0
bool stripPrefix(const QCString &prefix)
static void printFlowTree()
static bool isConstant(const MemberDef *mdef)
QCString right(size_t len) const
virtual QCString className() const =0
Returns the name of the class including outer classes, but not including namespaces.
void endCodeFragment(const QCString &style)
static bool isArchitecture(const MemberDef *mdef)
QCString & prepend(const char *s)
bool resize(size_t newlen)
Resizes the string to hold newlen characters (this value should also count the 0-terminator).
uint qstrlen(const char *str)
static void writeVhdlDotLink(TextStream &t, const QCString &a, const QCString &b, const QCString &style)
static bool isEntity(const MemberDef *mdef)
static size_t findNode(size_t index, int stamp, int type)
virtual const GroupDef * getGroupDef() const =0
static ClassDef * getClass(const QCString &name)
int findIndex(const StringVector &sv, const std::string &s)
find the index of a string in a vector of strings, returns -1 if the string could not be found
This is an alternative implementation of QCString.