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

2505#define DECLN (FlowChart::WHEN_NO | \
2506 FlowChart::ELSIF_NO | FlowChart::IF_NO | \
2507 FlowChart::FOR_NO | FlowChart::WHILE_NO | \
2508 FlowChart::CASE_NO | FlowChart::LOOP_NO )

Referenced by FlowChart::writeShape().

◆ EE

Definition at line 2517 of file vhdldocgen.cpp.

◆ EEND

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

Definition at line 2513 of file vhdldocgen.cpp.

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

◆ EMPTNODE

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

Definition at line 2518 of file vhdldocgen.cpp.

Referenced by FlowChart::printNode().

◆ EMPTY

#define EMPTY   (EEND | FlowChart::ELSIF_NO)

Definition at line 2516 of file vhdldocgen.cpp.

Referenced by FlowChart::colTextNodes().

◆ ENDCL

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

Definition at line 2512 of file vhdldocgen.cpp.

Referenced by FlowChart::writeShape().

◆ EXITNEXT

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

Definition at line 2515 of file vhdldocgen.cpp.

Referenced by FlowChart::writeShape().

◆ FLOWLEN

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

◆ IFF

◆ LOOP

#define LOOP
Value:

Definition at line 2510 of file vhdldocgen.cpp.

2510#define LOOP (FlowChart::FOR_NO | FlowChart::WHILE_NO | \
2511 FlowChart::LOOP_NO )

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

◆ STARTFIN

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

Definition at line 2509 of file vhdldocgen.cpp.

Referenced by FlowChart::writeShape().

◆ STARTL

#define STARTL
Value:

Definition at line 2502 of file vhdldocgen.cpp.

2502#define STARTL (FlowChart::WHILE_NO | FlowChart::IF_NO | \
2503 FlowChart::FOR_NO | FlowChart::CASE_NO | \
2504 FlowChart::LOOP_NO | WHEN_NO)

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

◆ theTranslator_vhdlType

#define theTranslator_vhdlType   theTranslator->trVhdlType

Function Documentation

◆ addInstance()

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

Definition at line 2192 of file vhdldocgen.cpp.

2194{
2195
2196 QCString bName,n1;
2197 if (ar==nullptr) return;
2198
2199 if (classEntity==nullptr)
2200 {
2201 //add component inst
2202 n1=cur->type;
2203 goto ferr;
2204 }
2205
2206 if (classEntity==cd) return;
2207
2208 bName=classEntity->name();
2209 // fprintf(stderr,"\naddInstance %s to %s %s %s\n",qPrint( classEntity->name()),qPrint(cd->name()),qPrint(ar->name()),cur->name);
2210 n1=classEntity->name();
2211
2212 if (!cd->isBaseClass(classEntity, true))
2213 {
2214 cd->insertBaseClass(classEntity,n1,Protection::Public,Specifier::Normal,QCString());
2215 }
2216 else
2217 {
2218 VhdlDocGen::addBaseClass(cd,classEntity);
2219 }
2220
2221 if (!VhdlDocGen::isSubClass(classEntity,cd,true,0))
2222 {
2223 classEntity->insertSubClass(cd,Protection::Public,Specifier::Normal,QCString());
2224 classEntity->setLanguage(SrcLangExt::VHDL);
2225 }
2226
2227ferr:
2228 QCString uu=cur->name;
2229 auto md = createMemberDef(
2230 ar->getDefFileName(), cur->startLine,cur->startColumn,
2231 n1,uu,uu, QCString(),
2234 cur->isStatic,
2237 ArgumentList(),
2238 ArgumentList(),
2239 "");
2240 auto mmd = toMemberDefMutable(md.get());
2241
2242 if (!ar->getOutputFileBase().isEmpty())
2243 {
2244 TagInfo tg;
2245 tg.anchor = nullptr;
2246 tg.fileName = ar->getOutputFileBase();
2247 tg.tagName = nullptr;
2248 mmd->setTagInfo(&tg);
2249 }
2250
2251 //fprintf(stderr,"\n%s%s%s\n",qPrint(md->name()),qPrint(cur->brief),qPrint(cur->doc));
2252
2253 mmd->setLanguage(SrcLangExt::VHDL);
2254 mmd->setVhdlSpecifiers(VhdlSpecifier::INSTANTIATION);
2255 mmd->setBriefDescription(cur->brief,cur->briefFile,cur->briefLine);
2256 mmd->setBodySegment(cur->startLine,cur->startLine,-1) ;
2257 mmd->setDocumentation(cur->doc,cur->docFile,cur->docLine);
2258 FileDef *fd=ar->getFileDef();
2259 mmd->setBodyDef(fd);
2260 ar->insertMember(md.get());
2262 mn->push_back(std::move(md));
2263
2264}
This class represents an function or template argument list.
Definition arguments.h:60
virtual void setBodyDef(const FileDef *fd)=0
static MemberNameLinkedMap * functionNameLinkedMap
Definition doxygen.h:112
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:103
QCString anchor
Definition entry.h:106
QCString fileName
Definition entry.h:105
QCString tagName
Definition entry.h:104
@ Variable
Definition types.h:393
@ Public
Definition types.h:26
@ Normal
Definition types.h:29
@ INSTANTIATION
Definition types.h:569

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(), Member, Definition::name(), Normal, Public, MemberName::push_back(), DefinitionMutable::setBodyDef(), DefinitionMutable::setLanguage(), TagInfo::tagName, toMemberDefMutable(), Variable, and VHDL.

Referenced by VhdlDocGen::computeVhdlComponentRelations().

◆ alignText()

void alignText ( QCString & q)

Definition at line 2554 of file vhdldocgen.cpp.

2555{
2556 if (q.length()<=80) return;
2557
2558 if (q.length()>200)
2559 {
2560 q.resize(200);
2561 }
2562
2563 q.append(" ...");
2564
2565 QCString str(q);
2566 QCString temp;
2567
2568 while (str.length()>80)
2569 {
2570 int j=std::max(str.findRev(' ',80),str.findRev('|',80));
2571 if (j<=0)
2572 {
2573 temp+=str;
2574 q=temp;
2575 return;
2576 }
2577 else
2578 {
2579 QCString qcs=str.left(j);
2580 temp+=qcs+"\\";
2581 temp+="n";
2582 str.remove(0,j);
2583 }
2584 }//while
2585
2586 q=temp+str;
2587// #endif
2588}
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition qcstring.h:153
QCString & remove(size_t index, size_t len)
Definition qcstring.h:427
void resize(size_t newlen)
Definition qcstring.h:167
QCString & append(char c)
Definition qcstring.h:381
QCString left(size_t len) const
Definition qcstring.h:214

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

Referenced by FlowChart::writeShape().

◆ compareString()

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

Definition at line 117 of file vhdldocgen.cpp.

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

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

Referenced by VhdlDocGen::findFunction().

◆ findMemFlow()

static const MemberDef * findMemFlow ( const MemberDef * mdef)
static

Definition at line 2391 of file vhdldocgen.cpp.

2392{
2393 for (const auto &md : mdList)
2394 {
2395 if (md->name()==mdef->name() && md->getStartBodyLine()==mdef->getStartBodyLine())
2396 {
2397 return md;
2398 }
2399 }
2400 return nullptr;
2401}
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()

static VhdlSpecifier getSpecifierTypeFromClass ( const ClassDef * cd)
static

Definition at line 414 of file vhdldocgen.cpp.

415{
417
418 QCString type;
423 else if (ii==VhdlDocGen::PACKBODYCLASS)
425 else if (ii==VhdlDocGen::PACKAGECLASS)
428}
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()

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

Definition at line 1975 of file vhdldocgen.cpp.

1977{
1978 if (qcs.isEmpty())return;
1979 QCString n;
1980
1982 qcs=qcs.stripWhiteSpace();
1983
1984 static const reg::Ex reg(R"([\s=])");
1985 int i = findIndex(qcs.str(),reg);
1986 if (i<0) return;
1987 if (i==0)
1988 {
1989 n=type;
1991 }
1992 else
1993 {
1994 n=qcs.left(i);
1995 }
1996 qcs=qcs.remove(0,i+1);
1997 // qcs.prepend("|");
1998
1999 qcs.stripPrefix("=");
2000
2001 std::shared_ptr<Entry> current = std::make_shared<Entry>();
2002 current->vhdlSpec=VhdlSpecifier::UCF_CONST;
2003 current->section=EntryType::makeVariable();
2004 current->bodyLine=line;
2005 current->fileName=fileName;
2006 current->type="ucf_const";
2007 current->args+=qcs;
2008 current->lang= SrcLangExt::VHDL ;
2009
2010 // adding dummy name for constraints like VOLTAGE=5,TEMPERATURE=20 C
2011 if (n.isEmpty())
2012 {
2013 n="dummy";
2015 }
2016
2017 current->name= n+"_";
2018 current->name.append(VhdlDocGen::getRecordNumber());
2019
2020 if (!brief.isEmpty())
2021 {
2022 current->brief=brief;
2023 current->briefLine=line;
2024 current->briefFile=fileName;
2025 brief.clear();
2026 }
2027
2028 root->moveToSubEntryAndKeep(current);
2029}
void moveToSubEntryAndKeep(Entry *e)
Definition entry.cpp:144
bool isEmpty() const
Returns TRUE iff the string is empty.
Definition qcstring.h:150
const std::string & str() const
Definition qcstring.h:526
bool stripPrefix(const QCString &prefix)
Definition qcstring.h:198
void clear()
Definition qcstring.h:169
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:6981

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

Referenced by VhdlDocGen::parseUCF().

◆ membersHaveSpecificType()

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

Definition at line 1725 of file vhdldocgen.cpp.

1726{
1727 if (ml==nullptr) return FALSE;
1728 for (const auto &mdd : *ml)
1729 {
1730 if (mdd->getVhdlSpecifiers()==type) //is type in class
1731 {
1732 return TRUE;
1733 }
1734 }
1735 for (const auto &mg : ml->getMemberGroupList())
1736 {
1737 if (!mg->members().empty())
1738 {
1739 if (membersHaveSpecificType(&mg->members(),type)) return TRUE;
1740 }
1741 }
1742 return FALSE;
1743}
#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()

static QCString splitString ( QCString & str,
char c )
static

Definition at line 105 of file vhdldocgen.cpp.

106{
107 QCString n=str;
108 int i=str.find(c);
109 if (i>0)
110 {
111 n=str.left(i);
112 str=str.remove(0,i+1);
113 }
114 return n;
115}
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()

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

Definition at line 97 of file vhdldocgen.cpp.

98{
99 auto &codeOL = ol.codeGenerators();
100 codeOL.startFontClass(keyword);
101 codeOL.codify(q);
102 codeOL.endFontClass();
103}
void startFontClass(const QCString &c)
Definition outputlist.h:269
const OutputCodeList & codeGenerators() const
Definition outputlist.h:357

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

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

◆ writeLink()

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

Definition at line 89 of file vhdldocgen.cpp.

90{
92 mdef->getOutputFileBase(),
93 mdef->anchor(),
94 mdef->name());
95}
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:440

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()

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

Definition at line 2032 of file vhdldocgen.cpp.

2033{
2034
2035 QCString largs(mdef->argsString());
2036 QCString n= splitString(largs, '#');
2037 // VhdlDocGen::adjustRecordMember(mdef);
2038 bool equ=(n.length()==largs.length());
2039
2040 if (!equ)
2041 {
2042 ol.writeString(n);
2043 ol.docify(" ");
2044 ol.insertMemberAlign();
2045 }
2046
2047 if (mdef->name().contains("dummy")==0)
2048 {
2049 writeLink(mdef,ol);
2050 }
2051 if (equ)
2052 {
2053 ol.insertMemberAlign();
2054 }
2055 ol.docify(" ");
2056 VhdlDocGen::formatString(largs,ol,mdef);
2057}
virtual QCString argsString() const =0
void writeString(const QCString &text)
Definition outputlist.h:412
void docify(const QCString &s)
Definition outputlist.h:438
void insertMemberAlign(bool templ=FALSE)
Definition outputlist.h:518
int contains(char c, bool cs=TRUE) const
Definition qcstring.cpp:143
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 2533 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

Definition at line 75 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 125 of file vhdldocgen.cpp.

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

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

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

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

160{
161 "abs","and","or","not","mod","xor","rem","xnor","ror","rol","sla","sll"
162};

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

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

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

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

◆ nodeCounter

int nodeCounter =0
static

Definition at line 2522 of file vhdldocgen.cpp.

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

◆ noNodeLink

const char* noNodeLink

Definition at line 2529 of file vhdldocgen.cpp.

◆ recordCounter

int recordCounter =0
static

Definition at line 738 of file vhdldocgen.cpp.

Referenced by VhdlDocGen::getRecordNumber().

◆ startEndNode

const char* startEndNode

Definition at line 2535 of file vhdldocgen.cpp.

◆ textNode

const char* textNode

Definition at line 2536 of file vhdldocgen.cpp.

◆ textNodeLink

const char* textNodeLink

Definition at line 2527 of file vhdldocgen.cpp.

◆ varNode

const char* varNode

Definition at line 2534 of file vhdldocgen.cpp.

◆ yesNodeLink

const char* yesNodeLink

Definition at line 2528 of file vhdldocgen.cpp.