Doxygen
vhdldocgen.cpp 文件参考
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#include <map>
#include <algorithm>
#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 "index.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"
+ vhdldocgen.cpp 的引用(Include)关系图:

浏览源代码.

宏定义

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

函数

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 createSVG ()
 
static void startDot (TextStream &t)
 
static void startTable (TextStream &t, const QCString &className)
 
static std::vector< const MemberDef * > getPorts (const ClassDef *cd)
 
static void writeVhdlEntityToolTip (TextStream &t, ClassDef *cd)
 
static void endDot (TextStream &t)
 
static void writeTable (const std::vector< const MemberDef * > &portList, TextStream &t)
 
static void endTable (TextStream &t)
 
static void writeClassToDot (TextStream &t, ClassDef *cd)
 
static void writeVhdlDotLink (TextStream &t, const QCString &a, const QCString &b, const QCString &style)
 
static void codify (TextStream &t, const QCString &str)
 
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 QCString formatBriefNote (const QCString &brief, ClassDef *cd)
 
static void writeColumn (TextStream &t, const MemberDef *md, bool start)
 
static bool membersHaveSpecificType (const MemberList *ml, uint64 type)
 
static const MemberDeffindMemFlow (const MemberDef *mdef)
 
void alignText (QCString &q)
 

变量

static const MemberDefflowMember =0
 
static const std::set< std::string > g_vhdlKeyWordSet0
 
static const std::set< std::string > g_vhdlKeyWordSet1
 
static const std::set< std::string > g_vhdlKeyWordSet2
 
static const std::set< std::string > g_vhdlKeyWordSet3
 
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
 

宏定义说明

◆ DECLN

◆ EE

在文件 vhdldocgen.cpp2855 行定义.

◆ EEND

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

在文件 vhdldocgen.cpp2851 行定义.

◆ EMPTNODE

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

在文件 vhdldocgen.cpp2856 行定义.

◆ EMPTY

#define EMPTY   (EEND | FlowChart::ELSIF_NO)

在文件 vhdldocgen.cpp2854 行定义.

◆ ENDCL

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

在文件 vhdldocgen.cpp2850 行定义.

◆ EXITNEXT

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

在文件 vhdldocgen.cpp2853 行定义.

◆ FLOWLEN

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

在文件 vhdldocgen.cpp2857 行定义.

◆ IFF

#define IFF   (FlowChart::ELSIF_NO | FlowChart::IF_NO)

在文件 vhdldocgen.cpp2852 行定义.

◆ LOOP

#define LOOP

◆ STARTFIN

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

在文件 vhdldocgen.cpp2847 行定义.

◆ STARTL

◆ theTranslator_vhdlType

#define theTranslator_vhdlType   theTranslator->trVhdlType

在文件 vhdldocgen.cpp66 行定义.

函数说明

◆ addInstance()

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

在文件 vhdldocgen.cpp2541 行定义.

2543 {
2544 
2545  QCString bName,n1;
2546  if (ar==0) return;
2547 
2548  if (classEntity==0)
2549  {
2550  //add component inst
2551  n1=cur->type;
2552  goto ferr;
2553  }
2554 
2555  if (classEntity==cd) return;
2556 
2557  bName=classEntity->name();
2558  // fprintf(stderr,"\naddInstance %s to %s %s %s\n",qPrint( classEntity->name()),qPrint(cd->name()),qPrint(ar->name()),cur->name);
2559  n1=classEntity->name();
2560 
2561  if (!cd->isBaseClass(classEntity, true, 0))
2562  {
2563  cd->insertBaseClass(classEntity,n1,Public,Normal,QCString());
2564  }
2565  else
2566  {
2567  VhdlDocGen::addBaseClass(cd,classEntity);
2568  }
2569 
2570  if (!VhdlDocGen::isSubClass(classEntity,cd,true,0))
2571  {
2572  classEntity->insertSubClass(cd,Public,Normal,QCString());
2573  classEntity->setLanguage(SrcLangExt_VHDL);
2574  }
2575 
2576 ferr:
2577  QCString uu=cur->name;
2578  std::unique_ptr<MemberDefMutable> md { createMemberDef(
2579  ar->getDefFileName(), cur->startLine,cur->startColumn,
2580  n1,uu,uu, QCString(),
2581  Public, Normal, cur->stat,Member,
2583  ArgumentList(),
2584  ArgumentList(),
2585  "") };
2586 
2587  if (!ar->getOutputFileBase().isEmpty())
2588  {
2589  TagInfo tg;
2590  tg.anchor = 0;
2591  tg.fileName = ar->getOutputFileBase();
2592  tg.tagName = 0;
2593  md->setTagInfo(&tg);
2594  }
2595 
2596  //fprintf(stderr,"\n%s%s%s\n",qPrint(md->name()),qPrint(cur->brief),qPrint(cur->doc));
2597 
2598  md->setLanguage(SrcLangExt_VHDL);
2599  md->setMemberSpecifiers(VhdlDocGen::INSTANTIATION);
2600  md->setBriefDescription(cur->brief,cur->briefFile,cur->briefLine);
2601  md->setBodySegment(cur->startLine,cur->startLine,-1) ;
2602  md->setDocumentation(cur->doc,cur->docFile,cur->docLine);
2603  FileDef *fd=ar->getFileDef();
2604  md->setBodyDef(fd);
2605  ar->insertMember(md.get());
2607  mn->push_back(std::move(md));
2608 
2609 }

引用了 LinkedMap< T, Hash, KeyEqual, Map >::add(), VhdlDocGen::addBaseClass(), TagInfo::anchor, createMemberDef(), TagInfo::fileName, Doxygen::functionNameLinkedMap, Definition::getDefFileName(), ClassDef::getFileDef(), ClassDef::getOutputFileBase(), ClassDefMutable::insertBaseClass(), ClassDefMutable::insertMember(), ClassDefMutable::insertSubClass(), VhdlDocGen::INSTANTIATION, ClassDef::isBaseClass(), QCString::isEmpty(), VhdlDocGen::isSubClass(), Member, MemberType_Variable, Definition::name(), Normal, Public, MemberName::push_back(), DefinitionMutable::setBodyDef(), DefinitionMutable::setLanguage(), SrcLangExt_VHDL , 以及 TagInfo::tagName.

被这些函数引用 VhdlDocGen::computeVhdlComponentRelations().

◆ alignText()

void alignText ( QCString q)

在文件 vhdldocgen.cpp2892 行定义.

2893 {
2894  if (q.length()<=80) return;
2895 
2896  if (q.length()>200)
2897  {
2898  q.resize(200);
2899  }
2900 
2901  q.append(" ...");
2902 
2903  QCString str(q);
2904  QCString temp;
2905 
2906  while (str.length()>80)
2907  {
2908  int j=std::max(str.findRev(' ',80),str.findRev('|',80));
2909  if (j<=0)
2910  {
2911  temp+=str;
2912  q=temp;
2913  return;
2914  }
2915  else
2916  {
2917  QCString qcs=str.left(j);
2918  temp+=qcs+"\\";
2919  temp+="n";
2920  str.remove(0,j);
2921  }
2922  }//while
2923 
2924  q=temp+str;
2925 // #endif
2926 }

引用了 QCString::append(), QCString::findRev(), QCString::left(), QCString::length(), QCString::remove() , 以及 QCString::resize().

被这些函数引用 FlowChart::writeShape().

◆ codify()

static void codify ( TextStream t,
const QCString str 
)
static

在文件 vhdldocgen.cpp100 行定义.

101 {
102  if (!str.isEmpty())
103  {
104  const char *p=str.data();
105  char c;
106  while (*p)
107  {
108  c=*p++;
109  switch(c)
110  {
111  case '<': t << "&lt;";
112  break;
113  case '>': t << "&gt;";
114  break;
115  case '&': t << "&amp;";
116  break;
117  case '\'': t << "&#39;";
118  break;
119  case '"': t << "&quot;";
120  break;
121  default: t << c;
122  break;
123  }
124  }
125  }
126 }

引用了 QCString::data() , 以及 QCString::isEmpty().

被这些函数引用 writeColumn().

◆ compareString()

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

在文件 vhdldocgen.cpp155 行定义.

156 {
157  return qstricmp(s1.stripWhiteSpace(),s2.stripWhiteSpace());
158 }

引用了 qstricmp() , 以及 QCString::stripWhiteSpace().

被这些函数引用 VhdlDocGen::findFunction().

◆ createSVG()

static void createSVG ( )
static

在文件 vhdldocgen.cpp160 行定义.

161 {
162  QCString ov =Config_getString(HTML_OUTPUT);
163  QCString dir="-o \""+ov+"/vhdl_design_overview.html\"";
164  ov+="/vhdl_design.dot";
165 
166  QCString vlargs="-Tsvg \""+ov+"\" "+dir ;
167 
168  if (Portable::system(Config_getString(DOT_PATH) + "dot",vlargs)!=0)
169  {
170  err("could not create dot file");
171  }
172 }

引用了 Config_getString, err() , 以及 Portable::system().

被这些函数引用 VhdlDocGen::writeOverview().

◆ endDot()

static void endDot ( TextStream t)
static

在文件 vhdldocgen.cpp251 行定义.

252 {
253  t <<" } \n";
254 }

被这些函数引用 VhdlDocGen::writeOverview().

◆ endTable()

static void endTable ( TextStream t)
static

在文件 vhdldocgen.cpp396 行定义.

397 {
398  t << "</TABLE>>\n";
399  t << "] \n";
400 }

被这些函数引用 VhdlDocGen::writeOverview().

◆ findMemFlow()

static const MemberDef* findMemFlow ( const MemberDef mdef)
static

在文件 vhdldocgen.cpp2730 行定义.

2731 {
2732  for (const auto &md : mdList)
2733  {
2734  if (md->name()==mdef->name() && md->getStartBodyLine()==mdef->getStartBodyLine())
2735  {
2736  return md;
2737  }
2738  }
2739  return 0;
2740 }

引用了 Definition::getStartBodyLine(), mdList , 以及 Definition::name().

被这些函数引用 VhdlDocGen::createFlowChart().

◆ formatBriefNote()

static QCString formatBriefNote ( const QCString brief,
ClassDef cd 
)
static

在文件 vhdldocgen.cpp274 行定义.

275 {
276  QCString vForm;
277  QCString repl("<BR ALIGN=\"LEFT\"/>");
278  QCString file=cd->getDefFileName();
279 
280  int k=cd->briefLine();
281 
282  auto qsl=split(brief.str(),"\n");
283  for(const auto &line : qsl)
284  {
285  vForm+=parseCommentAsText(cd,NULL,line.c_str(),file,k);
286  k++;
287  vForm+=repl;
288  }
289  return vForm;
290 }

引用了 Definition::briefLine(), Definition::getDefFileName(), parseCommentAsText(), split() , 以及 QCString::str().

被这些函数引用 writeVhdlEntityToolTip().

◆ getPorts()

static std::vector< const MemberDef * > getPorts ( const ClassDef cd)
static

在文件 vhdldocgen.cpp416 行定义.

417 {
419  std::vector<const MemberDef *> portList;
420 
421  if (ml==0)
422  {
423  return portList;
424  }
425 
426  for (const auto &md : *ml)
427  {
428  if (md->getMemberSpecifiers()==VhdlDocGen::PORT)
429  {
430  portList.push_back(md);
431  }
432  }
433  return portList;
434 }

引用了 ClassDef::getMemberList(), MemberListType_variableMembers, VhdlDocGen::PORT , 以及 MemberVector::push_back().

被这些函数引用 VhdlDocGen::writeOverview().

◆ initUCF()

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

在文件 vhdldocgen.cpp2323 行定义.

2325 {
2326  if (qcs.isEmpty())return;
2327  QCString n;
2328 
2329  VhdlDocGen::deleteAllChars(qcs,';');
2330  qcs=qcs.stripWhiteSpace();
2331 
2332  static const reg::Ex reg(R"([\s=])");
2333  int i = findIndex(qcs.str(),reg);
2334  if (i<0) return;
2335  if (i==0)
2336  {
2337  n=type;
2339  }
2340  else
2341  {
2342  n=qcs.left(i);
2343  }
2344  qcs=qcs.remove(0,i+1);
2345  // qcs.prepend("|");
2346 
2347  qcs.stripPrefix("=");
2348 
2349  std::shared_ptr<Entry> current = std::make_shared<Entry>();
2350  current->spec=VhdlDocGen::UCF_CONST;
2351  current->section=Entry::VARIABLE_SEC;
2352  current->bodyLine=line;
2353  current->fileName=fileName;
2354  current->type="ucf_const";
2355  current->args+=qcs;
2356  current->lang= SrcLangExt_VHDL ;
2357 
2358  // adding dummy name for constraints like VOLTAGE=5,TEMPERATURE=20 C
2359  if (n.isEmpty())
2360  {
2361  n="dummy";
2363  }
2364 
2365  current->name= n+"_";
2366  current->name.append(VhdlDocGen::getRecordNumber());
2367 
2368  if (!brief.isEmpty())
2369  {
2370  current->brief=brief;
2371  current->briefLine=line;
2372  current->briefFile=fileName;
2373  brief.resize(0);
2374  }
2375 
2376  root->moveToSubEntryAndKeep(current);
2377 }

引用了 QCString::append(), VhdlDocGen::deleteAllChars(), findIndex(), VhdlDocGen::getRecordNumber(), QCString::isEmpty(), QCString::left(), Entry::moveToSubEntryAndKeep(), QCString::remove(), QCString::resize(), SrcLangExt_VHDL, QCString::str(), QCString::stripPrefix(), QCString::stripWhiteSpace(), VhdlDocGen::UCF_CONST , 以及 Entry::VARIABLE_SEC.

被这些函数引用 VhdlDocGen::parseUCF().

◆ membersHaveSpecificType()

static bool membersHaveSpecificType ( const MemberList ml,
uint64  type 
)
static

在文件 vhdldocgen.cpp2078 行定义.

2079 {
2080  if (ml==0) return FALSE;
2081  for (const auto &mdd : *ml)
2082  {
2083  if (mdd->getMemberSpecifiers()==type) //is type in class
2084  {
2085  return TRUE;
2086  }
2087  }
2088  for (const auto &mg : ml->getMemberGroupList())
2089  {
2090  if (!mg->members().empty())
2091  {
2092  if (membersHaveSpecificType(&mg->members(),type)) return TRUE;
2093  }
2094  }
2095  return FALSE;
2096 }

引用了 FALSE , 以及 TRUE.

被这些函数引用 VhdlDocGen::writeVHDLDeclarations().

◆ splitString()

static QCString splitString ( QCString str,
char  c 
)
static

在文件 vhdldocgen.cpp143 行定义.

144 {
145  QCString n=str;
146  int i=str.find(c);
147  if (i>0)
148  {
149  n=str.left(i);
150  str=str.remove(0,i+1);
151  }
152  return n;
153 }

引用了 QCString::find(), QCString::left() , 以及 QCString::remove().

被这些函数引用 writeUCFLink().

◆ startDot()

static void startDot ( TextStream t)
static

在文件 vhdldocgen.cpp243 行定义.

244 {
245  t << " digraph G { \n";
246  t << "rankdir=LR \n";
247  t << "concentrate=TRUE\n";
248  t << "stylesheet=\"doxygen.css\"\n";
249 }

被这些函数引用 VhdlDocGen::writeOverview().

◆ startFonts()

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

◆ startTable()

static void startTable ( TextStream t,
const QCString className 
)
static

在文件 vhdldocgen.cpp256 行定义.

257 {
258  t << className <<" [ shape=none , fontname=\"arial\", fontcolor=\"blue\" , \n";
259  t << "label=<<TABLE BORDER=\"0\" CELLBORDER=\"1\" CELLSPACING=\"0\">\n";
260 }

被这些函数引用 VhdlDocGen::writeOverview().

◆ writeClassToDot()

static void writeClassToDot ( TextStream t,
ClassDef cd 
)
static

在文件 vhdldocgen.cpp402 行定义.

403 {
404  t << "<TR><TD COLSPAN=\"2\" BGCOLOR=\"yellow\" ";
405  t << "PORT=\"";
406  t << cd->name();
407  t << "\" ";
408  t << "href=\"";
410  t << "\" ";
411  t << ">";
412  t << cd->name();
413  t << " </TD></TR>\n";
414 }

引用了 addHtmlExtensionIfMissing(), ClassDef::getOutputFileBase() , 以及 Definition::name().

被这些函数引用 VhdlDocGen::writeOverview().

◆ writeColumn()

static void writeColumn ( TextStream t,
const MemberDef md,
bool  start 
)
static

在文件 vhdldocgen.cpp313 行定义.

314 {
315  QCString toolTip;
316 
317  bool bidir=(md!=0 &&( qstricmp(md->typeString(),"inout")==0));
318 
319  if (md)
320  {
321  toolTip=md->briefDescriptionAsTooltip();
322  if (!toolTip.isEmpty())
323  {
324  QCString largs = md->argsString();
325  toolTip+=" [";
326  toolTip+=substitute(largs,"%"," ");
327  toolTip+="]";
328  }
329  }
330  if (start)
331  {
332  t <<"<TR>\n";
333  }
334 
335  t << "<TD ALIGN=\"LEFT\" ";
336  if (md)
337  {
338  t << "href=\"";
340  t << "#" << md->anchor();
341  t<<"\" ";
342 
343  t<<" TOOLTIP=\"";
344  if (!toolTip.isEmpty())
345  {
346  codify(t,toolTip);
347  }
348  else
349  {
350  QCString largs = md->argsString();
351  if (!largs.isEmpty())
352  {
353  largs=substitute(largs,"%"," ");
354  codify(t,largs);
355  }
356  }
357  t << "\" ";
358 
359  t << " PORT=\"";
360  t << md->name();
361  t << "\" ";
362  }
363  if (!toolTip.isEmpty())
364  {
365  // if (!toolTip.isEmpty())
366 
367  if (bidir)
368  t << "BGCOLOR=\"orange\">";
369  else
370  t << "BGCOLOR=\"azure\">";
371  }
372  else if (bidir)
373  {
374  t << "BGCOLOR=\"pink\">";
375  }
376  else
377  {
378  t << "BGCOLOR=\"lightgrey\">";
379  }
380  if (md)
381  {
382  t << md->name();
383  }
384  else
385  {
386  t << " \n";
387  }
388  t << "</TD>\n";
389 
390  if (!start)
391  {
392  t << "</TR>\n";
393  }
394 }

引用了 addHtmlExtensionIfMissing(), MemberDef::anchor(), MemberDef::argsString(), Definition::briefDescriptionAsTooltip(), codify(), MemberDef::getOutputFileBase(), QCString::isEmpty(), Definition::name(), qstricmp(), substitute() , 以及 MemberDef::typeString().

被这些函数引用 writeTable().

◆ writeLink()

◆ writeTable()

static void writeTable ( const std::vector< const MemberDef * > &  portList,
TextStream t 
)
static

在文件 vhdldocgen.cpp438 行定义.

439 {
440  std::vector<const MemberDef *> inPorts;
441  std::vector<const MemberDef *> outPorts;
442 
443  for (const auto &md : portList)
444  {
445  QCString qc=md->typeString();
446  if (qc=="in")
447  {
448  inPorts.push_back(md);
449  }
450  else
451  {
452  outPorts.push_back(md);
453  }
454  }
455 
456  size_t inp = inPorts.size();
457  size_t outp = outPorts.size();
458  size_t maxLen;
459 
460  if (inp>=outp)
461  {
462  maxLen=inp;
463  }
464  else
465  {
466  maxLen=outp;
467  }
468 
469  size_t i;
470  for (i=0;i<maxLen;i++)
471  {
472  //write inports
473  if (i<inp)
474  {
475  auto md = inPorts[i];
476  writeColumn(t,md,TRUE);
477  }
478  else
479  {
480  writeColumn(t,NULL,TRUE);
481  }
482 
483  if (i<outp)
484  {
485  auto md = outPorts[i];
486  writeColumn(t,md,FALSE);
487  }
488  else
489  {
490  writeColumn(t,NULL,FALSE);
491  }
492  }
493 }

引用了 FALSE, QCString::size(), TRUE , 以及 writeColumn().

被这些函数引用 VhdlDocGen::writeOverview().

◆ writeUCFLink()

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

在文件 vhdldocgen.cpp2380 行定义.

2381 {
2382 
2383  QCString largs(mdef->argsString());
2384  QCString n= splitString(largs, '#');
2385  // VhdlDocGen::adjustRecordMember(mdef);
2386  bool equ=(n.length()==largs.length());
2387 
2388  if (!equ)
2389  {
2390  ol.writeString(n);
2391  ol.docify(" ");
2392  ol.insertMemberAlign();
2393  }
2394 
2395  if (mdef->name().contains("dummy")==0)
2396  {
2397  writeLink(mdef,ol);
2398  }
2399  if (equ)
2400  {
2401  ol.insertMemberAlign();
2402  }
2403  ol.docify(" ");
2404  VhdlDocGen::formatString(largs,ol,mdef);
2405 }

引用了 MemberDef::argsString(), QCString::contains(), OutputList::docify(), VhdlDocGen::formatString(), OutputList::insertMemberAlign(), QCString::length(), Definition::name(), splitString(), writeLink() , 以及 OutputList::writeString().

被这些函数引用 VhdlDocGen::writeVHDLDeclaration().

◆ writeVhdlDotLink()

static void writeVhdlDotLink ( TextStream t,
const QCString a,
const QCString b,
const QCString style 
)
static

在文件 vhdldocgen.cpp262 行定义.

264 {
265  t << a << "->" << b;
266  if (!style.isEmpty())
267  {
268  t << "[style=" << style << "];\n";
269  }
270  t << "\n";
271 }

引用了 QCString::isEmpty().

被这些函数引用 VhdlDocGen::writeOverview() , 以及 writeVhdlEntityToolTip().

◆ writeVhdlEntityToolTip()

static void writeVhdlEntityToolTip ( TextStream t,
ClassDef cd 
)
static

在文件 vhdldocgen.cpp292 行定义.

293 {
294 
295  QCString brief=cd->briefDescription();
296 
297  if (brief.isEmpty()) return;
298 
299  brief=formatBriefNote(brief,cd);
300 
301  QCString node="node";
303  t << node <<"[shape=none margin=0.1, label=<\n";
304  t << "<TABLE BORDER=\"0\" CELLBORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"2\" >\n ";
305  t << "<TR><TD BGCOLOR=\"lightcyan\"> ";
306  t << brief;
307  t << " </TD></TR></TABLE>>];";
308  QCString dotn=cd->name()+":";
309  dotn+=cd->name();
310  writeVhdlDotLink(t,dotn,node,"dotted");
311 }

引用了 Definition::briefDescription(), formatBriefNote(), VhdlDocGen::getRecordNumber(), QCString::isEmpty(), Definition::name() , 以及 writeVhdlDotLink().

被这些函数引用 VhdlDocGen::writeOverview().

变量说明

◆ comment

const char* comment

在文件 vhdldocgen.cpp2870 行定义.

被这些函数引用 VhdlDocGen::parseUCF().

◆ decisionNode

const char* decisionNode

在文件 vhdldocgen.cpp2871 行定义.

◆ flowCol

struct { ... } flowCol
初始值:
=
{ "green",
"red",
"black",
"khaki",
"0.7 0.3 1.0",
"lightyellow",
"white",
"lightcyan"
}

被这些函数引用 FlowChart::buildCommentNodes(), FlowChart::writeEdge() , 以及 FlowChart::writeShape().

◆ flowList

◆ flowMember

const MemberDef* flowMember =0
static

在文件 vhdldocgen.cpp85 行定义.

被这些函数引用 VhdlDocGen::getFlowMember() , 以及 VhdlDocGen::setFlowMember().

◆ g_classList

std::vector<ClassDef*> g_classList
static

在文件 vhdldocgen.cpp595 行定义.

被这些函数引用 VhdlDocGen::findMemberDef() , 以及 VhdlDocGen::resetCodeVhdlParserState().

◆ g_packages

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

◆ g_varMap

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

在文件 vhdldocgen.cpp594 行定义.

被这些函数引用 VhdlDocGen::findMemberDef() , 以及 VhdlDocGen::resetCodeVhdlParserState().

◆ g_vhdlKeyWordSet0

const std::set< std::string > g_vhdlKeyWordSet0
static
初始值:
=
{
"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"
}

在文件 vhdldocgen.cpp507 行定义.

被这些函数引用 VhdlDocGen::findKeyWord().

◆ g_vhdlKeyWordSet1

const std::set< std::string> g_vhdlKeyWordSet1
static
初始值:
=
{
"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"
}

在文件 vhdldocgen.cpp533 行定义.

被这些函数引用 VhdlDocGen::findKeyWord().

◆ g_vhdlKeyWordSet2

const std::set< std::string > g_vhdlKeyWordSet2
static
初始值:
=
{
"abs","and","or","not","mod","xor","rem","xnor","ror","rol","sla","sll"
}

在文件 vhdldocgen.cpp541 行定义.

被这些函数引用 VhdlDocGen::findKeyWord().

◆ g_vhdlKeyWordSet3

const std::set< std::string > g_vhdlKeyWordSet3
static
初始值:
=
{
"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"
}

在文件 vhdldocgen.cpp547 行定义.

被这些函数引用 VhdlDocGen::findKeyWord().

◆ ifcounter

int ifcounter =0
static

在文件 vhdldocgen.cpp2859 行定义.

被这些函数引用 FlowChart::delFlowList(), FlowChart::FlowChart() , 以及 FlowChart::moveToPrevLevel().

◆ mdList

std::vector<const MemberDef*> mdList
static

在文件 vhdldocgen.cpp2728 行定义.

被这些函数引用 VhdlDocGen::createFlowChart() , 以及 findMemFlow().

◆ nodeCounter

int nodeCounter =0
static

在文件 vhdldocgen.cpp2860 行定义.

被这些函数引用 FlowChart::delFlowList() , 以及 FlowChart::FlowChart().

◆ noNodeLink

const char* noNodeLink

在文件 vhdldocgen.cpp2867 行定义.

◆ recordCounter

int recordCounter =0
static

在文件 vhdldocgen.cpp1097 行定义.

被这些函数引用 VhdlDocGen::getRecordNumber().

◆ startEndNode

const char* startEndNode

在文件 vhdldocgen.cpp2873 行定义.

◆ textNode

const char* textNode

在文件 vhdldocgen.cpp2874 行定义.

◆ textNodeLink

const char* textNodeLink

在文件 vhdldocgen.cpp2865 行定义.

◆ varNode

const char* varNode

在文件 vhdldocgen.cpp2872 行定义.

◆ yesNodeLink

const char* yesNodeLink

在文件 vhdldocgen.cpp2866 行定义.

TagInfo
This struct is used to capture the tag file information for an Entry.
Definition: entry.h:48
MemberType_Variable
@ MemberType_Variable
Definition: types.h:278
Normal
@ Normal
Definition: types.h:29
MemberDef::argsString
virtual QCString argsString() const =0
OutputList::docify
void docify(const QCString &s)
Definition: outputlist.h:137
QCString::length
uint length() const
Returns the length of the string, not counting the 0-terminator.
Definition: qcstring.h:147
ArgumentList
This class represents an function or template argument list.
Definition: arguments.h:59
MemberName::push_back
void push_back(Ptr &&p)
Definition: membername.h:68
QCString::isEmpty
bool isEmpty() const
Returns TRUE iff the string is empty
Definition: qcstring.h:144
TagInfo::tagName
QCString tagName
Definition: entry.h:50
OutputList::writeString
void writeString(const QCString &text)
Definition: outputlist.h:111
OutputList::insertMemberAlign
void insertMemberAlign(bool templ=FALSE)
Definition: outputlist.h:233
FlowChart::WHEN_NO
@ WHEN_NO
Definition: vhdldocgen.h:270
QCString::size
uint size() const
Returns the length of the string, not counting the 0-terminator.
Definition: qcstring.h:150
OutputList::endFontClass
void endFontClass()
Definition: outputlist.h:484
split
static std::vector< QCString > split(const QCString &str, const QCString &sep, bool allowEmptyEntries=FALSE, bool cleanup=TRUE)
Definition: template.cpp:47
MemberVector::push_back
void push_back(const MemberDef *md)
Definition: memberlist.h:42
VhdlDocGen::addBaseClass
static void addBaseClass(ClassDef *cd, ClassDef *ent)
Definition: vhdldocgen.cpp:2696
LinkedMap::add
T * add(const char *k, Args &&... args)
Adds a new object to the ordered vector if it was not added already.
Definition: linkedmap.h:103
codify
static void codify(TextStream &t, const QCString &str)
Definition: vhdldocgen.cpp:100
formatBriefNote
static QCString formatBriefNote(const QCString &brief, ClassDef *cd)
Definition: vhdldocgen.cpp:274
QCString::str
std::string str() const
Definition: qcstring.h:442
Public
@ Public
Definition: types.h:26
err
void err(const char *fmt,...)
Definition: message.cpp:203
createMemberDef
MemberDefMutable * createMemberDef(const QCString &defFileName, int defLine, int defColumn, const QCString &type, const QCString &name, const QCString &args, const QCString &excp, Protection prot, Specifier virt, bool stat, Relationship related, MemberType t, const ArgumentList &tal, const ArgumentList &al, const QCString &metaData)
Factory method to create a new instance of a MemberDef
Definition: memberdef.cpp:373
QCString::find
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:38
Definition::briefLine
virtual int briefLine() const =0
TagInfo::anchor
QCString anchor
Definition: entry.h:52
FlowChart::IF_NO
@ IF_NO
Definition: vhdldocgen.h:266
MemberDef::getReference
virtual QCString getReference() const =0
VhdlDocGen::PORT
@ PORT
Definition: vhdldocgen.h:98
MemberName
Definition: membername.h:24
QCString::contains
int contains(char c, bool cs=TRUE) const
Definition: qcstring.cpp:138
DefinitionMutable::setBodyDef
virtual void setBodyDef(const FileDef *fd)=0
reg
Namespace for the regular expression functions
Definition: regex.cpp:30
MemberDef::anchor
virtual QCString anchor() const =0
Member
@ Member
Definition: types.h:38
addHtmlExtensionIfMissing
QCString addHtmlExtensionIfMissing(const QCString &fName)
Definition: util.cpp:5275
QCString::stripWhiteSpace
QCString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
Definition: qcstring.h:243
Doxygen::functionNameLinkedMap
static MemberNameLinkedMap * functionNameLinkedMap
Definition: doxygen.h:94
QCString::left
QCString left(size_t len) const
Definition: qcstring.h:212
ClassDef::getOutputFileBase
virtual QCString getOutputFileBase() const =0
Returns the unique base name (without extension) of the class's file on disk
writeLink
static void writeLink(const MemberDef *mdef, OutputList &ol)
Definition: vhdldocgen.cpp:128
qstricmp
int qstricmp(const char *str1, const char *str2)
Definition: qcstring.cpp:433
Definition::name
virtual QCString name() const =0
FlowChart::CASE_NO
@ CASE_NO
Definition: vhdldocgen.h:269
VhdlDocGen::formatString
static void formatString(const QCString &, OutputList &ol, const MemberDef *)
Definition: vhdldocgen.cpp:1210
FlowChart::LOOP_NO
@ LOOP_NO
Definition: vhdldocgen.h:282
parseCommentAsText
QCString parseCommentAsText(const Definition *scope, const MemberDef *md, const QCString &doc, const QCString &fileName, int lineNr)
Definition: util.cpp:5738
FlowChart::FOR_NO
@ FOR_NO
Definition: vhdldocgen.h:276
Entry::moveToSubEntryAndKeep
void moveToSubEntryAndKeep(Entry *e)
Definition: entry.cpp:146
VhdlDocGen::isSubClass
static bool isSubClass(ClassDef *cd, ClassDef *scd, bool followInstances, int level)
Definition: vhdldocgen.cpp:2665
VhdlDocGen::getRecordNumber
static QCString getRecordNumber()
Definition: vhdldocgen.cpp:1103
Definition::briefDescription
virtual QCString briefDescription(bool abbreviate=FALSE) const =0
TRUE
#define TRUE
Definition: qcstring.h:36
Definition::getStartBodyLine
virtual int getStartBodyLine() const =0
Portable::system
int system(const QCString &command, const QCString &args, bool commandHasConsole=true)
Definition: portable.cpp:42
MemberListType_variableMembers
@ MemberListType_variableMembers
Definition: types.h:142
VhdlDocGen::UCF_CONST
@ UCF_CONST
Definition: vhdldocgen.h:108
FlowChart::WHILE_NO
@ WHILE_NO
Definition: vhdldocgen.h:277
writeColumn
static void writeColumn(TextStream &t, const MemberDef *md, bool start)
Definition: vhdldocgen.cpp:313
VhdlDocGen::deleteAllChars
static void deleteAllChars(QCString &s, char c)
Definition: vhdldocgen.cpp:1085
splitString
static QCString splitString(QCString &str, char c)
Definition: vhdldocgen.cpp:143
substitute
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
Definition: qcstring.cpp:465
MemberDef::getOutputFileBase
virtual QCString getOutputFileBase() const =0
membersHaveSpecificType
static bool membersHaveSpecificType(const MemberList *ml, uint64 type)
Definition: vhdldocgen.cpp:2078
VhdlDocGen::INSTANTIATION
@ INSTANTIATION
Definition: vhdldocgen.h:101
QCString::remove
QCString & remove(size_t index, size_t len)
Definition: qcstring.h:354
QCString::append
QCString & append(char c)
Definition: qcstring.h:318
reg::Ex
Class representing a regular expression.
Definition: regex.h:48
FlowChart::ELSIF_NO
@ ELSIF_NO
Definition: vhdldocgen.h:267
Config_getString
#define Config_getString(name)
Definition: config.h:32
Definition::getDefFileName
virtual QCString getDefFileName() const =0
OutputList::startFontClass
void startFontClass(const QCString &c)
Definition: outputlist.h:482
QCString::data
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string
Definition: qcstring.h:153
ClassDef::getMemberList
virtual MemberList * getMemberList(MemberListType lt) const =0
Returns the members in the list identified by lt
TagInfo::fileName
QCString fileName
Definition: entry.h:51
FileDef
A model of a file symbol.
Definition: filedef.h:73
SrcLangExt_VHDL
@ SrcLangExt_VHDL
Definition: types.h:54
Entry::VARIABLE_SEC
@ VARIABLE_SEC
Definition: entry.h:96
mdList
static std::vector< const MemberDef * > mdList
Definition: vhdldocgen.cpp:2728
OutputList::writeObjectLink
void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)
Definition: outputlist.h:141
Definition::briefDescriptionAsTooltip
virtual QCString briefDescriptionAsTooltip() const =0
MemberDef::typeString
virtual QCString typeString() const =0
MemberList
A list of MemberDef objects as shown in documentation sections.
Definition: memberlist.h:81
QCString::stripPrefix
bool stripPrefix(const QCString &prefix)
Definition: qcstring.h:197
QCString::resize
bool resize(size_t newlen)
Resizes the string to hold newlen characters (this value should also count the 0-terminator).
Definition: qcstring.h:164
writeVhdlDotLink
static void writeVhdlDotLink(TextStream &t, const QCString &a, const QCString &b, const QCString &style)
Definition: vhdldocgen.cpp:262
findIndex
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:7319
FALSE
#define FALSE
Definition: qcstring.h:33
QCString
This is an alternative implementation of QCString.
Definition: qcstring.h:108