64 #define theTranslator_vhdlType VhdlDocGen::trVhdlType 114 case '<': t <<
"<";
116 case '>': t <<
">";
118 case '&': t <<
"&";
120 case '\'': t <<
"'";
122 case '"': t <<
""";
166 QCString dir=
"-o \""+ov+
"/vhdl_design_overview.html\"";
167 ov+=
"/vhdl_design.dot";
173 err(
"could not create dot file");
184 for ( ; (cd=cli.current()) ; ++
cli )
202 fprintf(
stderr,
"Warning: Cannot open file %s for writing\n",fileName.
data());
208 for (cli.toFirst() ; (cd=cli.current()) ; ++
cli )
220 if (port->
count()==0)
241 for ( ; (bcd=bcli.
current()) ; ++bcli )
264 t <<
" digraph G { \n";
265 t <<
"rankdir=LR \n";
266 t <<
"concentrate=TRUE\n";
267 t <<
"stylesheet=\"doxygen.css\"\n";
277 t << className <<
" [ shape=none , fontname=\"arial\", fontcolor=\"blue\" , \n";
278 t <<
"label=<<TABLE BORDER=\"0\" CELLBORDER=\"1\" CELLSPACING=\"0\">\n";
287 t <<
"[style=" << style <<
"];\n";
297 QCString repl(
"<BR ALIGN=\"LEFT\"/>");
354 t << node <<
"[shape=none margin=0.1, label=<\n";
355 t <<
"<TABLE BORDER=\"0\" CELLBORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"2\" >\n ";
356 t <<
"<TR><TD BGCOLOR=\"lightcyan\"> ";
358 t <<
" </TD></TR></TABLE>>];";
389 t <<
"<TD ALIGN=\"LEFT\" ";
422 t <<
"BGCOLOR=\"orange\">";
424 t <<
"BGCOLOR=\"azure\">";
428 t <<
"BGCOLOR=\"pink\">";
432 t <<
"BGCOLOR=\"lightgrey\">";
458 t <<
"<TR><TD COLSPAN=\"2\" BGCOLOR=\"yellow\" ";
467 t <<
" </TD></TR>\n";
520 int inp = inPorts.
count();
521 int outp = outPorts.
count();
534 for(i=0;i<maxLen;i++)
574 const char* g_vhdlKeyWordMap0[] =
576 "abs",
"access",
"after",
"alias",
"all",
"and",
"architecture",
"array",
"assert",
"assume",
"assume_guarantee",
"attribute",
577 "begin",
"block",
"body",
"buffer",
"bus",
578 "case",
"component",
"configuration",
"constant",
"context",
"cover",
579 "default",
"disconnect",
"downto",
580 "else",
"elsif",
"end",
"entity",
"exit",
581 "fairness",
"file",
"for",
"force",
"function",
582 "generate",
"generic",
"group",
"guarded",
583 "if",
"impure",
"in",
"inertial",
"inout",
"is",
584 "label",
"library",
"linkage",
"literal",
"loop",
586 "nand",
"new",
"next",
"nor",
"not",
"null",
587 "of",
"on",
"open",
"or",
"others",
"out",
588 "package",
"parameter",
"port",
"postponed",
"procedure",
"process",
"property",
"proctected",
"pure",
589 "range",
"record",
"register",
"reject",
"release",
"restrict",
"restrict_guarantee",
"rem",
"report",
"rol",
"ror",
"return",
590 "select",
"sequence",
"severity",
"signal",
"shared",
"sla",
"sll",
"sra",
"srl",
"strong",
"subtype",
591 "then",
"to",
"transport",
"type",
592 "unaffected",
"units",
"until",
"use",
593 "variable",
"vmode",
"vprop",
"vunit",
594 "wait",
"when",
"while",
"with",
601 const char* g_vhdlKeyWordMap1[] =
603 "natural",
"unsigned",
"signed",
"string",
"boolean",
"bit",
"bit_vector",
"character",
604 "std_ulogic",
"std_ulogic_vector",
"std_logic",
"std_logic_vector",
"integer",
605 "real",
"float",
"ufixed",
"sfixed",
"time",0
609 const char* g_vhdlKeyWordMap2[] =
611 "abs",
"and",
"or",
"not",
"mod",
"xor",
"rem",
"xnor",
"ror",
"rol",
"sla",
616 const char* g_vhdlKeyWordMap3[] =
618 "base",
"left",
"right",
"high",
"low",
"ascending",
619 "image",
"value",
"pos",
"val",
"succ",
"pred",
"leftof",
"rightof",
"left",
"right",
"high",
"low",
620 "range",
"reverse_range",
"length",
"ascending",
"delayed",
"stable",
"quiet",
"transaction",
"event",
621 "active",
"last_event",
"last_active",
"last_value",
"driving",
"driving_value",
"simple_name",
"instance_name",
"path_name",0
630 while (g_vhdlKeyWordMap0[j])
633 new QCString(g_vhdlKeyWordMap0[j]));
638 while (g_vhdlKeyWordMap1[j])
641 new QCString(g_vhdlKeyWordMap1[j]));
646 while (g_vhdlKeyWordMap2[j])
649 new QCString(g_vhdlKeyWordMap2[j]));
654 while (g_vhdlKeyWordMap3[j])
657 new QCString(g_vhdlKeyWordMap3[j]));
669 static QCString vhdlkeyword(
"vhdlkeyword");
670 static QCString vhdltype(
"comment");
671 static QCString vhdllogic(
"vhdllogic");
672 static QCString preprocessor(
"keywordflow");
676 if (word.
isEmpty() || word.
at(0)==
'\0')
return 0;
679 return &preprocessor;
695 if (name==0 || name[0]==
'\0')
return 0;
727 if (mdef)
return mdef;
729 if (mdef)
return mdef;
757 if (mdef)
return mdef;
759 if (mdef)
return mdef;
802 if (mdef)
return mdef;
804 if (mdef)
return mdef;
873 if (packages.
contains(cdef))
return;
889 packages.
insert(cdef,cList);
908 if (cdef==0)
return 0;
949 if (equ==0)
return mdef;
966 if (cd==0)
return "";
980 if (cd==0)
return "";
1042 for (
int i=0;i<j;i++)
1074 for ( ; (citer=cli.current()) ; ++
cli )
1077 if (cd != citer && jj.
contains(
'-')!=-1)
1096 for ( ; (citer=cli.current()) ; ++
cli )
1102 if (ql[0].utf8()==nn )
1140 const char*
s=
"--!";
1174 temp=s1.
mid(index+1,(end-index-1));
1179 name=s1.
left(index);
1221 if (ql.
count() > (
unsigned int)index)
1223 return ql[
index].utf8();
1235 return "architecture";
1239 return "package body";
1328 static int stringCounter;
1331 sprintf(buf,
"%d",stringCounter++);
1342 QRegExp reg(
"[\\[\\]\\.\\/\\:\\<\\>\\:\\s\\,\\;\\'\\+\\-\\*\\|\\&\\=\\(\\)\"]");
1370 else if (j != 0 && ss)
1387 int ii=find.
find(
'"',2);
1392 temp=find.
remove(0,ii+1);
1414 static QRegExp regg(
"[0-9][0-9eEfFbBcCdDaA_.#-+?xXzZ]*");
1443 unsigned int index=1;
1445 for (
int j=0;j<len;j++)
1449 if (j>0) b=qcs[j-1];
1450 if (c==
'"' || c==
',' || c==
'\''|| c==
'(' || c==
')' || c==
':' || c==
'[' || c==
']' )
1452 if (temp.
length()>=index && temp.
at(index-1) !=
' ')
1494 int len=al->
count();
1500 for (;(arg=ali.
current());++ali)
1551 int len=al->
count();
1559 for (;(arg=ali.
current());++ali)
1634 for (;(arg=ali.
current());++ali)
1660 if (al==0)
return FALSE;
1676 for (;(arg=ali.
current());++ali)
1748 for (;(arg=ali.
current());++ali)
1750 if (sem) argString.
append(
", ");
1753 argString+=arg->
name;
1755 argString+=arg->
type;
1759 argString+=arg->
defval+
" ";
1760 argString+=arg->
name+
" :";
1761 argString+=arg->
attrib+
" ";
1762 argString+=arg->
type;
1773 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::LIBRARY,
FALSE),0,
FALSE,
VhdlDocGen::LIBRARY);
1774 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::USE,
FALSE),0,
FALSE,
VhdlDocGen::USE);
1775 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::FUNCTION,
FALSE),0,
FALSE,
VhdlDocGen::FUNCTION);
1776 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::COMPONENT,
FALSE),0,
FALSE,
VhdlDocGen::COMPONENT);
1777 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::CONSTANT,
FALSE),0,
FALSE,
VhdlDocGen::CONSTANT);
1778 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::TYPE,
FALSE),0,
FALSE,
VhdlDocGen::TYPE);
1779 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::SUBTYPE,
FALSE),0,
FALSE,
VhdlDocGen::SUBTYPE);
1780 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::GENERIC,
FALSE),0,
FALSE,
VhdlDocGen::GENERIC);
1781 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::PORT,
FALSE),0,
FALSE,
VhdlDocGen::PORT);
1782 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::PROCESS,
FALSE),0,
FALSE,
VhdlDocGen::PROCESS);
1783 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::SIGNAL,
FALSE),0,
FALSE,
VhdlDocGen::SIGNAL);
1784 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::ATTRIBUTE,
FALSE),0,
FALSE,
VhdlDocGen::ATTRIBUTE);
1785 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::PROCEDURE,
FALSE),0,
FALSE,
VhdlDocGen::PROCEDURE);
1786 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::RECORD,
FALSE),0,
FALSE,
VhdlDocGen::RECORD);
1787 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::UNITS,
FALSE),0,
FALSE,
VhdlDocGen::UNITS);
1788 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::SHAREDVARIABLE,
FALSE),0,
FALSE,
VhdlDocGen::SHAREDVARIABLE);
1789 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::VFILE,
FALSE),0,
FALSE,
VhdlDocGen::VFILE);
1790 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::GROUP,
FALSE),0,
FALSE,
VhdlDocGen::GROUP);
1791 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::INSTANTIATION,
FALSE),0,
FALSE,
VhdlDocGen::INSTANTIATION);
1792 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::ALIAS,
FALSE),0,
FALSE,
VhdlDocGen::ALIAS);
1796 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::CONFIG,
FALSE),0,
FALSE,
VhdlDocGen::CONFIG);
1797 VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,
theTranslator_vhdlType(
VhdlDocGen::UCF_CONST,
FALSE),0,
FALSE,
VhdlDocGen::UCF_CONST);
1806 for ( ; (mdd=mmli.
current()); ++mmli )
1839 bool hasParams =
FALSE;
1841 if (cd==0)
return hasParams;
1895 bool c=largs==
"context";
1922 tagFile <<
" <member kind=\"";
1945 tagFile <<
"\">" <<
endl;
1959 tagFile <<
" </member>" <<
endl;
1970 ASSERT(cd!=0 || nd!=0 || fd!=0 || gd!=0 ||
1999 uint isAnonymous = (
bool)(annoClassDef);
2009 if (!detailsVisible)
2077 name+=
" <"+mdef->
name()+
">";
2086 if (largs==
"context")
2139 largs.prepend(
"::");
2140 largs.prepend(mdef->
name().
data());
2182 name+=mdef->
name()+
"> ";
2215 if (ltype.isEmpty()) {
2219 if (!ltype.isEmpty())
2224 bRec=largs.stripPrefix(
"record") ;
2225 bUnit=largs.stripPrefix(
"units") ;
2227 if (bRec) ol.
docify(
"record: ");
2228 if (bUnit) ol.
docify(
"units: ");
2245 if (htmlOn && !ltype.isEmpty())
2249 if (!ltype.isEmpty()) ol.
docify(
" ");
2256 if (!detailsVisible)
2277 if (mdef->getGroupDef()!=0 && gd==0)
2308 for ( ; (md=mli.
current()); ++mli )
2332 if (ml==0)
return FALSE;
2335 for ( ; (mdd=mmli.
current()); ++mmli )
2346 while ((mg=mgli.current()))
2360 const char *
title,
const char *subtitle,
bool ,
int type)
2372 if (subtitle && subtitle[0]!=0)
2385 while ((mg=mgli.current()))
2390 bool hasHeader=mg->header()!=
"[NOHEADER]";
2397 if (!mg->documentation().isEmpty())
2434 if (sing)
return "Library";
2435 else return "Libraries";
2437 if (sing)
return "Package";
2438 else return "Packages";
2440 if (sing)
return "Signal";
2441 else return "Signals";
2443 if (sing)
return "Component";
2444 else return "Components";
2446 if (sing)
return "Constant";
2447 else return "Constants";
2449 if (sing)
return "Entity";
2450 else return "Entities";
2452 if (sing)
return "Type";
2453 else return "Types";
2455 if (sing)
return "Subtype";
2456 else return "Subtypes";
2458 if (sing)
return "Function";
2459 else return "Functions";
2461 if (sing)
return "Record";
2462 else return "Records";
2464 if (sing)
return "Procedure";
2465 else return "Procedures";
2467 if (sing)
return "Architecture";
2468 else return "Architectures";
2470 if (sing)
return "Attribute";
2471 else return "Attributes";
2473 if (sing)
return "Process";
2474 else return "Processes";
2476 if (sing)
return "Port";
2477 else return "Ports";
2479 if (sing)
return "use clause";
2480 else return "Use Clauses";
2482 if (sing)
return "Generic";
2483 else return "Generics";
2485 return "Package Body";
2489 if (sing)
return "Shared Variable";
2490 return "Shared Variables";
2492 if (sing)
return "File";
2495 if (sing)
return "Group";
2498 if (sing)
return "Instantiation";
2499 else return "Instantiations";
2501 if (sing)
return "Alias";
2504 if (sing)
return "Configuration";
2505 return "Configurations";
2507 return "Miscellaneous";
2509 return "Constraints";
2517 return "Design Unit Hierarchy";
2522 return "Design Unit List";
2527 return "Design Unit Members";
2532 return "Here is a list of all design unit members with links to " 2533 "the Entities they belong to:";
2538 return "Design Unit Index";
2543 return "Design Units";
2548 return "Functions/Procedures/Processes";
2592 fi=codeFragment.
find(
"\n",++fi);
2593 }
while(fi>=0 && j++ <3);
2598 codeFragment=codeFragment.
left(fi);
2599 codeFragment.
append(
"\n .... ");
2625 mdef->writeSourceDef(ol,cname);
2626 mdef->writeSourceRefs(ol,cname);
2627 mdef->writeSourceReffedBy(ol,cname);
2640 while((i=n.
find(
"__"))>0)
2645 while((i=n.
find(
"_1"))>0)
2662 int i=ucFile.
find(
"\n");
2680 int i=temp.
find(
"-name");
2688 initUCF(entity,0,temp,lineNo,fileName,brief);
2693 int i=temp.
find(ee);
2705 ucFile=ucFile.
remove(0,i+1);
2719 int i= qcs.
find(reg);
2741 current->
type=
"ucf_const";
2752 current->
name= n+
"_";
2773 bool equ=(n.length()==largs.length());
2808 QCString ofile(
"vhdl_design_overview");
2835 if (!entity.
contains(
":"))
return "";
2840 assert(ql.
count()>=2);
2841 label = ql[0].utf8();
2842 entity = ql[1].utf8();
2843 if ((index=entity.
findRev(
"."))>=0)
2845 entity.
remove(0,index+1);
2877 entity = ql[1].utf8();
2878 if ((index=entity.
findRev(
"."))>=0)
2880 entity.
remove(0,index+1);
2898 for (;(cd=cli.current());++
cli)
2931 if (
qstricmp(conf2,
"configuration")==0)
2936 for (
uint iter=0;iter<confList.
count(); iter++)
2980 archName=archClass->
name();
2982 all=allOt.
lower()==
"all" ;
2983 others= allOt.
lower()==
"others";
2985 for (;(cur=eli.
current());++eli)
3015 archy1=comp+
":"+ql[j].utf8();
3019 if (archy1==sign1.
lower() && !cur->
stat)
3024 if (entClass==0 || ent==0)
3058 for (
uint iter=0;iter<confList.
count(); iter++)
3121 if (classEntity==cd)
return;
3123 bName=classEntity->
name();
3174 info+=
" for hierarchy ";
3191 for(
uint i=0;i<len;i++)
3211 for(
uint i=0;i<len;i++)
3240 err(
"Possible recursive class relation while inside %s and looking for %s\n",
qPrint(cd->
name()),
qPrint(scd->
name()));
3248 for ( ; bcli.current() && !
found ; ++bcli)
3250 ClassDef *ccd=bcli.current()->classDef;
3261 found=ccd->
isBaseClass(scd,followInstances,level+1);
3274 for ( ; bcli.current() ; ++bcli)
3276 ClassDef *ccd=bcli.current()->classDef;
3280 int i = n.
find(
'(');
3283 bcli.current()->usedName.append(
"(2)");
3295 bcli.current()->usedName=
s;
3296 bcli.current()->templSpecifiers=
t;
3318 if (mdef==0)
return;
3416 #define STARTL (FlowChart::WHILE_NO | FlowChart::IF_NO | \ 3417 FlowChart::FOR_NO | FlowChart::CASE_NO | \ 3418 FlowChart::LOOP_NO | WHEN_NO) 3419 #define DECLN (FlowChart::WHEN_NO | \ 3420 FlowChart::ELSIF_NO | FlowChart::IF_NO | \ 3421 FlowChart::FOR_NO | FlowChart::WHILE_NO | \ 3422 FlowChart::CASE_NO | FlowChart::LOOP_NO ) 3423 #define STARTFIN (FlowChart::START_NO | FlowChart::END_NO) 3424 #define LOOP (FlowChart::FOR_NO | FlowChart::WHILE_NO | \ 3425 FlowChart::LOOP_NO ) 3426 #define ENDCL (FlowChart::END_CASE | FlowChart::END_LOOP) 3427 #define EEND (FlowChart::ENDIF_NO | FlowChart::ELSE_NO ) 3428 #define IFF (FlowChart::ELSIF_NO | FlowChart::IF_NO) 3429 #define EXITNEXT (FlowChart::EXIT_NO | FlowChart::NEXT_NO ) 3430 #define EMPTY (EEND | FlowChart::ELSIF_NO) 3431 #define EE (FlowChart::ELSE_NO | FlowChart::ELSIF_NO) 3432 #define EMPTNODE (ENDCL | EEND | FlowChart::ELSIF_NO) 3433 #define FLOWLEN (flowList.count()-1) 3441 const char *textNodeLink;
3442 const char *yesNodeLink;
3443 const char *noNodeLink;
3447 const char* decisionNode;
3448 const char* varNode;
3449 const char *startEndNode;
3450 const char* textNode;
3470 if (q.
length()<=80)
return;
3529 if (flo->
type & COMMENT_NO)
3554 else if (flo->
type & COMMENT_NO)
3560 printf(
"\n NO: %s[%d,%d]",t.
data(),flo->
stamp,flo->
id);
3570 printNode(flowList.at(j));
3579 for (
uint j=0;j<flowList.count();j++)
3582 if (flo->
type&TEXT_NO)
3584 text+=flo->
text+
'\n';
3603 for (
uint j=0;j<flowList.count()-1;j++)
3607 if ( (kind &
IFF) || (flo->
type & ELSE_NO))
3614 flowList.insert(j+1,fNew);
3683 for (
uint j=0;j < size-1 ;j++)
3686 if (fll->
type & COMMENT_NO)
3689 if (to->
type & COMMENT_NO)
3701 for (
uint j=0;j <flowList.count() ;j++)
3705 if (fll->
type & BEGIN_NO)
3711 if (fll->
type & COMMENT_NO)
3721 if (j>0 && flowList.at(j-1)->line==fll->
line)
3722 to=flowList.at(j-1);
3724 to=flowList.at(j+1);
3726 t << getNodeName(fll->
id);
3727 t <<
"[shape=none, label=<\n";
3728 t <<
"<TABLE BORDER=\"0\" CELLBORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"2\" >\n ";
3729 t <<
"<TR><TD BGCOLOR=\"";
3734 t <<
" </TD></TR></TABLE>>];";
3735 writeEdge(t,fll->
id,to->
id,2);
3740 size=flowList.count();
3744 if (fll->
type & (COMMENT_NO | BEGIN_NO))
3749 if ((fll->
type & COMMENT_NO) && diff > 1)
3750 flowList.at(j+1)->label=fll->
label;
3771 case '<': t <<
"<";
break;
3772 case '>': t <<
">";
break;
3773 case '&': t <<
"&";
break;
3774 case '\'': t <<
"'";
break;
3775 case '"': t <<
""";
break;
3776 case '\n': t <<
"<BR ALIGN=\"LEFT\"/>";
break;
3777 default: t <<
c;
break;
3801 if (typ & (ELSE_NO | ELSIF_NO))
3806 if (typ & (START_NO | END_NO | VARIABLE_NO))
3827 typeString=typeString.
replace(reg,
"\n");
3832 expression=expression.
replace(reg1,
"\\\"");
3839 if (type & (START_NO | VARIABLE_NO))
3841 flowList.prepend(fl);
3845 flowList.append(fl);
3862 case START_NO: t=
":"+text+
"|";
break;
3863 case IF_NO : t=
"\nif ("+exp+
") then (yes)";
break;
3864 case ELSIF_NO: t=
"\nelseif ("+exp+
") then (yes)";
break;
3865 case ELSE_NO: t=
"\nelse";
break;
3866 case CASE_NO: t=
"\n:"+exp+
";";
break;
3867 case WHEN_NO: t=
"\n";
3869 t+=
"if ("+exp+
") then (yes)";
3871 case EXIT_NO:
break;
3872 case END_NO:
if (text.
contains(
" function")==0) t=
"\n:"+text+
";";
3874 case TEXT_NO: t=
"\n:"+text+
"]";
break;
3875 case ENDIF_NO: t=
"\nendif";
break;
3876 case FOR_NO: t=
"\nwhile ("+exp+
") is (yes)";
break;
3877 case WHILE_NO: t=
"\nwhile ("+exp+
") is (yes)";
break;
3878 case END_LOOP: t=
"\nendwhile";
break;
3879 case END_CASE: t=
"\nendif\n:end case;";
break;
3880 case VARIABLE_NO:t=
"\n:"+text+
";";
break;
3881 case RETURN_NO: t=
"\n:"+text+
";";
3882 if (!endL) t+=
"\nstop";
3884 case LOOP_NO: t=
"\nwhile (infinite loop)";
break;
3885 case NEXT_NO:
break;
3886 case EMPTY_NO:
break;
3887 case COMMENT_NO: t=
"\n note left \n "+flo->
label+
"\nend note \n";
break;
3888 case BEGIN_NO: t=
"\n:begin;";
break;
3889 default: assert(
false);
break;
3896 int caseCounter = 0;
3897 int whenCounter = 0;
3906 if (flo->
type==CASE_NO)
3912 if (flo->
type==END_CASE)
3917 bool ca = (caseCounter>0 && whenCounter==0);
3919 qcs+=printPlantUmlNode(flo,ca,endList);
3921 if (flo->
type==WHEN_NO)
3940 static QRegExp exp (
"[^][a-z_A-Z0-9]");
3948 if (qcs.
find(exp,0)>=0)
3963 case IF_NO:
return "if ";
3964 case ELSIF_NO:
return "elsif ";
3965 case ELSE_NO:
return "else ";
3966 case CASE_NO:
return "case ";
3967 case WHEN_NO:
return "when ";
3968 case EXIT_NO:
return "exit ";
3969 case END_NO:
return "end ";
3970 case TEXT_NO:
return "text ";
3971 case START_NO:
return "start ";
3972 case ENDIF_NO:
return "endif ";
3973 case FOR_NO:
return "for ";
3974 case WHILE_NO:
return "while ";
3975 case END_LOOP:
return "end_loop ";
3976 case END_CASE:
return "end_case ";
3977 case VARIABLE_NO:
return "variable_decl ";
3978 case RETURN_NO:
return "return ";
3979 case LOOP_NO:
return "infinite loop ";
3980 case NEXT_NO:
return "next ";
3981 case COMMENT_NO:
return "comment ";
3982 case EMPTY_NO:
return "empty ";
3983 case BEGIN_NO:
return "<begin> ";
3984 default:
return "--failure--";
4000 ov+=
"/flow_design.dot";
4006 err(
"could not create dot file");
4012 t <<
" digraph G { \n";
4013 t <<
"rankdir=TB \n";
4014 t <<
"concentrate=true\n";
4015 t <<
"stylesheet=\"doxygen.css\"\n";
4034 err(
"Cannot open file %s for writing\n",fileName.
data());
4055 buildCommentNodes(t);
4088 t<<getNodeName(fl->
id).data();
4106 t <<
" [shape=diamond,style=filled,color=\"";
4108 t <<
"\",label=\" ";
4110 if (exit) kl=fl->
text+
" ";
4127 t <<
" [shape=ellipse ,label=\""+val+
"\"]\n";
4132 t <<
"[shape=box , style=rounded label=<\n";
4133 t <<
"<TABLE BORDER=\"0\" CELLBORDER=\"0\" CELLSPACING=\"0\" CELLPADDING=\"0\" >\n ";
4134 t <<
"<TR><TD BGCOLOR=\"";
4138 t <<
" </TD></TR></TABLE>>];";
4153 if (z==(
int)q.
length()-1)
4157 t <<
"[shape=none margin=0.1, label=<\n";
4158 t <<
"<TABLE BORDER=\"0\" CELLBORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"2\" >\n ";
4161 t <<
"<TR><TD BGCOLOR=\"" <<
flowCol.varNode <<
"\" > ";
4165 t <<
"<TR><TD BGCOLOR=\"" <<
flowCol.textNode <<
"\" > ";
4168 t <<
" </TD></TR></TABLE>>];";
4179 QCString s1(getNodeName(fl_from->
id).data());
4188 writeEdge(t,fl_from->
id,fl_to->
id,i,b,c);
4211 t <<
"edge [color=\""+col+
"\",label=\""+label+
"\"]\n";
4212 t << getNodeName(fl_from).data();
4213 if (bFrom) t <<
":s";
4215 t << getNodeName(fl_to).data();
4226 if (index==0)
return;
4230 prev.
fill(
' ',len+1);
4234 for (;(arg=ali.
current());++ali)
4237 attl+=arg->
name+
" ";
4248 if (--index) attl+=
",\n";
else attl+=
"\n";
4259 for (
uint j=index+1;j<flowList.count();j++)
4262 if (flo->
stamp==stamp)
4266 if (flo->
type&END_LOOP)
4271 return flowList.count()-1;
4276 for (
uint j=index;j>0;j--)
4281 if (flo->
stamp==stamp && endif)
4287 if (flo->
stamp<stamp)
4294 return flowList.count()-1;
4299 for (
uint j=index;j>0;j--)
4307 err(
"could not find label: ",label.
data());
4313 for (
uint j=index+1;j<flowList.count();j++)
4316 if (flo->
type==type && flo->
stamp==stamp)
4326 for (
uint j=index+1;j<flowList.count();j++)
4335 if (kind & ENDIF_NO)
4337 if (s<stamp && stamp>0)
4343 if (kind & (ELSE_NO | ELSIF_NO))
4345 if (s<stamp && stamp>0)
4349 j=findNode(j,stamp,ENDIF_NO);
4354 if (s<stamp && stamp>0)
4358 return findNode(j,stamp-1,END_CASE);
4367 int stamp=fl->
stamp;
4368 uint start = index+1;
4369 int endifNode = findNode(start,stamp,ENDIF_NO);
4370 int elseifNode = findNode(start,stamp,ELSIF_NO);
4371 int elseNode = findNode(start,stamp,ELSE_NO);
4373 assert(endifNode>-1);
4375 if (elseifNode>0 && elseifNode<endifNode)
4380 if (elseNode>0 && elseNode<endifNode)
4385 stamp=flowList.at(endifNode)->stamp;
4386 return getNextNode(endifNode,stamp);
4395 writeEdge(t,flowList.at(0),flowList.at(1),2);
4401 int stamp=fll->
stamp;
4409 writeEdge(t,fll,flowList.at(j+1),0);
4410 int z=getNextIfLink(fll,j);
4412 writeEdge(t,fll,flowList.at(z),1);
4414 else if (kind & LOOP_NO)
4416 writeEdge(t,fll,flowList.at(j+1),2);
4419 else if (kind & (CASE_NO | FOR_NO | WHILE_NO))
4423 writeEdge(t,fll,flowList.at(j+1),2);
4428 writeEdge(t,fll,flowList.at(j+1),0);
4432 int z=findNode(j+1,fll->
stamp,kind);
4433 z=getNextNode(z,flowList.at(z)->stamp);
4436 writeEdge(t,fll,flowList.at(z),1);
4439 else if (kind & (TEXT_NO | VARIABLE_NO))
4441 int z=getNextNode(j,stamp);
4442 writeEdge(t,fll,flowList.at(z),2);
4444 else if (kind & WHEN_NO)
4449 writeEdge(t,fll,flowList.at(j+1),2);
4454 writeEdge(t,fll,flowList.at(j+1),0);
4455 int u=findNode(j,stamp,WHEN_NO);
4456 int v=findNode(j,stamp-1,END_CASE);
4460 writeEdge(t,fll,flowList.at(u),1);
4464 writeEdge(t,fll,flowList.at(v),1);
4467 else if (kind & END_CASE)
4470 writeEdge(t,fll,flowList.at(z),2);
4472 else if (kind & END_LOOP)
4474 int z=findPrevLoop(j,fll->
stamp,
true);
4475 writeEdge(t,fll,flowList.at(z),2);
4477 else if (kind & RETURN_NO)
4479 writeEdge(t,fll,FlowChart::flowList.at(size-1),2);
4481 else if (kind & (EXIT_NO | NEXT_NO))
4484 bool b = kind==NEXT_NO;
4487 writeEdge(t,fll,flowList.at(j+1),1);
4491 z=findLabel(j,fll->
label);
4494 writeEdge(t,fll,flowList.at(z),0);
4498 z=findNode(z,flowList.at(z)->stamp,END_LOOP);
4499 z=getNextNode(z,flowList.at(z)->stamp);
4500 writeEdge(t,fll,flowList.at(z),0);
4508 z=findPrevLoop(j,fll->
stamp);
4509 writeEdge(t,fll,flowList.at(z),0);
4514 z =findNextLoop(j,fll->
stamp-1);
4516 z=getNextNode(z,flowList.at(z)->stamp);
4518 writeEdge(t,fll,flowList.at(z),0);
4525 const char *scopeName,
4528 bool isExampleBlock,
4529 const char *exampleName,
4533 bool inlineFragment,
4535 bool showLineNumbers,
void endMemberGroupDocs()
QCString convertToXML(const char *s)
void startMemberItem(const char *anchor, int i1, const char *id=0)
void startParameterType(bool first, const char *key)
end
while True: pbar.update(maxval-len(onlies[E][S])) #print iS, "/", len(onlies[E][S]) found = False for...
QCString symbolName() const
QCString includeName
include name (3 arg of \class)
static bool isSubType(const MemberDef *mdef)
ParserInterface * getParser(const char *extension)
void setType(const char *t)
static QCString getIndexWord(const char *, int index)
FileDef * getFileDef() const
void finishTranslationUnit()
This class represents an function or template argument list.
MemberGroupList * getMemberGroupList() const
QCString stripWhiteSpace() const
uint64 spec
class/member specifiers
void addChild(LayoutNavEntry *e)
static bool isConfig(const MemberDef *mdef)
static void writeFormatString(const QCString &, OutputList &ol, const MemberDef *)
static bool isNumber(const QCString &s)
BaseClassList * subClasses() const
static bool isVType(const MemberDef *mdef)
Iterator append(const T &x)
QList< VhdlConfNode > & getVhdlConfiguration()
static QCString trVhdlType(uint64 type, bool sing=true)
QCString getReference() const
void setTagInfo(TagInfo *i)
The QRegExp class provides pattern matching using regular expressions or wildcards.
static void deleteAllChars(QCString &s, char c)
static bool isConstraint(const MemberDef *mdef)
static void writeVHDLDeclaration(MemberDef *mdef, OutputList &ol, ClassDef *cd, NamespaceDef *nd, FileDef *fd, GroupDef *gd, bool inGroup)
static void alignCommentNode(FTextStream &t, QCString com)
static bool isFile(const MemberDef *mdef)
static void writeProcessProto(OutputList &ol, const ArgumentList *al, const MemberDef *)
void setBodyDef(FileDef *fd)
static QDict< QCString > g_vhdlKeyDict0(17, FALSE)
static QDict< QCString > g_vhdlKeyDict1(17, FALSE)
int contains(char c, bool cs=TRUE) const
static bool isCompInst(const MemberDef *mdef)
void append(const type *d)
static void writeTable(QList< MemberDef > *port, FTextStream &t)
Abstract interface for programming language parsers.
virtual void setName(const char *name)
static QCString htmlFileExtension
static bool isLibrary(const MemberDef *mdef)
static QCString trFunctionAndProc()
void writeString(const char *text)
static void buildCommentNodes(FTextStream &t)
static int findNode(int index, int stamp, int type)
static void writeFlowLinks(FTextStream &t)
bool generateDoc(const char *fileName, int startLine, Definition *ctx, MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const char *exampleName=0, bool singleLine=FALSE, bool linkFromIndex=FALSE)
static int getNextIfLink(const FlowChart *, uint)
static QCString convertNameToFileName()
static void codify(FTextStream &t, const char *str)
static bool isSignals(const MemberDef *mdef)
void setLanguage(SrcLangExt lang)
static bool membersHaveSpecificType(MemberList *ml, uint64 type)
static QCString parseForBinding(QCString &entity, QCString &arch)
static QDict< QCString > g_vhdlKeyDict2(17, FALSE)
static void writeVhdlDotLink(FTextStream &t, const QCString &a, const QCString &b, const QCString &style)
static void formatString(const QCString &, OutputList &ol, const MemberDef *)
void disableAllBut(OutputGenerator::OutputType o)
void alignText(QCString &q)
static MemberDef * findMemFlow(const MemberDef *mdef)
void lineBreak(const char *style=0)
static void moveToPrevLevel()
static void endDot(FTextStream &t)
int briefLine
line number at which the brief desc. was found
QList< Entry > & getVhdlInstList()
static bool writeClassType(ClassDef *&, OutputList &ol, QCString &cname)
static bool isEntity(const MemberDef *mdef)
static QCString trDesignUnitList()
static void startFonts(const QCString &q, const char *keyword, OutputList &ol)
static QCString formatBriefNote(const QCString &brief, ClassDef *cd)
static void endDot(FTextStream &t)
void parseInput(const char *fileName, const char *fileBuf, Entry *root, bool sameTranslationUnit, QStrList &filesInSameTranslationUnit)
int docLine
line number at which the documentation was found
static FileNameList * inputNameList
static QCString convertArgumentListToString(const ArgumentList *al, bool f)
static struct @11 flowCol
static QCString trDesignUnits()
static bool isComponent(const MemberDef *mdef)
void addSubEntry(Entry *e)
static void writeEdge(FTextStream &t, int fl_from, int fl_to, int i, bool bFrom=FALSE, bool bTo=FALSE)
static const MemberDef * getFlowMember()
void startMemberDescription(const char *anchor, const char *inheritId=0)
QCString writePlantUMLSource(const QCString &outDir, const QCString &fileName, const QCString &content)
static QCString className
QCString left(uint len) const
bool stripPrefix(const char *prefix)
void setArgsString(const char *as)
static QCString getClassName(const ClassDef *)
bool isEnabled(OutputGenerator::OutputType o)
void endMemberGroup(bool last)
static QCString trDesignUnitIndex()
static QCString parseForConfig(QCString &entity, QCString &arch)
Simplified and optimized version of QTextStream.
FlowChart(int typ, const char *t, const char *ex, const char *label=0)
int find(char c, int index=0, bool cs=TRUE) const
static void writeUCFLink(const MemberDef *mdef, OutputList &ol)
static bool isMisc(const MemberDef *mdef)
virtual QCString getOutputFileBase() const =0
static bool isPort(const MemberDef *mdef)
void append(const char *key, const T *d)
static constexpr double mg
static ClassDef * getPackageName(const QCString &name)
QCString getReference() const
int findRev(char c, int index=-1, bool cs=TRUE) const
static bool isAttribute(const MemberDef *mdef)
bool isBaseClass(ClassDef *bcd, bool followInstances, int level=0)
static bool isRecord(const MemberDef *mdef)
static QCString getRecordNumber()
void startTextLink(const char *file, const char *anchor)
void startParameterName(bool one)
static ClassDef * getClass(const char *name)
static bool isProcedure(const MemberDef *mdef)
void startTranslationUnit(const char *)
static void resetCodeVhdlParserState()
static QCString getNodeName(int n)
bool parseText(const QCString &textStr)
void endParameterName(bool last, bool one, bool bracket)
Base class for the layout of a navigation item at the top of the HTML pages.
static QCString printPlantUmlNode(const FlowChart *flo, bool, bool)
Protection protection() const
QCString getDefFileName() const
void parseVhdlCode(CodeOutputInterface &od, const char *className, const QCString &s, bool, const char *exName, FileDef *fd, int startLine, int endLine, bool inlineFragment, MemberDef *memberDef, bool, Definition *searchCtx, bool)
int startColumn
start column of entry in the source
static QCString trDesignUnitHierarchy()
static void startDot(FTextStream &t)
static QDict< QCString > g_vhdlKeyDict3(17, FALSE)
bool insert(uint i, const type *d)
void writeDocAnchorsToTagFile(FTextStream &)
void warnIfUndocumented()
void setAutoDelete(bool val)
static void alignFuncProc(QCString &q, const ArgumentList *al, bool isFunc)
bool isBriefSectionVisible() const
static const MemberDef * flowMember
FileDef * getFileDef() const
decltype(auto) constexpr size(T &&obj)
ADL-aware version of std::size.
static ParserManager * parserManager
ClassDef * templateMaster() const
static bool isGeneric(const MemberDef *mdef)
This class contains the information about the argument of a function or template. ...
const char * typeString() const
static void startTable(FTextStream &t, const QCString &className)
QCString className() const
static SearchIndexIntf * searchIndex
static void addBaseClass(ClassDef *cd, ClassDef *ent)
bool contains(const Key &k) const
static void setFlowMember(const MemberDef *flowMember)
Q_EXPORT uint qstrlen(const char *str)
void insertMember(MemberDef *)
const QCString & name() const
static int compareString(const QCString &s1, const QCString &s2)
bool isDetailedSectionLinkable() const
int qstricmp(const char *str1, const char *str2)
static QCString splitString(QCString &str, char c)
static void initUCF(Entry *root, const char *type, QCString &qcs, int line, QCString &fileName, QCString &brief)
Iterator insert(const Key &key, const T &value)
void startFontClass(const char *c)
QCString brief
brief description (doc block)
QCString parseCommentAsText(const Definition *scope, const MemberDef *md, const QCString &doc, const QCString &fileName, int lineNr)
static void findAllArchitectures(QList< QCString > &ql, const ClassDef *cd)
void pushGeneratorState()
void setDocumentation(const char *d, const char *docFile, int docLine, bool stripWhiteSpace=TRUE)
static void writeClassToDot(FTextStream &t, ClassDef *cd)
QCString briefDescription(bool abbr=FALSE) const
static bool isArchitecture(const MemberDef *mdef)
static void writeVhdlLink(const ClassDef *cdd, OutputList &ol, QCString &type, QCString &name, QCString &beh)
static int getNextNode(int, int)
QCString right(uint len) const
static void writeVhdlDeclarations(MemberList *, OutputList &, GroupDef *, ClassDef *, FileDef *, NamespaceDef *)
int toInt(bool *ok=0) const
virtual void addWord(const char *word, bool hiPriority)=0
static QCString trDesignUnitMembers()
static bool writeVHDLTypeDocumentation(const MemberDef *mdef, const Definition *d, OutputList &ol)
static void writeOverview()
static int findNextLoop(int j, int stamp)
static void writeFunctionProto(OutputList &ol, const ArgumentList *al, const MemberDef *)
QCString exception
throw specification
static void delFlowList()
int startLine
start line of entry in the source
QCString & prepend(const char *s)
void disable(OutputGenerator::OutputType o)
QCString args
member argument string
QCString write
property write accessor
static void writeStringLink(const MemberDef *mdef, QCString mem, OutputList &ol)
static bool isPackage(const MemberDef *mdef)
static QCString convertFileNameToClassName(QCString name)
A bunch of utility functions.
static bool isAlias(const MemberDef *mdef)
void startParameterList(bool openBracket)
const char * data() const
static void addInstance(ClassDef *entity, ClassDef *arch, ClassDef *inst, Entry *cur, ClassDef *archBind=NULL)
#define Config_getString(val)
void startMemberGroupDocs()
Iterator find(const Key &k)
void enable(OutputGenerator::OutputType o)
static int findPrevLoop(int j, int stamp, bool endif=FALSE)
#define Config_getBool(val)
ClassDef * getClassDef() const
static int max(int a, int b)
static bool isVhdlFunction(const MemberDef *mdef)
QCString briefFile() const
QCString getDotImageExtension(void)
static QCString trDesignUnitListDescription()
static void parseUCF(const char *input, Entry *entity, QCString f, bool vendor)
void startMemberSubtitle()
static void prepareComment(QCString &)
void generatePlantUMLOutput(const char *baseName, const char *outDir, PlantUMLOutputFormat format)
static QCString * findKeyWord(const QCString &word)
static void addFlowChart(int type, const char *text, const char *exp, const char *label=NULL)
uint64 getMemberSpecifiers() const
#define theTranslator_vhdlType
static void printNode(const FlowChart *n)
static QList< MemberDef > mdList
void err(const char *fmt,...)
static const char * getNodeType(int c)
QTextStream & dec(QTextStream &s)
uint contains(const T &x) const
void startDoxyAnchor(const char *fName, const char *manName, const char *anchor, const char *name, const char *args)
QCString absFilePath() const
virtual QCString briefDescription(bool abbreviate=FALSE) const
static void writeVHDLDeclarations(MemberList *ml, OutputList &ol, ClassDef *cd, NamespaceDef *nd, FileDef *fd, GroupDef *gd, const char *title, const char *subtitle, bool showEnumValues, int type)
static void startDot(FTextStream &t)
QCString mid(uint index, uint len=0xffffffff) const
static QCString getClassTitle(const ClassDef *)
int match(const QCString &str, int index=0, int *len=0, bool indexIsStart=TRUE) const
The QFile class is an I/O device that operates on files.
void setMemberSpecifiers(uint64 s)
static void endTabel(FTextStream &t)
void insertBaseClass(ClassDef *, const char *name, Protection p, Specifier s, const char *t=0)
QCString getOutputFileBase() const
QCString doc
documentation block (partly parsed)
QCString & setNum(short n)
static void writeColumn(FTextStream &t, MemberDef *md, bool start)
virtual Definition * getOuterScope() const
QCString documentation() const
int getEndBodyLine() const
static QCString getProtectionName(int prot)
static ClassDef * findVhdlClass(const char *className)
static void writeFlowChart()
static QList< ClassDef > qli
static bool isConstant(const MemberDef *mdef)
static QInternalList< QTextCodec > * all
void insertSubClass(ClassDef *, Protection p, Specifier s, const char *t=0)
bool readCodeFragment(const char *fileName, int &startLine, int &endLine, QCString &result)
ArgumentList * argumentList() const
static QList< MemberDef > * getPorts(ClassDef *cd)
QCString qualifiedName() const
int getStartBodyLine() const
static bool isSignal(const MemberDef *mdef)
static void writeLink(const MemberDef *mdef, OutputList &ol)
static void setGlobalType(MemberList *ml)
void endDoxyAnchor(const char *fn, const char *anchor)
static MemberDef * findMemberDef(ClassDef *cd, const QCString &key, MemberListType type)
static bool isProcess(const MemberDef *mdef)
static void writeTagFile(MemberDef *mdef, FTextStream &tagFile)
const char * excpString() const
static void writeRecUnitDocu(const MemberDef *md, OutputList &ol, QCString largs)
static bool isSubClass(ClassDef *cd, ClassDef *scd, bool followInstances, int level)
static bool isGroup(const MemberDef *mdef)
static void writeInlineClassLink(const ClassDef *, OutputList &ol)
static bool deleteCharRev(QCString &s, char c)
QCString fileName() const
void line(double t, double *p, double &x, double &y, double &z)
static void printFlowTree()
static void writePlainVHDLDeclarations(MemberList *ml, OutputList &ol, ClassDef *cd, NamespaceDef *nd, FileDef *fd, GroupDef *gd, int specifier)
QCString convertNameToFile(const char *name, bool allowDots, bool allowUnderscore)
bool fill(char c, int len=-1)
QCString fileName
file this entry was extracted from
static bool isPackageBody(const MemberDef *mdef)
virtual void setCurrentDoc(Definition *ctx, const char *anchor, bool isSourceFile)=0
QCString getOutputFileBase() const
virtual QCString trDesignOverview()=0
static bool findConstraintFile(LayoutNavEntry *lne)
static bool isUnit(const MemberDef *mdef)
static constexpr double mm
void endMemberDescription()
ClassDef * getClassDefOfAnonymousType()
Iterator remove(Iterator it)
static MemberDef * findMember(const QCString &className, const QCString &memName)
Translator * theTranslator
static void computeVhdlComponentRelations()
QCString docFile
file in which the documentation was found
static void findAllPackages(ClassDef *)
static ClassDef * findArchitecture(const ClassDef *cd)
static void parseFuncProto(const char *text, QList< Argument > &, QCString &name, QCString &ret, bool doc=false)
decltype(auto) constexpr begin(T &&obj)
ADL-aware version of std::begin.
static QCString getProcessNumber()
static void writeVhdlEntityToolTip(FTextStream &t, ClassDef *cd)
static int findLabel(int j, QCString &)
QCString briefDescriptionAsTooltip() const
void parseCode(CodeOutputInterface &codeOutIntf, const char *scopeName, const QCString &input, SrcLangExt lang, bool isExampleBlock, const char *exampleName=0, FileDef *fileDef=0, int startLine=-1, int endLine=-1, bool inlineFragment=FALSE, MemberDef *memberDef=0, bool showLineNumbers=TRUE, Definition *searchCtx=0, bool collectXRefs=TRUE)
const char * argsString() const
static QList< FlowChart > flowList
static void writeSource(MemberDef *mdef, OutputList &ol, QCString &cname)
cet::registry_via_id< success_t, val > reg
void startMemberHeader(const char *anchor)
static bool isVariable(const MemberDef *mdef)
static void createFlowChart(const MemberDef *)
void docify(const char *s)
void insertMemberAlign(bool templ=FALSE)
unsigned long long uint64
Q_EXPORT int qstrcmp(const char *str1, const char *str2)
VHDL parser using state-based lexical scanning.
static MemberDef * findFunction(const QList< Argument > &ql, const QCString &name, const QCString &package, bool type)
uint contains(const type *d) const
SrcLangExt lang
programming language in which this entry was found
T * find(const char *key)
static void writeProcedureProto(OutputList &ol, const ArgumentList *al, const MemberDef *)
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
static QStringList split(const QString &sep, const QString &str, bool allowEmptyEntries=FALSE)
LayoutNavEntry * parent() const
void setAutoDelete(bool enable)
QCString & remove(uint index, uint len)
static void writeShape(FTextStream &t, const FlowChart *fl)
static ClassSDict * classSDict
virtual void parseCode(CodeOutputInterface &codeOutIntf, const char *scopeName, const QCString &input, SrcLangExt lang, bool isExampleBlock, const char *exampleName=0, FileDef *fileDef=0, int startLine=-1, int endLine=-1, bool inlineFragment=FALSE, MemberDef *memberDef=0, bool showLineNumbers=TRUE, Definition *searchCtx=0, bool collectXRefs=TRUE)=0
static void codify(FTextStream &t, const char *str)
void setBriefDescription(const char *b, const char *briefFile, int briefLine)
MemberList * getMemberList(MemberListType lt)
QCString & replace(uint index, uint len, const char *s)
static void printUmlTree()
void endMemberGroupHeader()
QCString localName() const
const char * qPrint(const char *s)
union ptb::content::word::word word
static QMap< QCString, MemberDef * > varMap
QCString simplifyWhiteSpace() const
Portable versions of functions that are platform dependent.
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
static bool writeFuncProcDocu(const MemberDef *mdef, OutputList &ol, const ArgumentList *al, bool type=false)
static void assignBinding(VhdlConfNode *conf)
QTextStream & endl(QTextStream &s)
QCString & append(const char *s)
BaseClassList * baseClasses() const
static void writeRecorUnit(QCString &largs, OutputList &ol, const MemberDef *mdef)
static void colTextNodes()
MemberDef(const char *defFileName, int defLine, int defColumn, const char *type, const char *name, const char *args, const char *excp, Protection prot, Specifier virt, bool stat, Relationship related, MemberType t, const ArgumentList *tal, const ArgumentList *al)
int section
entry type (see Sections);
void startMemberGroupHeader(bool b)
int portable_system(const char *command, const char *args, bool commandHasConsole)
int bodyLine
line number of the definition in the source
QCString briefFile
file in which the brief desc. was found
static QMap< ClassDef *, QList< ClassDef > > packages
void setBodySegment(int bls, int ble)
static QCString trTypeString(uint64 type)