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

Go to the source code of this file.

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 QCString &type, QCString &qcs, int line, const QCString &fileName, QCString &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 QCString &q, const char *keyword, OutputList &ol)
static QCString splitString (QCString &str, char c)
static int compareString (const QCString &s1, const QCString &s2)
static VhdlSpecifier getSpecifierTypeFromClass (const ClassDef *cd)
static bool membersHaveSpecificType (const MemberList *ml, VhdlSpecifier type)
static const MemberDeffindMemFlow (const MemberDef *mdef)
void alignText (QCString &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
struct { 
   const char *   textNodeLink 
   const char *   yesNodeLink 
   const char *   noNodeLink 
   const char *   comment 
   const char *   decisionNode 
   const char *   varNode 
   const char *   startEndNode 
   const char *   textNode 
flowCol
std::vector< FlowChartflowList

Macro Definition Documentation

◆ DECLN

#define DECLN
Value:

Definition at line 2512 of file vhdldocgen.cpp.

2512#define DECLN (FlowChart::WHEN_NO | \
2513 FlowChart::ELSIF_NO | FlowChart::IF_NO | \
2514 FlowChart::FOR_NO | FlowChart::WHILE_NO | \
2515 FlowChart::CASE_NO | FlowChart::LOOP_NO )

Referenced by FlowChart::writeShape().

◆ EE

Definition at line 2524 of file vhdldocgen.cpp.

◆ EEND

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

Definition at line 2520 of file vhdldocgen.cpp.

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

◆ EMPTNODE

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

Definition at line 2525 of file vhdldocgen.cpp.

Referenced by FlowChart::printNode().

◆ EMPTY

#define EMPTY   (EEND | FlowChart::ELSIF_NO)

Definition at line 2523 of file vhdldocgen.cpp.

Referenced by FlowChart::colTextNodes().

◆ ENDCL

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

Definition at line 2519 of file vhdldocgen.cpp.

Referenced by FlowChart::writeShape().

◆ EXITNEXT

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

Definition at line 2522 of file vhdldocgen.cpp.

Referenced by FlowChart::writeShape().

◆ FLOWLEN

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

◆ IFF

◆ LOOP

#define LOOP
Value:

Definition at line 2517 of file vhdldocgen.cpp.

2517#define LOOP (FlowChart::FOR_NO | FlowChart::WHILE_NO | \
2518 FlowChart::LOOP_NO )

Referenced by FlowChart::findLabel(), FlowChart::findPrevLoop(), and FlowChart::writeShape().

◆ STARTFIN

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

Definition at line 2516 of file vhdldocgen.cpp.

Referenced by FlowChart::writeShape().

◆ STARTL

#define STARTL
Value:

Definition at line 2509 of file vhdldocgen.cpp.

2509#define STARTL (FlowChart::WHILE_NO | FlowChart::IF_NO | \
2510 FlowChart::FOR_NO | FlowChart::CASE_NO | \
2511 FlowChart::LOOP_NO | WHEN_NO)

Referenced by FlowChart::FlowChart(), FlowChart::printNode(), and FlowChart::writeEdge().

◆ 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 2199 of file vhdldocgen.cpp.

2201{
2202
2203 QCString bName,n1;
2204 if (ar==nullptr) return;
2205
2206 if (classEntity==nullptr)
2207 {
2208 //add component inst
2209 n1=cur->type;
2210 goto ferr;
2211 }
2212
2213 if (classEntity==cd) return;
2214
2215 bName=classEntity->name();
2216 // fprintf(stderr,"\naddInstance %s to %s %s %s\n",qPrint( classEntity->name()),qPrint(cd->name()),qPrint(ar->name()),cur->name);
2217 n1=classEntity->name();
2218
2219 if (!cd->isBaseClass(classEntity, true))
2220 {
2221 cd->insertBaseClass(classEntity,n1,Protection::Public,Specifier::Normal,QCString());
2222 }
2223 else
2224 {
2225 VhdlDocGen::addBaseClass(cd,classEntity);
2226 }
2227
2228 if (!VhdlDocGen::isSubClass(classEntity,cd,true,0))
2229 {
2230 classEntity->insertSubClass(cd,Protection::Public,Specifier::Normal,QCString());
2231 classEntity->setLanguage(SrcLangExt::VHDL);
2232 }
2233
2234ferr:
2235 QCString uu=cur->name;
2236 auto md = createMemberDef(
2237 ar->getDefFileName(), cur->startLine,cur->startColumn,
2238 n1,uu,uu, QCString(),
2239 Protection::Public,
2240 Specifier::Normal,
2241 cur->isStatic,
2242 Relationship::Member,
2244 ArgumentList(),
2245 ArgumentList(),
2246 "");
2247 auto mmd = toMemberDefMutable(md.get());
2248
2249 if (!ar->getOutputFileBase().isEmpty())
2250 {
2251 TagInfo tg;
2252 tg.anchor = nullptr;
2253 tg.fileName = ar->getOutputFileBase();
2254 tg.tagName = nullptr;
2255 mmd->setTagInfo(&tg);
2256 }
2257
2258 //fprintf(stderr,"\n%s%s%s\n",qPrint(md->name()),qPrint(cur->brief),qPrint(cur->doc));
2259
2260 mmd->setLanguage(SrcLangExt::VHDL);
2261 mmd->setVhdlSpecifiers(VhdlSpecifier::INSTANTIATION);
2262 mmd->setBriefDescription(cur->brief,cur->briefFile,cur->briefLine);
2263 mmd->setBodySegment(cur->startLine,cur->startLine,-1) ;
2264 mmd->setDocumentation(cur->doc,cur->docFile,cur->docLine);
2265 FileDef *fd=ar->getFileDef();
2266 mmd->setBodyDef(fd);
2267 ar->insertMember(md.get());
2269 mn->push_back(std::move(md));
2270
2271}
This class represents an function or template argument list.
Definition arguments.h:65
virtual void setBodyDef(const FileDef *fd)=0
static MemberNameLinkedMap * functionNameLinkedMap
Definition doxygen.h:111
A model of a file symbol.
Definition filedef.h:99
void push_back(Ptr &&p)
Definition membername.h:54
This is an alternative implementation of QCString.
Definition qcstring.h:101
static void addBaseClass(ClassDef *cd, ClassDef *ent)
static bool isSubClass(ClassDef *cd, ClassDef *scd, bool followInstances, int level)
MemberDefMutable * toMemberDefMutable(Definition *d)
std::unique_ptr< MemberDef > 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.
This struct is used to capture the tag file information for an Entry.
Definition entry.h:104
QCString anchor
Definition entry.h:107
QCString fileName
Definition entry.h:106
QCString tagName
Definition entry.h:105
@ Variable
Definition types.h:555
@ INSTANTIATION
Definition types.h:751

References VhdlDocGen::addBaseClass(), TagInfo::anchor, createMemberDef(), TagInfo::fileName, Doxygen::functionNameLinkedMap, Definition::getDefFileName(), ClassDef::getFileDef(), Definition::getOutputFileBase(), ClassDefMutable::insertBaseClass(), ClassDefMutable::insertMember(), ClassDefMutable::insertSubClass(), INSTANTIATION, ClassDef::isBaseClass(), QCString::isEmpty(), VhdlDocGen::isSubClass(), Definition::name(), MemberName::push_back(), DefinitionMutable::setBodyDef(), DefinitionMutable::setLanguage(), TagInfo::tagName, toMemberDefMutable(), and Variable.

Referenced by VhdlDocGen::computeVhdlComponentRelations().

◆ alignText()

void alignText ( QCString & q)

Definition at line 2561 of file vhdldocgen.cpp.

2562{
2563 if (q.length()<=80) return;
2564
2565 if (q.length()>200)
2566 {
2567 q.resize(200);
2568 }
2569
2570 q.append(" ...");
2571
2572 QCString str(q);
2573 QCString temp;
2574
2575 while (str.length()>80)
2576 {
2577 int j=std::max(str.findRev(' ',80),str.findRev('|',80));
2578 if (j<=0)
2579 {
2580 temp+=str;
2581 q=temp;
2582 return;
2583 }
2584 else
2585 {
2586 QCString qcs=str.left(j);
2587 temp+=qcs+"\\";
2588 temp+="n";
2589 str.remove(0,j);
2590 }
2591 }//while
2592
2593 q=temp+str;
2594// #endif
2595}
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition qcstring.h:166
QCString & remove(size_t index, size_t len)
Definition qcstring.h:442
void resize(size_t newlen)
Definition qcstring.h:180
QCString & append(char c)
Definition qcstring.h:396
QCString left(size_t len) const
Definition qcstring.h:229

References QCString::append(), QCString::findRev(), QCString::left(), QCString::length(), QCString::remove(), and QCString::resize().

Referenced by FlowChart::writeShape().

◆ compareString()

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

Definition at line 115 of file vhdldocgen.cpp.

116{
117 return qstricmp(s1.stripWhiteSpace(),s2.stripWhiteSpace());
118}
QCString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
Definition qcstring.h:260
int qstricmp(const char *s1, const char *s2)
Definition qcstring.cpp:530

References qstricmp(), and QCString::stripWhiteSpace().

Referenced by VhdlDocGen::findFunction().

◆ findMemFlow()

const MemberDef * findMemFlow ( const MemberDef * mdef)
static

Definition at line 2398 of file vhdldocgen.cpp.

2399{
2400 for (const auto &md : mdList)
2401 {
2402 if (md->name()==mdef->name() && md->getStartBodyLine()==mdef->getStartBodyLine())
2403 {
2404 return md;
2405 }
2406 }
2407 return nullptr;
2408}
virtual int getStartBodyLine() const =0
virtual const QCString & name() 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 412 of file vhdldocgen.cpp.

413{
415
416 QCString type;
421 else if (ii==VhdlDocGen::PACKBODYCLASS)
423 else if (ii==VhdlDocGen::PACKAGECLASS)
426}
virtual Protection protection() const =0
Return the protection level (Public,Protected,Private) in which this compound was found.
@ ARCHITECTURECLASS
Definition vhdldocgen.h:77
static VhdlClasses convert(Protection prot)
Definition vhdldocgen.h:80

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 QCString & type,
QCString & qcs,
int line,
const QCString & fileName,
QCString & brief )
static

Definition at line 1985 of file vhdldocgen.cpp.

1987{
1988 if (qcs.isEmpty())return;
1989 QCString n;
1990
1992 qcs=qcs.stripWhiteSpace();
1993
1994 static const reg::Ex reg(R"([\s=])");
1995 int i = findIndex(qcs.str(),reg);
1996 if (i<0) return;
1997 if (i==0)
1998 {
1999 n=type;
2001 }
2002 else
2003 {
2004 n=qcs.left(i);
2005 }
2006 qcs=qcs.remove(0,i+1);
2007 // qcs.prepend("|");
2008
2009 qcs.stripPrefix("=");
2010
2011 std::shared_ptr<Entry> current = std::make_shared<Entry>();
2012 current->vhdlSpec=VhdlSpecifier::UCF_CONST;
2013 current->section=EntryType::makeVariable();
2014 current->bodyLine=line;
2015 current->fileName=fileName;
2016 current->type="ucf_const";
2017 current->args+=qcs;
2018 current->lang= SrcLangExt::VHDL ;
2019
2020 // adding dummy name for constraints like VOLTAGE=5,TEMPERATURE=20 C
2021 if (n.isEmpty())
2022 {
2023 n="dummy";
2025 }
2026
2027 current->name= n+"_";
2028 current->name.append(VhdlDocGen::getRecordNumber());
2029
2030 if (!brief.isEmpty())
2031 {
2032 current->brief=brief;
2033 current->briefLine=line;
2034 current->briefFile=fileName;
2035 brief.clear();
2036 }
2037
2038 root->moveToSubEntryAndKeep(current);
2039}
void moveToSubEntryAndKeep(Entry *e)
Definition entry.cpp:145
bool isEmpty() const
Returns TRUE iff the string is empty.
Definition qcstring.h:163
const std::string & str() const
Definition qcstring.h:552
bool stripPrefix(const QCString &prefix)
Definition qcstring.h:213
void clear()
Definition qcstring.h:182
static QCString getRecordNumber()
static void deleteAllChars(QCString &s, char c)
Class representing a regular expression.
Definition regex.h:39
Namespace for the regular expression functions.
Definition regex.cpp:31
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
Definition util.cpp:6672

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

Referenced by VhdlDocGen::parseUCF().

◆ membersHaveSpecificType()

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

Definition at line 1726 of file vhdldocgen.cpp.

1727{
1728 if (ml==nullptr) return FALSE;
1729 for (const auto &mdd : *ml)
1730 {
1731 if (mdd->getVhdlSpecifiers()==type) //is type in class
1732 {
1733 return TRUE;
1734 }
1735 }
1736 for (const auto &mg : ml->getMemberGroupList())
1737 {
1738 if (!mg->members().empty())
1739 {
1740 if (membersHaveSpecificType(&mg->members(),type)) return TRUE;
1741 }
1742 }
1743 return FALSE;
1744}
#define TRUE
Definition qcstring.h:37
#define FALSE
Definition qcstring.h:34
static bool membersHaveSpecificType(const MemberList *ml, VhdlSpecifier type)

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

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

◆ splitString()

QCString splitString ( QCString & str,
char c )
static

Definition at line 103 of file vhdldocgen.cpp.

104{
105 QCString n=str;
106 int i=str.find(c);
107 if (i>0)
108 {
109 n=str.left(i);
110 str=str.remove(0,i+1);
111 }
112 return n;
113}
int find(char c, int index=0, bool cs=TRUE) const
Definition qcstring.cpp:43

References QCString::find(), QCString::left(), and QCString::remove().

Referenced by writeUCFLink().

◆ startFonts()

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

Definition at line 95 of file vhdldocgen.cpp.

96{
97 auto &codeOL = ol.codeGenerators();
98 codeOL.startFontClass(keyword);
99 codeOL.codify(q);
100 codeOL.endFontClass();
101}
void startFontClass(const QCString &c)
Definition outputlist.h:270
const OutputCodeList & codeGenerators() const
Definition outputlist.h:358

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 87 of file vhdldocgen.cpp.

88{
90 mdef->getOutputFileBase(),
91 mdef->anchor(),
92 mdef->name());
93}
virtual QCString anchor() const =0
virtual QCString getReference() const =0
virtual QCString getOutputFileBase() const =0
void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)
Definition outputlist.h:439

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 2042 of file vhdldocgen.cpp.

2043{
2044
2045 QCString largs(mdef->argsString());
2046 QCString n= splitString(largs, '#');
2047 // VhdlDocGen::adjustRecordMember(mdef);
2048 bool equ=(n.length()==largs.length());
2049
2050 if (!equ)
2051 {
2052 ol.writeString(n);
2053 ol.docify(" ");
2054 ol.insertMemberAlign();
2055 }
2056
2057 if (mdef->name().contains("dummy")==0)
2058 {
2059 writeLink(mdef,ol);
2060 }
2061 if (equ)
2062 {
2063 ol.insertMemberAlign();
2064 }
2065 ol.docify(" ");
2066 VhdlDocGen::formatString(largs,ol,mdef);
2067}
virtual QCString argsString() const =0
void writeString(const QCString &text)
Definition outputlist.h:411
void docify(const QCString &s)
Definition outputlist.h:437
void insertMemberAlign(bool templ=FALSE)
Definition outputlist.h:517
int contains(char c, bool cs=TRUE) const
Definition qcstring.cpp:148
static void formatString(const QCString &, OutputList &ol, const MemberDef *)
static void writeLink(const MemberDef *mdef, OutputList &ol)
static QCString splitString(QCString &str, char c)

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

Referenced by VhdlDocGen::writeVHDLDeclaration().

Variable Documentation

◆ comment

const char* comment

◆ decisionNode

const char* decisionNode

Definition at line 2540 of file vhdldocgen.cpp.

◆ [struct]

struct { ... } 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

◆ 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 123 of file vhdldocgen.cpp.

123 {
124 "abs","access","after","alias","all","and","architecture","array","assert","assume","assume_guarantee","attribute",
125 "begin","block","body","buffer","bus",
126 "case","component","configuration","constant","context","cover",
127 "default","disconnect","downto",
128 "else","elsif","end","entity","exit",
129 "fairness","file","for","force","function",
130 "generate","generic","group","guarded",
131 "if","impure","in","inertial","inout","is",
132 "label","library","linkage","literal","loop",
133 "map","mod",
134 "nand","new","next","nor","not","null",
135 "of","on","open","or","others","out",
136 "package","parameter","port","postponed","procedure","process","property","protected","pure",
137 "range","record","register","reject","release","restrict","restrict_guarantee","rem","report","rol","ror","return",
138 "select","sequence","severity","signal","shared","sla","sll","sra","srl","strong","subtype",
139 "then","to","transport","type",
140 "unaffected","units","until","use",
141 "variable","vmode","vprop","vunit",
142 "wait","when","while","with",
143 "xor","xnor"
144};

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 149 of file vhdldocgen.cpp.

149 {
150 "natural","unsigned","signed","string","boolean", "bit","bit_vector","character",
151 "std_ulogic","std_ulogic_vector","std_logic","std_logic_vector","integer",
152 "real","float","ufixed","sfixed","time","positive"
153};

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 157 of file vhdldocgen.cpp.

157 {
158 "abs","and","or","not","mod","xor","rem","xnor","ror","rol","sla","sll"
159};

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 163 of file vhdldocgen.cpp.

163 {
164 "base","left","right","high","low","ascending",
165 "image","value","pos","val","succ","pred","leftof","rightof","left","right","high","low",
166 "range","reverse_range","length","ascending","delayed","stable","quiet","transaction","event",
167 "active","last_event","last_active","last_value","driving","driving_value","simple_name","instance_name","path_name"
168};

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 2396 of file vhdldocgen.cpp.

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

◆ nodeCounter

int nodeCounter =0
static

Definition at line 2529 of file vhdldocgen.cpp.

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

◆ noNodeLink

const char* noNodeLink

Definition at line 2536 of file vhdldocgen.cpp.

◆ recordCounter

int recordCounter =0
static

Definition at line 735 of file vhdldocgen.cpp.

Referenced by VhdlDocGen::getRecordNumber().

◆ startEndNode

const char* startEndNode

Definition at line 2542 of file vhdldocgen.cpp.

◆ textNode

const char* textNode

Definition at line 2543 of file vhdldocgen.cpp.

◆ textNodeLink

const char* textNodeLink

Definition at line 2534 of file vhdldocgen.cpp.

◆ varNode

const char* varNode

Definition at line 2541 of file vhdldocgen.cpp.

◆ yesNodeLink

const char* yesNodeLink

Definition at line 2535 of file vhdldocgen.cpp.