Doxygen
Loading...
Searching...
No Matches
vhdldocgen.cpp File Reference
#include "vhdldocgen.h"
#include <algorithm>
#include <map>
#include <mutex>
#include <unordered_set>
#include "arguments.h"
#include "classlist.h"
#include "commentscan.h"
#include "config.h"
#include "definition.h"
#include "doxygen.h"
#include "dstring.h"
#include "filename.h"
#include "groupdef.h"
#include "language.h"
#include "memberdef.h"
#include "membergroup.h"
#include "memberlist.h"
#include "membername.h"
#include "message.h"
#include "moduledef.h"
#include "namespacedef.h"
#include "outputlist.h"
#include "parserintf.h"
#include "plantuml.h"
#include "portable.h"
#include "regex.h"
#include "stringutil.h"
#include "textstream.h"
#include "util.h"
#include "vhdljjparser.h"
Include dependency graph for vhdldocgen.cpp:

Go to the source code of this file.

Classes

struct  [struct].flowCol

Macros

#define theTranslator_vhdlType   theTranslator->trVhdlType
#define STARTL
#define DECLN
#define STARTFIN   (FlowChart::START_NO | FlowChart::END_NO)
#define LOOP
#define ENDCL   (FlowChart::END_CASE | FlowChart::END_LOOP)
#define EEND   (FlowChart::ENDIF_NO | FlowChart::ELSE_NO )
#define IFF   (FlowChart::ELSIF_NO | FlowChart::IF_NO)
#define EXITNEXT   (FlowChart::EXIT_NO | FlowChart::NEXT_NO )
#define EMPTY   (EEND | FlowChart::ELSIF_NO)
#define EE   (FlowChart::ELSE_NO | FlowChart::ELSIF_NO)
#define EMPTNODE   (ENDCL | EEND | FlowChart::ELSIF_NO)
#define FLOWLEN   (flowList.size()-1)

Functions

static void initUCF (Entry *root, const DString &type, DString &qcs, int line, const DString &fileName, DString &brief)
static void writeUCFLink (const MemberDef *mdef, OutputList &ol)
static void addInstance (ClassDefMutable *entity, ClassDefMutable *arch, ClassDefMutable *inst, const std::shared_ptr< Entry > &cur)
static void writeLink (const MemberDef *mdef, OutputList &ol)
static void startFonts (const DString &q, const char *keyword, OutputList &ol)
static DString splitString (DString &str, char c)
static int compareString (const DString &s1, const DString &s2)
static VhdlSpecifier getSpecifierTypeFromClass (const ClassDef *cd)
static bool membersHaveSpecificType (const MemberList *ml, VhdlSpecifier type)
static const MemberDeffindMemFlow (const MemberDef *mdef)
static void alignText (DString &q)

Variables

static const MemberDefflowMember =nullptr
static const std::unordered_set< std::string > g_vhdlKeyWordSet0
static const std::unordered_set< std::string > g_vhdlKeyWordSet1
static const std::unordered_set< std::string > g_vhdlKeyWordSet2
static const std::unordered_set< std::string > g_vhdlKeyWordSet3
static std::recursive_mutex g_vhdlMutex
static std::map< std::string, const MemberDef * > g_varMap
static std::vector< ClassDef * > g_classList
static std::map< ClassDef *, std::vector< ClassDef * > > g_packages
static int recordCounter =0
static std::vector< const MemberDef * > mdList
static int ifcounter =0
static int nodeCounter =0
static struct  flowCol
std::vector< FlowChartflowList

Macro Definition Documentation

◆ DECLN

◆ EE

Definition at line 2501 of file vhdldocgen.cpp.

◆ EEND

#define EEND   (FlowChart::ENDIF_NO | FlowChart::ELSE_NO )

Definition at line 2497 of file vhdldocgen.cpp.

Referenced by FlowChart::writeFlowLinks(), and FlowChart::writeShape().

◆ EMPTNODE

#define EMPTNODE   (ENDCL | EEND | FlowChart::ELSIF_NO)

Definition at line 2502 of file vhdldocgen.cpp.

Referenced by FlowChart::printNode().

◆ EMPTY

#define EMPTY   (EEND | FlowChart::ELSIF_NO)

Definition at line 2500 of file vhdldocgen.cpp.

Referenced by FlowChart::colTextNodes().

◆ ENDCL

#define ENDCL   (FlowChart::END_CASE | FlowChart::END_LOOP)

Definition at line 2496 of file vhdldocgen.cpp.

Referenced by FlowChart::writeShape().

◆ EXITNEXT

#define EXITNEXT   (FlowChart::EXIT_NO | FlowChart::NEXT_NO )

Definition at line 2499 of file vhdldocgen.cpp.

Referenced by FlowChart::writeShape().

◆ FLOWLEN

#define FLOWLEN   (flowList.size()-1)

◆ IFF

◆ LOOP

◆ STARTFIN

#define STARTFIN   (FlowChart::START_NO | FlowChart::END_NO)

Definition at line 2493 of file vhdldocgen.cpp.

Referenced by FlowChart::writeShape().

◆ STARTL

◆ theTranslator_vhdlType

#define theTranslator_vhdlType   theTranslator->trVhdlType

Function Documentation

◆ addInstance()

void addInstance ( ClassDefMutable * entity,
ClassDefMutable * arch,
ClassDefMutable * inst,
const std::shared_ptr< Entry > & cur )
static

Definition at line 2177 of file vhdldocgen.cpp.

2179{
2180
2181 DString bName,n1;
2182 if (ar==nullptr) return;
2183
2184 if (classEntity==nullptr)
2185 {
2186 //add component inst
2187 n1=cur->type;
2188 goto ferr;
2189 }
2190
2191 if (classEntity==cd) return;
2192
2193 bName=classEntity->name();
2194 // fprintf(stderr,"\naddInstance %s to %s %s %s\n",qPrint( classEntity->name()),qPrint(cd->name()),qPrint(ar->name()),cur->name);
2195 n1=classEntity->name();
2196
2197 if (!cd->isBaseClass(classEntity, true))
2198 {
2199 cd->insertBaseClass(classEntity,n1,Protection::Public,Specifier::Normal,DString());
2200 }
2201 else
2202 {
2203 VhdlDocGen::addBaseClass(cd,classEntity);
2204 }
2205
2206 if (!VhdlDocGen::isSubClass(classEntity,cd,true,0))
2207 {
2208 classEntity->insertSubClass(cd,Protection::Public,Specifier::Normal,DString());
2209 classEntity->setLanguage(SrcLangExt::VHDL);
2210 }
2211
2212ferr:
2213 DString uu=cur->name;
2214 auto md = createMemberDef(
2215 ar->getDefFileName(), cur->startLine,cur->startColumn,
2216 n1,uu,uu, DString(),
2217 Protection::Public,
2218 Specifier::Normal,
2219 cur->isStatic,
2220 Relationship::Member,
2221 MemberType::Variable,
2222 ArgumentList(),
2223 ArgumentList(),
2224 "");
2225 auto mmd = toMemberDefMutable(md.get());
2226
2227 if (!ar->getOutputFileBase().empty())
2228 {
2229 TagInfo tg;
2230 tg.anchor = nullptr;
2231 tg.fileName = ar->getOutputFileBase();
2232 tg.tagName = nullptr;
2233 mmd->setTagInfo(&tg);
2234 }
2235
2236 //fprintf(stderr,"\n%s%s%s\n",qPrint(md->name()),qPrint(cur->brief),qPrint(cur->doc));
2237
2238 mmd->setLanguage(SrcLangExt::VHDL);
2239 mmd->setVhdlSpecifiers(VhdlSpecifier::INSTANTIATION);
2240 mmd->setBriefDescription(cur->brief,cur->briefFile,cur->briefLine);
2241 mmd->setBodySegment(cur->startLine,cur->startLine,-1) ;
2242 mmd->setDocumentation(cur->doc,cur->docFile,cur->docLine);
2243 FileDef *fd=ar->getFileDef();
2244 mmd->setBodyDef(fd);
2245 ar->insertMember(md.get());
2247 mn->push_back(std::move(md));
2248
2249}
This class represents an function or template argument list.
Definition arguments.h:66
A String class for use with Doxygen wrapping std::string and adding some additional functionality off...
Definition dstring.h:84
virtual void setBodyDef(const FileDef *fd)=0
static MemberNameLinkedMap * functionNameLinkedMap
Definition doxygen.h:105
A model of a file symbol.
Definition filedef.h:97
T * add(const char *k, Args &&... args)
Definition linkedmap.h:90
void push_back(Ptr &&p)
Definition membername.h:52
This struct is used to capture the tag file information for an Entry.
Definition entry.h:101
DString tagName
Definition entry.h:103
DString anchor
Definition entry.h:105
DString fileName
Definition entry.h:104
static void addBaseClass(ClassDef *cd, ClassDef *ent)
static bool isSubClass(ClassDef *cd, ClassDef *scd, bool followInstances, int level)
std::unique_ptr< MemberDef > createMemberDef(const DString &defFileName, int defLine, size_t defColumn, const DString &type, const DString &name, const DString &args, const DString &excp, Protection prot, Specifier virt, bool stat, Relationship related, MemberType t, const ArgumentList &tal, const ArgumentList &al, const DString &metaData)
Factory method to create a new instance of a MemberDef.
MemberDefMutable * toMemberDefMutable(Definition *d)
@ INSTANTIATION
Definition types.h:791

References LinkedMap< T, Hash, KeyEqual, Map >::add(), VhdlDocGen::addBaseClass(), TagInfo::anchor, createMemberDef(), DString::empty(), TagInfo::fileName, Doxygen::functionNameLinkedMap, Definition::getDefFileName(), ClassDef::getFileDef(), Definition::getOutputFileBase(), ClassDefMutable::insertBaseClass(), ClassDefMutable::insertMember(), ClassDefMutable::insertSubClass(), INSTANTIATION, ClassDef::isBaseClass(), VhdlDocGen::isSubClass(), Definition::name(), MemberName::push_back(), DefinitionMutable::setBodyDef(), DefinitionMutable::setLanguage(), TagInfo::tagName, and toMemberDefMutable().

Referenced by VhdlDocGen::computeVhdlComponentRelations().

◆ alignText()

void alignText ( DString & q)
static

Definition at line 2538 of file vhdldocgen.cpp.

2539{
2540 if (q.length()<=80) return;
2541
2542 if (q.length()>200)
2543 {
2544 q.resize(200);
2545 }
2546
2547 q.append(" ...");
2548
2549 DString str(q);
2550 DString temp;
2551
2552 while (str.length()>80)
2553 {
2554 size_t j0 = str.rfind(' ',80);
2555 size_t j1 = str.rfind('|',80);
2556 size_t j = j0!=DString::npos && j1!=DString::npos ? std::max(j0,j1) :
2557 j0!=DString::npos ? j0 : j1;
2558 if (j==DString::npos || j==0)
2559 {
2560 temp+=str;
2561 q=temp;
2562 return;
2563 }
2564 else
2565 {
2566 DString qcs=str.left(j);
2567 temp+=qcs+"\\";
2568 temp+="n";
2569 str.remove(0,j);
2570 }
2571 }//while
2572
2573 q=temp+str;
2574// #endif
2575}
void resize(size_t newlen)
Definition dstring.h:209
DString & remove(size_t index, size_t len)
Definition dstring.h:535
static constexpr size_t npos
value used to indicate 'not found' or 'to the end of the string', matching std::string::npos
Definition dstring.h:178
DString & append(char c)
Definition dstring.h:489
DString left(size_t len) const
Definition dstring.h:306
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition dstring.h:151

References DString::append(), DString::left(), DString::length(), DString::npos, DString::remove(), DString::resize(), and DString::rfind().

Referenced by FlowChart::writeShape().

◆ compareString()

int compareString ( const DString & s1,
const DString & s2 )
static

Definition at line 109 of file vhdldocgen.cpp.

110{
111 return dstricmp(s1.stripWhiteSpace(),s2.stripWhiteSpace());
112}
DString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
Definition dstring.h:337
int dstricmp(const char *s1, const char *s2)
Definition dstring.cpp:444

References dstricmp(), and DString::stripWhiteSpace().

Referenced by VhdlDocGen::findFunction().

◆ findMemFlow()

const MemberDef * findMemFlow ( const MemberDef * mdef)
static

Definition at line 2375 of file vhdldocgen.cpp.

2376{
2377 for (const auto &md : mdList)
2378 {
2379 if (md->name()==mdef->name() && md->getStartBodyLine()==mdef->getStartBodyLine())
2380 {
2381 return md;
2382 }
2383 }
2384 return nullptr;
2385}
virtual const DString & name() const =0
virtual int getStartBodyLine() const =0
static std::vector< const MemberDef * > mdList

References Definition::getStartBodyLine(), mdList, and Definition::name().

Referenced by VhdlDocGen::createFlowChart().

◆ getSpecifierTypeFromClass()

VhdlSpecifier getSpecifierTypeFromClass ( const ClassDef * cd)
static

Definition at line 406 of file vhdldocgen.cpp.

407{
409
410 DString type;
415 else if (ii==VhdlDocGen::PACKBODYCLASS)
417 else if (ii==VhdlDocGen::PACKAGECLASS)
420}
virtual Protection protection() const =0
Return the protection level (Public,Protected,Private) in which this compound was found.
@ ARCHITECTURECLASS
Definition vhdldocgen.h:74
static VhdlClasses convert(Protection prot)
Definition vhdldocgen.h:77

References ARCHITECTURE, VhdlDocGen::ARCHITECTURECLASS, VhdlDocGen::convert(), ENTITY, VhdlDocGen::ENTITYCLASS, PACKAGE, PACKAGE_BODY, VhdlDocGen::PACKAGECLASS, VhdlDocGen::PACKBODYCLASS, ClassDef::protection(), and UNKNOWN.

Referenced by VhdlDocGen::getClassTitle(), VhdlDocGen::writeClassType(), and VhdlDocGen::writeInlineClassLink().

◆ initUCF()

void initUCF ( Entry * root,
const DString & type,
DString & qcs,
int line,
const DString & fileName,
DString & brief )
static

Definition at line 1965 of file vhdldocgen.cpp.

1967{
1968 if (qcs.empty())return;
1969 DString n;
1970
1972 qcs=qcs.stripWhiteSpace();
1973
1974 static const reg::Ex reg(R"([\s=])");
1975 size_t i = findIndex(qcs.str(),reg);
1976 if (i==std::string::npos) return;
1977 if (i==0)
1978 {
1979 n=type;
1981 }
1982 else
1983 {
1984 n=qcs.left(i);
1985 }
1986 qcs=qcs.remove(0,i+1);
1987 // qcs.prepend("|");
1988
1989 qcs.stripPrefix("=");
1990
1991 std::shared_ptr<Entry> current = std::make_shared<Entry>();
1992 current->vhdlSpec=VhdlSpecifier::UCF_CONST;
1993 current->section=EntryType::makeVariable();
1994 current->bodyLine=line;
1995 current->fileName=fileName;
1996 current->type="ucf_const";
1997 current->args+=qcs;
1998 current->lang= SrcLangExt::VHDL ;
1999
2000 // adding dummy name for constraints like VOLTAGE=5,TEMPERATURE=20 C
2001 if (n.empty())
2002 {
2003 n="dummy";
2005 }
2006
2007 current->name= n+"_";
2008 current->name.append(VhdlDocGen::getRecordNumber());
2009
2010 if (!brief.empty())
2011 {
2012 current->brief=brief;
2013 current->briefLine=line;
2014 current->briefFile=fileName;
2015 brief.clear();
2016 }
2017
2018 root->moveToSubEntryAndKeep(current);
2019}
void clear()
Definition dstring.h:214
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:148
const std::string & str() const
Definition dstring.h:645
bool stripPrefix(const DString &prefix)
Definition dstring.h:290
void moveToSubEntryAndKeep(Entry *e)
Definition entry.cpp:146
static void deleteAllChars(DString &s, char c)
static DString getRecordNumber()
Class representing a regular expression.
Definition regex.h:39
Namespace for the regular expression functions.
Definition regex.cpp:34
size_t findIndex(const StringVector &sv, const std::string &s)
find the index of a string in a vector of strings, returns std::string::npos if the string could not ...
Definition stringutil.h:167

References DString::append(), DString::clear(), VhdlDocGen::deleteAllChars(), DString::empty(), findIndex(), VhdlDocGen::getRecordNumber(), DString::left(), Entry::moveToSubEntryAndKeep(), DString::remove(), DString::str(), DString::stripPrefix(), DString::stripWhiteSpace(), and UCF_CONST.

Referenced by VhdlDocGen::parseUCF().

◆ membersHaveSpecificType()

bool membersHaveSpecificType ( const MemberList * ml,
VhdlSpecifier type )
static

Definition at line 1720 of file vhdldocgen.cpp.

1721{
1722 if (ml==nullptr) return false;
1723 for (const auto &mdd : *ml)
1724 {
1725 if (mdd->getVhdlSpecifiers()==type) //is type in class
1726 {
1727 return true;
1728 }
1729 }
1730 for (const auto &mg : ml->getMemberGroupList())
1731 {
1732 if (!mg->members().empty())
1733 {
1734 if (membersHaveSpecificType(&mg->members(),type)) return true;
1735 }
1736 }
1737 return false;
1738}
static bool membersHaveSpecificType(const MemberList *ml, VhdlSpecifier type)

References MemberList::getMemberGroupList(), and membersHaveSpecificType().

Referenced by membersHaveSpecificType(), and VhdlDocGen::writeVHDLDeclarations().

◆ splitString()

DString splitString ( DString & str,
char c )
static

Definition at line 97 of file vhdldocgen.cpp.

98{
99 DString n=str;
100 size_t i=str.find(c);
101 if (i!=DString::npos && i>0)
102 {
103 n=str.left(i);
104 str=str.remove(0,i+1);
105 }
106 return n;
107}
size_t find(char c, size_t pos=0) const
Definition dstring.h:239

References DString::find(), DString::left(), DString::npos, and DString::remove().

Referenced by writeUCFLink().

◆ startFonts()

void startFonts ( const DString & q,
const char * keyword,
OutputList & ol )
static

Definition at line 89 of file vhdldocgen.cpp.

90{
91 auto &codeOL = ol.codeGenerators();
92 codeOL.startFontClass(keyword);
93 codeOL.codify(q);
94 codeOL.endFontClass();
95}
void startFontClass(const DString &c)
Definition outputlist.h:267
const OutputCodeList & codeGenerators() const
Definition outputlist.h:354

References OutputList::codeGenerators(), and OutputCodeList::startFontClass().

Referenced by VhdlDocGen::writeFormatString(), VhdlDocGen::writeFuncProcDocu(), VhdlDocGen::writeFunctionProto(), VhdlDocGen::writeProcedureProto(), and VhdlDocGen::writeStringLink().

◆ writeLink()

void writeLink ( const MemberDef * mdef,
OutputList & ol )
static

Definition at line 81 of file vhdldocgen.cpp.

82{
84 mdef->getOutputFileBase(),
85 mdef->anchor(),
86 mdef->name());
87}
virtual DString anchor() const =0
virtual DString getReference() const =0
virtual DString getOutputFileBase() const =0
void writeObjectLink(const DString &ref, const DString &file, const DString &anchor, const DString &name)
Definition outputlist.h:435

References Definition::anchor(), Definition::getOutputFileBase(), Definition::getReference(), Definition::name(), and OutputList::writeObjectLink().

Referenced by VhdlDocGen::writeRecordUnit(), VhdlDocGen::writeSource(), VhdlDocGen::writeStringLink(), writeUCFLink(), VhdlDocGen::writeVHDLDeclaration(), and VhdlDocGen::writeVHDLTypeDocumentation().

◆ writeUCFLink()

void writeUCFLink ( const MemberDef * mdef,
OutputList & ol )
static

Definition at line 2022 of file vhdldocgen.cpp.

2023{
2024
2025 DString largs(mdef->argsString());
2026 DString n= splitString(largs, '#');
2027 // VhdlDocGen::adjustRecordMember(mdef);
2028 bool equ=(n.length()==largs.length());
2029
2030 if (!equ)
2031 {
2032 ol.writeString(n);
2033 ol.docify(" ");
2034 ol.insertMemberAlign();
2035 }
2036
2037 if (mdef->name().contains("dummy")==0)
2038 {
2039 writeLink(mdef,ol);
2040 }
2041 if (equ)
2042 {
2043 ol.insertMemberAlign();
2044 }
2045 ol.docify(" ");
2046 VhdlDocGen::formatString(largs,ol,mdef);
2047}
int contains(char c, bool cs=true) const
Definition dstring.cpp:85
virtual DString argsString() const =0
void docify(const DString &s)
Definition outputlist.h:433
void insertMemberAlign(bool templ=false)
Definition outputlist.h:513
void writeString(const DString &text)
Definition outputlist.h:407
static void formatString(const DString &, OutputList &ol, const MemberDef *)
static DString splitString(DString &str, char c)
static void writeLink(const MemberDef *mdef, OutputList &ol)

References MemberDef::argsString(), DString::contains(), OutputList::docify(), VhdlDocGen::formatString(), OutputList::insertMemberAlign(), DString::length(), Definition::name(), splitString(), writeLink(), and OutputList::writeString().

Referenced by VhdlDocGen::writeVHDLDeclaration().

Variable Documentation

◆ flowCol

struct [struct].flowCol flowCol
Initial value:
=
{ "green",
"red",
"black",
"khaki",
"0.7 0.3 1.0",
"lightyellow",
"white",
"lightcyan"
}

Referenced by FlowChart::buildCommentNodes(), FlowChart::writeEdge(), and FlowChart::writeShape().

◆ flowList

◆ flowMember

const MemberDef* flowMember =nullptr
static

Definition at line 67 of file vhdldocgen.cpp.

Referenced by VhdlDocGen::getFlowMember(), and VhdlDocGen::setFlowMember().

◆ g_classList

std::vector<ClassDef*> g_classList
static

◆ g_packages

std::map<ClassDef*,std::vector<ClassDef*> > g_packages
static

◆ g_varMap

std::map<std::string,const MemberDef*> g_varMap
static

◆ g_vhdlKeyWordSet0

const std::unordered_set< std::string > g_vhdlKeyWordSet0
static
Initial value:
=
{
"abs","access","after","alias","all","and","architecture","array","assert","assume","assume_guarantee","attribute",
"begin","block","body","buffer","bus",
"case","component","configuration","constant","context","cover",
"default","disconnect","downto",
"else","elsif","end","entity","exit",
"fairness","file","for","force","function",
"generate","generic","group","guarded",
"if","impure","in","inertial","inout","is",
"label","library","linkage","literal","loop",
"map","mod",
"nand","new","next","nor","not","null",
"of","on","open","or","others","out",
"package","parameter","port","postponed","procedure","process","property","protected","pure",
"range","record","register","reject","release","restrict","restrict_guarantee","rem","report","rol","ror","return",
"select","sequence","severity","signal","shared","sla","sll","sra","srl","strong","subtype",
"then","to","transport","type",
"unaffected","units","until","use",
"variable","vmode","vprop","vunit",
"wait","when","while","with",
"xor","xnor"
}

Definition at line 117 of file vhdldocgen.cpp.

Referenced by VhdlDocGen::findKeyWord().

◆ g_vhdlKeyWordSet1

const std::unordered_set< std::string> g_vhdlKeyWordSet1
static
Initial value:
=
{
"natural","unsigned","signed","string","boolean", "bit","bit_vector","character",
"std_ulogic","std_ulogic_vector","std_logic","std_logic_vector","integer",
"real","float","ufixed","sfixed","time","positive"
}

Definition at line 143 of file vhdldocgen.cpp.

Referenced by VhdlDocGen::findKeyWord().

◆ g_vhdlKeyWordSet2

const std::unordered_set< std::string > g_vhdlKeyWordSet2
static
Initial value:
=
{
"abs","and","or","not","mod","xor","rem","xnor","ror","rol","sla","sll"
}

Definition at line 151 of file vhdldocgen.cpp.

Referenced by VhdlDocGen::findKeyWord().

◆ g_vhdlKeyWordSet3

const std::unordered_set< std::string > g_vhdlKeyWordSet3
static
Initial value:
=
{
"base","left","right","high","low","ascending",
"image","value","pos","val","succ","pred","leftof","rightof","left","right","high","low",
"range","reverse_range","length","ascending","delayed","stable","quiet","transaction","event",
"active","last_event","last_active","last_value","driving","driving_value","simple_name","instance_name","path_name"
}

Definition at line 157 of file vhdldocgen.cpp.

Referenced by VhdlDocGen::findKeyWord().

◆ g_vhdlMutex

std::recursive_mutex g_vhdlMutex
static

◆ ifcounter

int ifcounter =0
static

◆ mdList

std::vector<const MemberDef*> mdList
static

Definition at line 2373 of file vhdldocgen.cpp.

Referenced by VhdlDocGen::createFlowChart(), and findMemFlow().

◆ nodeCounter

int nodeCounter =0
static

Definition at line 2506 of file vhdldocgen.cpp.

Referenced by FlowChart::delFlowList(), and FlowChart::FlowChart().

◆ recordCounter

int recordCounter =0
static

Definition at line 729 of file vhdldocgen.cpp.

Referenced by VhdlDocGen::getRecordNumber().