Doxygen
TagFileParser类 参考

Tag file parser. 更多...

+ TagFileParser 的协作图:

Public 类型

enum  State {
  Invalid, InClass, InConcept, InFile,
  InNamespace, InGroup, InPage, InMember,
  InEnumValue, InPackage, InDir, InTempArgList
}
 

Public 成员函数

 TagFileParser (const char *tagName)
 
void setDocumentLocator (const XMLLocator *locator)
 
void startDocument ()
 
void startElement (const QCString &name, const XMLHandlers::Attributes &attrib)
 
void endElement (const QCString &name)
 
void characters (const QCString &ch)
 
void error (const QCString &fileName, int lineNr, const QCString &msg)
 
void dump ()
 
void buildLists (const std::shared_ptr< Entry > &root)
 
void addIncludes ()
 
void startCompound (const XMLHandlers::Attributes &attrib)
 
void endCompound ()
 
void startMember (const XMLHandlers::Attributes &attrib)
 
void endMember ()
 
void startEnumValue (const XMLHandlers::Attributes &attrib)
 
void endEnumValue ()
 
void endDocAnchor ()
 
void endClass ()
 
void endConcept ()
 
void endNamespace ()
 
void endFile ()
 
void endPage ()
 
void endDir ()
 
void startStringValue (const XMLHandlers::Attributes &)
 
void startDocAnchor (const XMLHandlers::Attributes &attrib)
 
void endType ()
 
void endName ()
 
void startBase (const XMLHandlers::Attributes &attrib)
 
void endBase ()
 
void startIncludes (const XMLHandlers::Attributes &attrib)
 
void endIncludes ()
 
void endTemplateArg ()
 
void endFilename ()
 
void endPath ()
 
void endAnchor ()
 
void endClangId ()
 
void endAnchorFile ()
 
void endArglist ()
 
void endTitle ()
 
void endSubgroup ()
 
void startIgnoreElement (const XMLHandlers::Attributes &)
 
void endIgnoreElement ()
 
void buildMemberList (const std::shared_ptr< Entry > &ce, const std::vector< TagMemberInfo > &members)
 
void addDocAnchors (const std::shared_ptr< Entry > &e, const std::vector< TagAnchorInfo > &l)
 

Private 成员函数

void warn (const char *fmt)
 
void warn (const char *fmt, const char *s)
 

Private 属性

std::vector< std::unique_ptr< TagCompoundInfo > > m_tagFileCompounds
 
std::unique_ptr< TagCompoundInfom_curCompound
 
TagMemberInfo m_curMember
 
TagEnumValueInfo m_curEnumValue
 
TagIncludeInfo m_curIncludes
 
QCString m_curString
 
QCString m_tagName
 
QCString m_fileName
 
QCString m_title
 
State m_state = Invalid
 
std::stack< Statem_stateStack
 
const XMLLocatorm_locator = nullptr
 

详细描述

Tag file parser.

Reads an XML-structured tagfile and builds up the structure in memory. The method buildLists() is used to transfer/translate the structures to the doxygen engine.

在文件 tagreader.cpp270 行定义.

成员枚举类型说明

◆ State

枚举值
Invalid 
InClass 
InConcept 
InFile 
InNamespace 
InGroup 
InPage 
InMember 
InEnumValue 
InPackage 
InDir 
InTempArgList 

在文件 tagreader.cpp804 行定义.

804  { Invalid,
805  InClass,
806  InConcept,
807  InFile,
808  InNamespace,
809  InGroup,
810  InPage,
811  InMember,
812  InEnumValue,
813  InPackage,
814  InDir,
816  };

构造及析构函数说明

◆ TagFileParser()

TagFileParser::TagFileParser ( const char *  tagName)
inline

在文件 tagreader.cpp273 行定义.

273 : m_tagName(tagName) {}

成员函数说明

◆ addDocAnchors()

void TagFileParser::addDocAnchors ( const std::shared_ptr< Entry > &  e,
const std::vector< TagAnchorInfo > &  l 
)

在文件 tagreader.cpp1160 行定义.

1161 {
1162  for (const auto &ta : l)
1163  {
1164  if (SectionManager::instance().find(QCString(ta.label))==0)
1165  {
1166  //printf("New sectionInfo file=%s anchor=%s\n",
1167  // qPrint(ta->fileName),qPrint(ta->label));
1169  ta.label,ta.fileName,-1,ta.title,
1171  e->anchors.push_back(si);
1172  }
1173  else
1174  {
1175  warn("Duplicate anchor %s found",qPrint(ta.label));
1176  }
1177  }
1178 }

引用了 SectionManager::add(), Anchor, SectionManager::instance(), m_tagName, qPrint() , 以及 warn().

被这些函数引用 buildLists() , 以及 buildMemberList().

◆ addIncludes()

void TagFileParser::addIncludes ( )

在文件 tagreader.cpp1524 行定义.

1525 {
1526  for (const auto &comp : m_tagFileCompounds)
1527  {
1528  if (comp->compoundType()==TagCompoundInfo::CompoundType::File)
1529  {
1530  const TagFileInfo *tfi = TagFileInfo::get(comp);
1531  //printf("tag file tagName=%s path=%s name=%s\n",qPrint(m_tagName),qPrint(tfi->path),qPrint(tfi->name));
1533  if (fn)
1534  {
1535  for (const auto &fd : *fn)
1536  {
1537  //printf("input file path=%s name=%s\n",qPrint(fd->getPath()),qPrint(fd->name()));
1538  if (fd->getPath()==QCString(m_tagName+":"+tfi->path))
1539  {
1540  //printf("found\n");
1541  for (const auto &ii : tfi->includes)
1542  {
1543  //printf("ii->name='%s'\n",qPrint(ii->name));
1544  FileName *ifn = Doxygen::inputNameLinkedMap->find(ii.name);
1545  ASSERT(ifn!=0);
1546  if (ifn)
1547  {
1548  for (const auto &ifd : *ifn)
1549  {
1550  //printf("ifd->getOutputFileBase()=%s ii->id=%s\n",
1551  // qPrint(ifd->getOutputFileBase()),qPrint(ii->id));
1552  if (ifd->getOutputFileBase()==QCString(ii.id))
1553  {
1554  fd->addIncludeDependency(ifd.get(),ii.text,ii.isLocal,ii.isImported);
1555  }
1556  }
1557  }
1558  }
1559  }
1560  }
1561  }
1562  }
1563  }
1564 }

引用了 ASSERT, TagCompoundInfo::File, LinkedMap< T, Hash, KeyEqual, Map >::find(), TagFileInfo::get(), TagFileInfo::includes, Doxygen::inputNameLinkedMap, m_tagFileCompounds, m_tagName, TagCompoundInfo::name , 以及 TagFileInfo::path.

被这些函数引用 parseTagFile().

◆ buildLists()

void TagFileParser::buildLists ( const std::shared_ptr< Entry > &  root)

Injects the info gathered by the XML parser into the Entry tree. This tree contains the information extracted from the input in a "unrelated" form.

在文件 tagreader.cpp1299 行定义.

1300 {
1301  // build class list
1302  for (const auto &comp : m_tagFileCompounds)
1303  {
1304  if (comp->compoundType()==TagCompoundInfo::CompoundType::Class)
1305  {
1306  const TagClassInfo *tci = TagClassInfo::get(comp);
1307  std::shared_ptr<Entry> ce = std::make_shared<Entry>();
1308  ce->section = Entry::CLASS_SEC;
1309  switch (tci->kind)
1310  {
1311  case TagClassInfo::Kind::Class: break;
1312  case TagClassInfo::Kind::Struct: ce->spec = Entry::Struct; break;
1313  case TagClassInfo::Kind::Union: ce->spec = Entry::Union; break;
1314  case TagClassInfo::Kind::Interface: ce->spec = Entry::Interface; break;
1315  case TagClassInfo::Kind::Enum: ce->spec = Entry::Enum; break;
1316  case TagClassInfo::Kind::Exception: ce->spec = Entry::Exception; break;
1317  case TagClassInfo::Kind::Protocol: ce->spec = Entry::Protocol; break;
1318  case TagClassInfo::Kind::Category: ce->spec = Entry::Category; break;
1319  case TagClassInfo::Kind::Service: ce->spec = Entry::Service; break;
1320  case TagClassInfo::Kind::Singleton: ce->spec = Entry::Singleton; break;
1321  case TagClassInfo::Kind::None: // should never happen, means not properly initialized
1322  assert(tci->kind != TagClassInfo::Kind::None);
1323  break;
1324  }
1325  ce->name = tci->name;
1327  {
1328  ce->name+="-p";
1329  }
1330  addDocAnchors(ce,tci->docAnchors);
1331  ce->tagInfoData.tagName = m_tagName;
1332  ce->tagInfoData.anchor = tci->anchor;
1333  ce->tagInfoData.fileName = tci->filename;
1334  ce->startLine = tci->lineNr;
1335  ce->hasTagInfo = TRUE;
1336  ce->id = tci->clangId;
1337  ce->lang = tci->isObjC ? SrcLangExt_ObjC : SrcLangExt_Unknown;
1338  // transfer base class list
1339  ce->extends = tci->bases;
1340  if (!tci->templateArguments.empty())
1341  {
1342  ArgumentList al;
1343  for (const auto &argName : tci->templateArguments)
1344  {
1345  Argument a;
1346  a.type = "class";
1347  a.name = argName.c_str();
1348  al.push_back(a);
1349  }
1350  ce->tArgLists.push_back(al);
1351  }
1352 
1353  buildMemberList(ce,tci->members);
1354  root->moveToSubEntryAndKeep(ce);
1355  }
1356  }
1357 
1358  // build file list
1359  for (const auto &comp : m_tagFileCompounds)
1360  {
1361  if (comp->compoundType()==TagCompoundInfo::CompoundType::File)
1362  {
1363  const TagFileInfo *tfi = TagFileInfo::get(comp);
1364 
1365  std::shared_ptr<Entry> fe = std::make_shared<Entry>();
1366  fe->section = guessSection(tfi->name);
1367  fe->name = tfi->name;
1368  addDocAnchors(fe,tfi->docAnchors);
1369  fe->tagInfoData.tagName = m_tagName;
1370  fe->tagInfoData.fileName = tfi->filename;
1371  fe->hasTagInfo = TRUE;
1372 
1373  QCString fullName = m_tagName+":"+tfi->path+stripPath(tfi->name);
1374  fe->fileName = fullName;
1375  fe->startLine = tfi->lineNr;
1376  //printf("createFileDef() filename=%s\n",qPrint(tfi->filename));
1377  QCString tagid = m_tagName+":"+tfi->path;
1378  std::unique_ptr<FileDef> fd { createFileDef(tagid,
1379  tfi->name,m_tagName,
1380  tfi->filename) };
1381  FileName *mn;
1382  if ((mn=Doxygen::inputNameLinkedMap->find(tfi->name)))
1383  {
1384  mn->push_back(std::move(fd));
1385  }
1386  else
1387  {
1388  mn = Doxygen::inputNameLinkedMap->add(tfi->name,fullName);
1389  mn->push_back(std::move(fd));
1390  }
1391  buildMemberList(fe,tfi->members);
1392  root->moveToSubEntryAndKeep(fe);
1393  }
1394  }
1395 
1396  // build concept list
1397  for (const auto &comp : m_tagFileCompounds)
1398  {
1399  if (comp->compoundType()==TagCompoundInfo::CompoundType::Concept)
1400  {
1401  const TagConceptInfo *tci = TagConceptInfo::get(comp);
1402 
1403  std::shared_ptr<Entry> ce = std::make_shared<Entry>();
1404  ce->section = Entry::CONCEPT_SEC;
1405  ce->name = tci->name;
1406  addDocAnchors(ce,tci->docAnchors);
1407  ce->tagInfoData.tagName = m_tagName;
1408  ce->tagInfoData.fileName = tci->filename;
1409  ce->startLine = tci->lineNr;
1410  ce->hasTagInfo = TRUE;
1411  ce->id = tci->clangId;
1412 
1413  root->moveToSubEntryAndKeep(ce);
1414  }
1415  }
1416 
1417  // build namespace list
1418  for (const auto &comp : m_tagFileCompounds)
1419  {
1420  if (comp->compoundType()==TagCompoundInfo::CompoundType::Namespace)
1421  {
1422  const TagNamespaceInfo *tni = TagNamespaceInfo::get(comp);
1423 
1424  std::shared_ptr<Entry> ne = std::make_shared<Entry>();
1425  ne->section = Entry::NAMESPACE_SEC;
1426  ne->name = tni->name;
1427  addDocAnchors(ne,tni->docAnchors);
1428  ne->tagInfoData.tagName = m_tagName;
1429  ne->tagInfoData.fileName = tni->filename;
1430  ne->startLine = tni->lineNr;
1431  ne->hasTagInfo = TRUE;
1432  ne->id = tni->clangId;
1433 
1434  buildMemberList(ne,tni->members);
1435  root->moveToSubEntryAndKeep(ne);
1436  }
1437  }
1438 
1439  // build package list
1440  for (const auto &comp : m_tagFileCompounds)
1441  {
1442  if (comp->compoundType()==TagCompoundInfo::CompoundType::Package)
1443  {
1444  const TagPackageInfo *tpgi = TagPackageInfo::get(comp);
1445 
1446  std::shared_ptr<Entry> pe = std::make_shared<Entry>();
1447  pe->section = Entry::PACKAGE_SEC;
1448  pe->name = tpgi->name;
1449  addDocAnchors(pe,tpgi->docAnchors);
1450  pe->tagInfoData.tagName = m_tagName;
1451  pe->tagInfoData.fileName = tpgi->filename;
1452  pe->startLine = tpgi->lineNr;
1453  pe->hasTagInfo = TRUE;
1454 
1455  buildMemberList(pe,tpgi->members);
1456  root->moveToSubEntryAndKeep(pe);
1457  }
1458  }
1459 
1460  // build group list
1461  for (const auto &comp : m_tagFileCompounds)
1462  {
1463  if (comp->compoundType()==TagCompoundInfo::CompoundType::Group)
1464  {
1465  const TagGroupInfo *tgi = TagGroupInfo::get(comp);
1466 
1467  std::shared_ptr<Entry> ge = std::make_shared<Entry>();
1468  ge->section = Entry::GROUPDOC_SEC;
1469  ge->name = tgi->name;
1470  ge->type = tgi->title;
1471  addDocAnchors(ge,tgi->docAnchors);
1472  ge->tagInfoData.tagName = m_tagName;
1473  ge->tagInfoData.fileName = tgi->filename;
1474  ge->startLine = tgi->lineNr;
1475  ge->hasTagInfo = TRUE;
1476 
1477  buildMemberList(ge,tgi->members);
1478  root->moveToSubEntryAndKeep(ge);
1479  }
1480  }
1481 
1482  for (const auto &comp : m_tagFileCompounds)
1483  {
1484  if (comp->compoundType()==TagCompoundInfo::CompoundType::Group)
1485  {
1486  const TagGroupInfo *tgi = TagGroupInfo::get(comp);
1487  // set subgroup relations bug_774118
1488 
1489  for (const auto &sg : tgi->subgroupList)
1490  {
1491  const auto &children = root->children();
1492  auto i = std::find_if(children.begin(),children.end(),
1493  [&](const std::shared_ptr<Entry> &e) { return e->name == sg.c_str(); });
1494  if (i!=children.end())
1495  {
1496  (*i)->groups.push_back(Grouping(tgi->name,Grouping::GROUPING_INGROUP));
1497  }
1498  }
1499  }
1500  }
1501 
1502  // build page list
1503  for (const auto &comp : m_tagFileCompounds)
1504  {
1505  if (comp->compoundType()==TagCompoundInfo::CompoundType::Page)
1506  {
1507  const TagPageInfo *tpi = TagPageInfo::get(comp);
1508 
1509  std::shared_ptr<Entry> pe = std::make_shared<Entry>();
1510  bool isIndex = (stripExtensionGeneral(tpi->filename,getFileNameExtension(tpi->filename))=="index");
1511  pe->section = isIndex ? Entry::MAINPAGEDOC_SEC : Entry::PAGEDOC_SEC;
1512  pe->name = tpi->name;
1513  pe->args = tpi->title;
1514  addDocAnchors(pe,tpi->docAnchors);
1515  pe->tagInfoData.tagName = m_tagName;
1516  pe->tagInfoData.fileName = tpi->filename;
1517  pe->startLine = tpi->lineNr;
1518  pe->hasTagInfo = TRUE;
1519  root->moveToSubEntryAndKeep(pe);
1520  }
1521  }
1522 }

引用了 LinkedMap< T, Hash, KeyEqual, Map >::add(), addDocAnchors(), TagClassInfo::anchor, TagClassInfo::bases, buildMemberList(), TagClassInfo::Category, Entry::Category, TagClassInfo::clangId, TagConceptInfo::clangId, TagNamespaceInfo::clangId, TagCompoundInfo::Class, TagClassInfo::Class, Entry::CLASS_SEC, TagCompoundInfo::Concept, Entry::CONCEPT_SEC, createFileDef(), TagCompoundInfo::docAnchors, TagClassInfo::Enum, Entry::Enum, TagClassInfo::Exception, Entry::Exception, TagCompoundInfo::File, TagCompoundInfo::filename, TagClassInfo::get(), TagConceptInfo::get(), TagNamespaceInfo::get(), TagPackageInfo::get(), TagFileInfo::get(), TagGroupInfo::get(), TagPageInfo::get(), getFileNameExtension(), TagCompoundInfo::Group, Entry::GROUPDOC_SEC, Grouping::GROUPING_INGROUP, guessSection(), Doxygen::inputNameLinkedMap, TagClassInfo::Interface, Entry::Interface, TagClassInfo::isObjC, TagClassInfo::kind, TagCompoundInfo::lineNr, m_tagFileCompounds, m_tagName, Entry::MAINPAGEDOC_SEC, TagCompoundInfo::members, Argument::name, TagCompoundInfo::name, TagCompoundInfo::Namespace, Entry::NAMESPACE_SEC, TagClassInfo::None, TagCompoundInfo::Package, Entry::PACKAGE_SEC, TagCompoundInfo::Page, Entry::PAGEDOC_SEC, TagFileInfo::path, TagClassInfo::Protocol, Entry::Protocol, ArgumentList::push_back(), TagClassInfo::Service, Entry::Service, TagClassInfo::Singleton, Entry::Singleton, SrcLangExt_ObjC, SrcLangExt_Unknown, stripExtensionGeneral(), stripPath(), TagClassInfo::Struct, Entry::Struct, TagGroupInfo::subgroupList, TagClassInfo::templateArguments, TagGroupInfo::title, TagPageInfo::title, TRUE, Argument::type, TagClassInfo::Union , 以及 Entry::Union.

被这些函数引用 parseTagFile().

◆ buildMemberList()

void TagFileParser::buildMemberList ( const std::shared_ptr< Entry > &  ce,
const std::vector< TagMemberInfo > &  members 
)

在文件 tagreader.cpp1180 行定义.

1181 {
1182  for (const auto &tmi : members)
1183  {
1184  std::shared_ptr<Entry> me = std::make_shared<Entry>();
1185  me->type = tmi.type;
1186  me->name = tmi.name;
1187  me->args = tmi.arglist;
1188  if (!me->args.isEmpty())
1189  {
1190  me->argList = *stringToArgumentList(SrcLangExt_Cpp,me->args);
1191  }
1192  if (tmi.enumValues.size()>0)
1193  {
1194  me->spec |= Entry::Strong;
1195  for (const auto &evi : tmi.enumValues)
1196  {
1197  std::shared_ptr<Entry> ev = std::make_shared<Entry>();
1198  ev->type = "@";
1199  ev->name = evi.name;
1200  ev->id = evi.clangid;
1201  ev->section = Entry::VARIABLE_SEC;
1202  ev->tagInfoData.tagName = m_tagName;
1203  ev->tagInfoData.anchor = evi.anchor;
1204  ev->tagInfoData.fileName = evi.file;
1205  ev->hasTagInfo = TRUE;
1206  me->moveToSubEntryAndKeep(ev);
1207  }
1208  }
1209  me->protection = tmi.prot;
1210  me->virt = tmi.virt;
1211  me->stat = tmi.isStatic;
1212  me->fileName = ce->fileName;
1213  me->id = tmi.clangId;
1214  me->startLine = tmi.lineNr;
1215  if (ce->section == Entry::GROUPDOC_SEC)
1216  {
1217  me->groups.push_back(Grouping(ce->name,Grouping::GROUPING_INGROUP));
1218  }
1219  addDocAnchors(me,tmi.docAnchors);
1220  me->tagInfoData.tagName = m_tagName;
1221  me->tagInfoData.anchor = tmi.anchor;
1222  me->tagInfoData.fileName = tmi.anchorFile;
1223  me->hasTagInfo = TRUE;
1224  if (tmi.kind=="define")
1225  {
1226  me->type="#define";
1227  me->section = Entry::DEFINE_SEC;
1228  }
1229  else if (tmi.kind=="enumvalue")
1230  {
1231  me->section = Entry::VARIABLE_SEC;
1232  me->mtype = Method;
1233  }
1234  else if (tmi.kind=="property")
1235  {
1236  me->section = Entry::VARIABLE_SEC;
1237  me->mtype = Property;
1238  }
1239  else if (tmi.kind=="event")
1240  {
1241  me->section = Entry::VARIABLE_SEC;
1242  me->mtype = Event;
1243  }
1244  else if (tmi.kind=="variable")
1245  {
1246  me->section = Entry::VARIABLE_SEC;
1247  me->mtype = Method;
1248  }
1249  else if (tmi.kind=="typedef")
1250  {
1251  me->section = Entry::VARIABLE_SEC; //Entry::TYPEDEF_SEC;
1252  me->type.prepend("typedef ");
1253  me->mtype = Method;
1254  }
1255  else if (tmi.kind=="enumeration")
1256  {
1257  me->section = Entry::ENUM_SEC;
1258  me->mtype = Method;
1259  }
1260  else if (tmi.kind=="function")
1261  {
1262  me->section = Entry::FUNCTION_SEC;
1263  me->mtype = Method;
1264  }
1265  else if (tmi.kind=="signal")
1266  {
1267  me->section = Entry::FUNCTION_SEC;
1268  me->mtype = Signal;
1269  }
1270  else if (tmi.kind=="prototype")
1271  {
1272  me->section = Entry::FUNCTION_SEC;
1273  me->mtype = Method;
1274  }
1275  else if (tmi.kind=="friend")
1276  {
1277  me->section = Entry::FUNCTION_SEC;
1278  me->type.prepend("friend ");
1279  me->mtype = Method;
1280  }
1281  else if (tmi.kind=="dcop")
1282  {
1283  me->section = Entry::FUNCTION_SEC;
1284  me->mtype = DCOP;
1285  }
1286  else if (tmi.kind=="slot")
1287  {
1288  me->section = Entry::FUNCTION_SEC;
1289  me->mtype = Slot;
1290  }
1291  ce->moveToSubEntryAndKeep(me);
1292  }
1293 }

引用了 addDocAnchors(), DCOP, Entry::DEFINE_SEC, Entry::ENUM_SEC, Event, Entry::FUNCTION_SEC, Entry::GROUPDOC_SEC, Grouping::GROUPING_INGROUP, m_tagName, Method, Property, Signal, Slot, SrcLangExt_Cpp, stringToArgumentList(), Entry::Strong, TRUE , 以及 Entry::VARIABLE_SEC.

被这些函数引用 buildLists().

◆ characters()

void TagFileParser::characters ( const QCString ch)
inline

在文件 tagreader.cpp287 行定义.

287 { m_curString+=ch; }

引用了 m_curString.

被这些函数引用 parseTagFile().

◆ dump()

void TagFileParser::dump ( )

Dumps the internal structures. For debugging only!

在文件 tagreader.cpp989 行定义.

990 {
991  msg("Result:\n");
992  //============== CLASSES
993  for (const auto &comp : m_tagFileCompounds)
994  {
995  if (comp->compoundType()==TagCompoundInfo::CompoundType::Class)
996  {
997  const TagClassInfo *cd = TagClassInfo::get(comp);
998  msg("class '%s'\n",qPrint(cd->name));
999  msg(" filename '%s'\n",qPrint(cd->filename));
1000  for (const BaseInfo &bi : cd->bases)
1001  {
1002  msg( " base: %s \n", bi.name.isEmpty() ? "" : qPrint(bi.name) );
1003  }
1004 
1005  for (const auto &md : cd->members)
1006  {
1007  msg(" member:\n");
1008  msg(" kind: '%s'\n",qPrint(md.kind));
1009  msg(" name: '%s'\n",qPrint(md.name));
1010  msg(" anchor: '%s'\n",qPrint(md.anchor));
1011  msg(" arglist: '%s'\n",qPrint(md.arglist));
1012  }
1013  }
1014  }
1015  //============== CONCEPTS
1016  for (const auto &comp : m_tagFileCompounds)
1017  {
1018  if (comp->compoundType()==TagCompoundInfo::CompoundType::Concept)
1019  {
1020  const TagConceptInfo *cd = TagConceptInfo::get(comp);
1021 
1022  msg("concept '%s'\n",qPrint(cd->name));
1023  msg(" filename '%s'\n",qPrint(cd->filename));
1024  }
1025  }
1026  //============== NAMESPACES
1027  for (const auto &comp : m_tagFileCompounds)
1028  {
1029  if (comp->compoundType()==TagCompoundInfo::CompoundType::Namespace)
1030  {
1031  const TagNamespaceInfo *nd = TagNamespaceInfo::get(comp);
1032 
1033  msg("namespace '%s'\n",qPrint(nd->name));
1034  msg(" filename '%s'\n",qPrint(nd->filename));
1035  for (const auto &cls : nd->classList)
1036  {
1037  msg( " class: %s \n", cls.c_str() );
1038  }
1039 
1040  for (const auto &md : nd->members)
1041  {
1042  msg(" member:\n");
1043  msg(" kind: '%s'\n",qPrint(md.kind));
1044  msg(" name: '%s'\n",qPrint(md.name));
1045  msg(" anchor: '%s'\n",qPrint(md.anchor));
1046  msg(" arglist: '%s'\n",qPrint(md.arglist));
1047  }
1048  }
1049  }
1050 
1051  //============== FILES
1052  for (const auto &comp : m_tagFileCompounds)
1053  {
1054  if (comp->compoundType()==TagCompoundInfo::CompoundType::File)
1055  {
1056  const TagFileInfo *fd = TagFileInfo::get(comp);
1057 
1058  msg("file '%s'\n",qPrint(fd->name));
1059  msg(" filename '%s'\n",qPrint(fd->filename));
1060  for (const auto &ns : fd->namespaceList)
1061  {
1062  msg( " namespace: %s \n", ns.c_str() );
1063  }
1064  for (const auto &cs : fd->classList)
1065  {
1066  msg( " class: %s \n", cs.c_str() );
1067  }
1068 
1069  for (const auto &md : fd->members)
1070  {
1071  msg(" member:\n");
1072  msg(" kind: '%s'\n",qPrint(md.kind));
1073  msg(" name: '%s'\n",qPrint(md.name));
1074  msg(" anchor: '%s'\n",qPrint(md.anchor));
1075  msg(" arglist: '%s'\n",qPrint(md.arglist));
1076  }
1077 
1078  for (const auto &ii : fd->includes)
1079  {
1080  msg(" includes id: %s name: %s\n",qPrint(ii.id),qPrint(ii.name));
1081  }
1082  }
1083  }
1084 
1085  //============== GROUPS
1086  for (const auto &comp : m_tagFileCompounds)
1087  {
1088  if (comp->compoundType()==TagCompoundInfo::CompoundType::Group)
1089  {
1090  const TagGroupInfo *gd = TagGroupInfo::get(comp);
1091  msg("group '%s'\n",qPrint(gd->name));
1092  msg(" filename '%s'\n",qPrint(gd->filename));
1093 
1094  for (const auto &ns : gd->namespaceList)
1095  {
1096  msg( " namespace: %s \n", ns.c_str() );
1097  }
1098  for (const auto &cs : gd->classList)
1099  {
1100  msg( " class: %s \n", cs.c_str() );
1101  }
1102  for (const auto &fi : gd->fileList)
1103  {
1104  msg( " file: %s \n", fi.c_str() );
1105  }
1106  for (const auto &sg : gd->subgroupList)
1107  {
1108  msg( " subgroup: %s \n", sg.c_str() );
1109  }
1110  for (const auto &pg : gd->pageList)
1111  {
1112  msg( " page: %s \n", pg.c_str() );
1113  }
1114 
1115  for (const auto &md : gd->members)
1116  {
1117  msg(" member:\n");
1118  msg(" kind: '%s'\n",qPrint(md.kind));
1119  msg(" name: '%s'\n",qPrint(md.name));
1120  msg(" anchor: '%s'\n",qPrint(md.anchor));
1121  msg(" arglist: '%s'\n",qPrint(md.arglist));
1122  }
1123  }
1124  }
1125 
1126  //============== PAGES
1127  for (const auto &comp : m_tagFileCompounds)
1128  {
1129  if (comp->compoundType()==TagCompoundInfo::CompoundType::Page)
1130  {
1131  const TagPageInfo *pd = TagPageInfo::get(comp);
1132  msg("page '%s'\n",qPrint(pd->name));
1133  msg(" title '%s'\n",qPrint(pd->title));
1134  msg(" filename '%s'\n",qPrint(pd->filename));
1135  }
1136  }
1137 
1138  //============== DIRS
1139  for (const auto &comp : m_tagFileCompounds)
1140  {
1141  if (comp->compoundType()==TagCompoundInfo::CompoundType::Dir)
1142  {
1143  const TagDirInfo *dd = TagDirInfo::get(comp);
1144  {
1145  msg("dir '%s'\n",qPrint(dd->name));
1146  msg(" path '%s'\n",qPrint(dd->path));
1147  for (const auto &fi : dd->fileList)
1148  {
1149  msg( " file: %s \n", fi.c_str() );
1150  }
1151  for (const auto &sd : dd->subdirList)
1152  {
1153  msg( " subdir: %s \n", sd.c_str() );
1154  }
1155  }
1156  }
1157  }
1158 }

引用了 TagClassInfo::bases, TagCompoundInfo::Class, TagNamespaceInfo::classList, TagFileInfo::classList, TagGroupInfo::classList, TagCompoundInfo::Concept, TagCompoundInfo::Dir, TagCompoundInfo::File, TagGroupInfo::fileList, TagDirInfo::fileList, TagCompoundInfo::filename, TagClassInfo::get(), TagConceptInfo::get(), TagNamespaceInfo::get(), TagFileInfo::get(), TagGroupInfo::get(), TagPageInfo::get(), TagDirInfo::get(), TagCompoundInfo::Group, TagFileInfo::includes, QCString::isEmpty(), m_tagFileCompounds, TagCompoundInfo::members, msg(), BaseInfo::name, TagCompoundInfo::name, TagCompoundInfo::Namespace, TagFileInfo::namespaceList, TagGroupInfo::namespaceList, TagCompoundInfo::Page, TagGroupInfo::pageList, TagDirInfo::path, qPrint(), TagDirInfo::subdirList, TagGroupInfo::subgroupList , 以及 TagPageInfo::title.

◆ endAnchor()

void TagFileParser::endAnchor ( )
inline

在文件 tagreader.cpp702 行定义.

703  {
704  if (m_state==InMember)
705  {
707  }
708  else if (m_state==InClass)
709  {
711  }
712  else
713  {
714  warn("Unexpected tag 'anchor' found");
715  }
716  }

引用了 TagMemberInfo::anchor, TagClassInfo::anchor, TagClassInfo::get(), InClass, InMember, m_curCompound, m_curMember, m_curString, m_state , 以及 warn().

◆ endAnchorFile()

void TagFileParser::endAnchorFile ( )
inline

在文件 tagreader.cpp740 行定义.

741  {
742  if (m_state==InMember)
743  {
745  }
746  else
747  {
748  warn("Unexpected tag 'anchorfile' found");
749  }
750  }

引用了 TagMemberInfo::anchorFile, InMember, m_curMember, m_curString, m_state , 以及 warn().

◆ endArglist()

void TagFileParser::endArglist ( )
inline

在文件 tagreader.cpp752 行定义.

753  {
754  if (m_state==InMember)
755  {
757  }
758  else
759  {
760  warn("Unexpected tag 'arglist' found");
761  }
762  }

引用了 TagMemberInfo::arglist, InMember, m_curMember, m_curString, m_state , 以及 warn().

◆ endBase()

void TagFileParser::endBase ( )
inline

在文件 tagreader.cpp619 行定义.

620  {
621  if (m_state==InClass && m_curCompound)
622  {
624  }
625  else
626  {
627  warn("Unexpected tag 'base' found");
628  }
629  }

引用了 TagClassInfo::bases, TagClassInfo::get(), InClass, m_curCompound, m_curString, m_state , 以及 warn().

◆ endClangId()

void TagFileParser::endClangId ( )
inline

在文件 tagreader.cpp718 行定义.

719  {
720  if (m_state==InMember)
721  {
723  }
724  else if (m_state==InClass)
725  {
727  }
728  else if (m_state==InNamespace)
729  {
731  }
732  else
733  {
734  warn("Unexpected tag 'clangid' found");
735  }
736  }

引用了 TagMemberInfo::clangId, TagClassInfo::clangId, TagNamespaceInfo::clangId, TagClassInfo::get(), TagNamespaceInfo::get(), InClass, InMember, InNamespace, m_curCompound, m_curMember, m_curString, m_state , 以及 warn().

◆ endClass()

void TagFileParser::endClass ( )
inline

在文件 tagreader.cpp438 行定义.

439  {
440  switch(m_state)
441  {
442  case InClass:
444  break;
445  case InFile:
447  break;
448  case InNamespace:
450  break;
451  case InGroup:
453  break;
454  case InPackage:
456  break;
457  default:
458  warn("Unexpected tag 'class' found");
459  break;
460  }
461  }

引用了 TagClassInfo::classList, TagNamespaceInfo::classList, TagPackageInfo::classList, TagFileInfo::classList, TagGroupInfo::classList, TagClassInfo::get(), TagNamespaceInfo::get(), TagPackageInfo::get(), TagFileInfo::get(), TagGroupInfo::get(), InClass, InFile, InGroup, InNamespace, InPackage, m_curCompound, m_curString, m_state, QCString::str() , 以及 warn().

◆ endCompound()

void TagFileParser::endCompound ( )
inline

在文件 tagreader.cpp298 行定义.

299  {
300  switch (m_state)
301  {
302  case InClass:
303  case InConcept:
304  case InFile:
305  case InNamespace:
306  case InGroup:
307  case InPage:
308  case InDir:
309  case InPackage:
310  m_tagFileCompounds.push_back(std::move(m_curCompound));
311  break;
312  default:
313  warn("tag 'compound' was not expected!");
314  break;
315  }
316  }

引用了 InClass, InConcept, InDir, InFile, InGroup, InNamespace, InPackage, InPage, m_curCompound, m_state, m_tagFileCompounds , 以及 warn().

◆ endConcept()

void TagFileParser::endConcept ( )
inline

在文件 tagreader.cpp463 行定义.

464  {
465  switch(m_state)
466  {
467  case InNamespace:
469  break;
470  case InFile:
472  break;
473  case InGroup:
475  break;
476  default:
477  warn("Unexpected tag 'concept' found");
478  break;
479  }
480  }

引用了 TagNamespaceInfo::conceptList, TagFileInfo::conceptList, TagGroupInfo::conceptList, TagNamespaceInfo::get(), TagFileInfo::get(), TagGroupInfo::get(), InFile, InGroup, InNamespace, m_curCompound, m_curString, m_state, QCString::str() , 以及 warn().

◆ endDir()

void TagFileParser::endDir ( )
inline

在文件 tagreader.cpp530 行定义.

531  {
532  switch(m_state)
533  {
534  case InDir:
536  break;
537  default:
538  warn("Unexpected tag 'dir' found");
539  break;
540  }
541  }

引用了 TagDirInfo::get(), InDir, m_curCompound, m_curString, m_state, QCString::str(), TagDirInfo::subdirList , 以及 warn().

◆ endDocAnchor()

void TagFileParser::endDocAnchor ( )
inline

在文件 tagreader.cpp399 行定义.

400  {
401  // Check whether or not the tag is automatically generate, in that case ignore the tag.
402  switch(m_state)
403  {
404  case InClass:
405  case InConcept:
406  case InFile:
407  case InNamespace:
408  case InGroup:
409  case InPage:
410  case InMember:
411  case InPackage:
412  case InDir:
413  if (m_curString.right(10)=="autotoc_md") return;
414  break;
415  default:
416  warn("Unexpected tag 'docanchor' found");
417  return;
418  }
419  switch(m_state)
420  {
421  case InClass:
422  case InConcept:
423  case InFile:
424  case InNamespace:
425  case InGroup:
426  case InPage:
427  case InPackage:
428  case InDir:
429  m_curCompound->docAnchors.push_back(TagAnchorInfo(m_fileName,m_curString,m_title));
430  break;
431  case InMember:
433  break;
434  default: break; // will not be reached
435  }
436  }

引用了 TagMemberInfo::docAnchors, InClass, InConcept, InDir, InFile, InGroup, InMember, InNamespace, InPackage, InPage, m_curCompound, m_curMember, m_curString, m_fileName, m_state, m_title, QCString::right() , 以及 warn().

◆ endElement()

void TagFileParser::endElement ( const QCString name)

在文件 tagreader.cpp948 行定义.

949 {
950  //printf("endElement '%s'\n",qPrint(name));
951  auto it = g_elementHandlers.find(name.str());
952  if (it!=std::end(g_elementHandlers))
953  {
954  it->second.endCb(*this);
955  }
956  else
957  {
958  warn("Unknown end tag '%s' found!",qPrint(name));
959  }
960 }

引用了 end(), g_elementHandlers, qPrint(), QCString::str() , 以及 warn().

被这些函数引用 parseTagFile().

◆ endEnumValue()

void TagFileParser::endEnumValue ( )
inline

◆ endFile()

void TagFileParser::endFile ( )
inline

在文件 tagreader.cpp501 行定义.

502  {
503  switch(m_state)
504  {
505  case InGroup:
507  break;
508  case InDir:
510  break;
511  default:
512  warn("Unexpected tag 'file' found");
513  break;
514  }
515  }

引用了 TagGroupInfo::fileList, TagDirInfo::fileList, TagGroupInfo::get(), TagDirInfo::get(), InDir, InGroup, m_curCompound, m_curString, m_state, QCString::str() , 以及 warn().

◆ endFilename()

void TagFileParser::endFilename ( )
inline

在文件 tagreader.cpp666 行定义.

667  {
668  switch (m_state)
669  {
670  case InClass:
671  case InConcept:
672  case InNamespace:
673  case InFile:
674  case InGroup:
675  case InPage:
676  case InPackage:
677  case InDir:
678  m_curCompound->filename = m_curString;
679  break;
680  default:
681  warn("Unexpected tag 'filename' found");
682  break;
683  }
684  }

引用了 InClass, InConcept, InDir, InFile, InGroup, InNamespace, InPackage, InPage, m_curCompound, m_curString, m_state , 以及 warn().

◆ endIgnoreElement()

void TagFileParser::endIgnoreElement ( )
inline

在文件 tagreader.cpp796 行定义.

797  {
798  }

◆ endIncludes()

void TagFileParser::endIncludes ( )
inline

在文件 tagreader.cpp641 行定义.

642  {
644  if (m_state==InFile && m_curCompound)
645  {
647  }
648  else
649  {
650  warn("Unexpected tag 'includes' found");
651  }
652  }

引用了 TagFileInfo::get(), TagFileInfo::includes, InFile, m_curCompound, m_curIncludes, m_curString, m_state, TagIncludeInfo::text , 以及 warn().

◆ endMember()

void TagFileParser::endMember ( )
inline

在文件 tagreader.cpp350 行定义.

351  {
352  m_state = m_stateStack.top();
353  m_stateStack.pop();
354  switch(m_state)
355  {
356  case InClass:
357  case InFile:
358  case InNamespace:
359  case InGroup:
360  case InPackage:
361  m_curCompound->members.push_back(m_curMember);
362  break;
363  default:
364  warn("Unexpected tag 'member' found");
365  break;
366  }
367  }

引用了 InClass, InFile, InGroup, InNamespace, InPackage, m_curCompound, m_curMember, m_state, m_stateStack , 以及 warn().

◆ endName()

void TagFileParser::endName ( )
inline

在文件 tagreader.cpp567 行定义.

568  {
569  switch (m_state)
570  {
571  case InClass:
572  case InConcept:
573  case InFile:
574  case InNamespace:
575  case InGroup:
576  case InPage:
577  case InDir:
578  case InPackage:
579  m_curCompound->name = m_curString;
580  break;
581  case InMember:
583  break;
584  default:
585  warn("Unexpected tag 'name' found");
586  break;
587  }
588  }

引用了 InClass, InConcept, InDir, InFile, InGroup, InMember, InNamespace, InPackage, InPage, m_curCompound, m_curMember, m_curString, m_state, TagMemberInfo::name , 以及 warn().

◆ endNamespace()

void TagFileParser::endNamespace ( )
inline

在文件 tagreader.cpp482 行定义.

483  {
484  switch(m_state)
485  {
486  case InNamespace:
488  break;
489  case InFile:
491  break;
492  case InGroup:
494  break;
495  default:
496  warn("Unexpected tag 'namespace' found");
497  break;
498  }
499  }

引用了 TagNamespaceInfo::get(), TagFileInfo::get(), TagGroupInfo::get(), InFile, InGroup, InNamespace, m_curCompound, m_curString, m_state, TagNamespaceInfo::namespaceList, TagFileInfo::namespaceList, TagGroupInfo::namespaceList, QCString::str() , 以及 warn().

◆ endPage()

void TagFileParser::endPage ( )
inline

在文件 tagreader.cpp517 行定义.

518  {
519  switch(m_state)
520  {
521  case InGroup:
523  break;
524  default:
525  warn("Unexpected tag 'page' found");
526  break;
527  }
528  }

引用了 TagGroupInfo::fileList, TagGroupInfo::get(), InGroup, m_curCompound, m_curString, m_state, QCString::str() , 以及 warn().

◆ endPath()

void TagFileParser::endPath ( )
inline

在文件 tagreader.cpp686 行定义.

687  {
688  switch (m_state)
689  {
690  case InFile:
692  break;
693  case InDir:
695  break;
696  default:
697  warn("Unexpected tag 'path' found");
698  break;
699  }
700  }

引用了 TagFileInfo::get(), TagDirInfo::get(), InDir, InFile, m_curCompound, m_curString, m_state, TagFileInfo::path, TagDirInfo::path , 以及 warn().

◆ endSubgroup()

void TagFileParser::endSubgroup ( )
inline

在文件 tagreader.cpp780 行定义.

781  {
782  if (m_state==InGroup)
783  {
785  }
786  else
787  {
788  warn("Unexpected tag 'subgroup' found");
789  }
790  }

引用了 TagGroupInfo::get(), InGroup, m_curCompound, m_curString, m_state, QCString::str(), TagGroupInfo::subgroupList , 以及 warn().

◆ endTemplateArg()

void TagFileParser::endTemplateArg ( )
inline

在文件 tagreader.cpp654 行定义.

655  {
656  if (m_state==InClass && m_curCompound)
657  {
659  }
660  else
661  {
662  warn("Unexpected tag 'templarg' found");
663  }
664  }

引用了 TagClassInfo::get(), InClass, m_curCompound, m_curString, m_state, QCString::str(), TagClassInfo::templateArguments , 以及 warn().

◆ endTitle()

void TagFileParser::endTitle ( )
inline

在文件 tagreader.cpp764 行定义.

765  {
766  switch (m_state)
767  {
768  case InGroup:
770  break;
771  case InPage:
773  break;
774  default:
775  warn("Unexpected tag 'title' found");
776  break;
777  }
778  }

引用了 TagGroupInfo::get(), TagPageInfo::get(), InGroup, InPage, m_curCompound, m_curString, m_state, TagGroupInfo::title, TagPageInfo::title , 以及 warn().

◆ endType()

void TagFileParser::endType ( )
inline

在文件 tagreader.cpp555 行定义.

556  {
557  if (m_state==InMember)
558  {
560  }
561  else
562  {
563  warn("Unexpected tag 'type' found");
564  }
565  }

引用了 InMember, m_curMember, m_curString, m_state, TagMemberInfo::type , 以及 warn().

◆ error()

void TagFileParser::error ( const QCString fileName,
int  lineNr,
const QCString msg 
)
inline

在文件 tagreader.cpp288 行定义.

289  {
290  ::warn(fileName,lineNr,"%s",qPrint(msg));
291  }

引用了 msg(), qPrint() , 以及 warn().

被这些函数引用 parseTagFile().

◆ setDocumentLocator()

void TagFileParser::setDocumentLocator ( const XMLLocator locator)
inline

在文件 tagreader.cpp275 行定义.

276  {
277  m_locator = locator;
278  }

引用了 m_locator.

被这些函数引用 parseTagFile().

◆ startBase()

void TagFileParser::startBase ( const XMLHandlers::Attributes attrib)
inline

在文件 tagreader.cpp590 行定义.

591  {
592  m_curString="";
593  if (m_state==InClass && m_curCompound)
594  {
595  QCString protStr = XMLHandlers::value(attrib,"protection");
596  QCString virtStr = XMLHandlers::value(attrib,"virtualness");
597  Protection prot = Public;
598  Specifier virt = Normal;
599  if (protStr=="protected")
600  {
601  prot = Protected;
602  }
603  else if (protStr=="private")
604  {
605  prot = Private;
606  }
607  if (virtStr=="virtual")
608  {
609  virt = Virtual;
610  }
611  TagClassInfo::get(m_curCompound)->bases.push_back(BaseInfo(m_curString,prot,virt));
612  }
613  else
614  {
615  warn("Unexpected tag 'base' found");
616  }
617  }

引用了 TagClassInfo::bases, TagClassInfo::get(), InClass, m_curCompound, m_curString, m_state, Normal, Private, Protected, Public, XMLHandlers::value(), Virtual , 以及 warn().

◆ startCompound()

void TagFileParser::startCompound ( const XMLHandlers::Attributes attrib)

在文件 tagreader.cpp962 行定义.

963 {
964  m_curString = "";
965  std::string kind = XMLHandlers::value(attrib,"kind");
966  std::string isObjC = XMLHandlers::value(attrib,"objc");
967 
968  auto it = g_compoundFactory.find(kind);
969  if (it!=g_compoundFactory.end())
970  {
971  m_curCompound = it->second.make_instance();
972  m_state = it->second.state;
973  m_curCompound->lineNr = m_locator->lineNr();
974  }
975  else
976  {
977  warn("Unknown compound attribute '%s' found!",kind.c_str());
978  m_state = Invalid;
979  }
980 
981  if (isObjC=="yes" && m_curCompound &&
983  {
985  }
986 }

引用了 TagCompoundInfo::Class, g_compoundFactory, TagClassInfo::get(), Invalid, TagClassInfo::isObjC, XMLLocator::lineNr(), m_curCompound, m_curString, m_locator, m_state, TRUE, XMLHandlers::value() , 以及 warn().

◆ startDocAnchor()

void TagFileParser::startDocAnchor ( const XMLHandlers::Attributes attrib)
inline

在文件 tagreader.cpp548 行定义.

549  {
550  m_fileName = XMLHandlers::value(attrib,"file");
551  m_title = XMLHandlers::value(attrib,"title");
552  m_curString = "";
553  }

引用了 m_curString, m_fileName, m_title , 以及 XMLHandlers::value().

◆ startDocument()

void TagFileParser::startDocument ( )
inline

在文件 tagreader.cpp280 行定义.

281  {
282  m_state = Invalid;
283  }

引用了 Invalid , 以及 m_state.

被这些函数引用 parseTagFile().

◆ startElement()

void TagFileParser::startElement ( const QCString name,
const XMLHandlers::Attributes attrib 
)

在文件 tagreader.cpp934 行定义.

935 {
936  //printf("startElement '%s'\n",qPrint(name));
937  auto it = g_elementHandlers.find(name.str());
938  if (it!=std::end(g_elementHandlers))
939  {
940  it->second.startCb(*this,attrib);
941  }
942  else
943  {
944  warn("Unknown start tag '%s' found!",qPrint(name));
945  }
946 }

引用了 end(), g_elementHandlers, qPrint(), QCString::str() , 以及 warn().

被这些函数引用 parseTagFile().

◆ startEnumValue()

void TagFileParser::startEnumValue ( const XMLHandlers::Attributes attrib)
inline

在文件 tagreader.cpp369 行定义.

370  {
371  if (m_state==InMember)
372  {
373  m_curString = "";
375  m_curEnumValue.file = XMLHandlers::value(attrib,"file");
376  m_curEnumValue.anchor = XMLHandlers::value(attrib,"anchor");
377  m_curEnumValue.clangid = XMLHandlers::value(attrib,"clangid");
378  m_stateStack.push(m_state);
380  }
381  else
382  {
383  warn("Found 'enumvalue' tag outside of member tag");
384  }
385  }

引用了 TagEnumValueInfo::anchor, TagEnumValueInfo::clangid, TagEnumValueInfo::file, InEnumValue, InMember, m_curEnumValue, m_curString, m_state, m_stateStack, XMLHandlers::value() , 以及 warn().

◆ startIgnoreElement()

void TagFileParser::startIgnoreElement ( const XMLHandlers::Attributes )
inline

在文件 tagreader.cpp792 行定义.

793  {
794  }

◆ startIncludes()

void TagFileParser::startIncludes ( const XMLHandlers::Attributes attrib)
inline

在文件 tagreader.cpp631 行定义.

632  {
634  m_curIncludes.id = XMLHandlers::value(attrib,"id");
635  m_curIncludes.name = XMLHandlers::value(attrib,"name");
636  m_curIncludes.isLocal = XMLHandlers::value(attrib,"local")=="yes";
637  m_curIncludes.isImported = XMLHandlers::value(attrib,"imported")=="yes";
638  m_curString="";
639  }

引用了 TagIncludeInfo::id, TagIncludeInfo::isImported, TagIncludeInfo::isLocal, m_curIncludes, m_curString, TagIncludeInfo::name , 以及 XMLHandlers::value().

◆ startMember()

void TagFileParser::startMember ( const XMLHandlers::Attributes attrib)
inline

在文件 tagreader.cpp318 行定义.

319  {
321  m_curMember.kind = XMLHandlers::value(attrib,"kind");
322  QCString protStr = XMLHandlers::value(attrib,"protection");
323  QCString virtStr = XMLHandlers::value(attrib,"virtualness");
324  QCString staticStr = XMLHandlers::value(attrib,"static");
326  if (protStr=="protected")
327  {
329  }
330  else if (protStr=="private")
331  {
333  }
334  if (virtStr=="virtual")
335  {
337  }
338  else if (virtStr=="pure")
339  {
341  }
342  if (staticStr=="yes")
343  {
345  }
346  m_stateStack.push(m_state);
347  m_state = InMember;
348  }

引用了 InMember, TagMemberInfo::isStatic, TagMemberInfo::kind, XMLLocator::lineNr(), TagMemberInfo::lineNr, m_curMember, m_locator, m_state, m_stateStack, Private, TagMemberInfo::prot, Protected, Pure, TRUE, XMLHandlers::value(), TagMemberInfo::virt , 以及 Virtual.

◆ startStringValue()

void TagFileParser::startStringValue ( const XMLHandlers::Attributes )
inline

在文件 tagreader.cpp543 行定义.

544  {
545  m_curString = "";
546  }

引用了 m_curString.

◆ warn() [1/2]

◆ warn() [2/2]

void TagFileParser::warn ( const char *  fmt,
const char *  s 
)
inlineprivate

在文件 tagreader.cpp825 行定义.

826  {
827  QCString fileName = m_locator->fileName();
828  ::warn(fileName,m_locator->lineNr(),fmt,s);
829  }

引用了 XMLLocator::fileName(), XMLLocator::lineNr(), m_locator , 以及 warn().

类成员变量说明

◆ m_curCompound

◆ m_curEnumValue

TagEnumValueInfo TagFileParser::m_curEnumValue
private

在文件 tagreader.cpp838 行定义.

被这些函数引用 endEnumValue() , 以及 startEnumValue().

◆ m_curIncludes

TagIncludeInfo TagFileParser::m_curIncludes
private

在文件 tagreader.cpp839 行定义.

被这些函数引用 endIncludes() , 以及 startIncludes().

◆ m_curMember

TagMemberInfo TagFileParser::m_curMember
private

◆ m_curString

◆ m_fileName

QCString TagFileParser::m_fileName
private

在文件 tagreader.cpp843 行定义.

被这些函数引用 endDocAnchor() , 以及 startDocAnchor().

◆ m_locator

const XMLLocator* TagFileParser::m_locator = nullptr
private

在文件 tagreader.cpp847 行定义.

被这些函数引用 setDocumentLocator(), startCompound(), startMember() , 以及 warn().

◆ m_state

◆ m_stateStack

std::stack<State> TagFileParser::m_stateStack
private

在文件 tagreader.cpp846 行定义.

被这些函数引用 endEnumValue(), endMember(), startEnumValue() , 以及 startMember().

◆ m_tagFileCompounds

std::vector< std::unique_ptr<TagCompoundInfo> > TagFileParser::m_tagFileCompounds
private

在文件 tagreader.cpp834 行定义.

被这些函数引用 addIncludes(), buildLists(), dump() , 以及 endCompound().

◆ m_tagName

QCString TagFileParser::m_tagName
private

在文件 tagreader.cpp842 行定义.

被这些函数引用 addDocAnchors(), addIncludes(), buildLists() , 以及 buildMemberList().

◆ m_title

QCString TagFileParser::m_title
private

在文件 tagreader.cpp844 行定义.

被这些函数引用 endDocAnchor() , 以及 startDocAnchor().


该类的文档由以下文件生成:
TagFileParser::InEnumValue
@ InEnumValue
Definition: tagreader.cpp:812
TagClassInfo::Kind::Protocol
@ Protocol
TagClassInfo::classList
StringVector classList
Definition: tagreader.cpp:123
TagPageInfo::get
static TagPageInfo * get(std::unique_ptr< TagCompoundInfo > &t)
Definition: tagreader.cpp:236
SrcLangExt_Unknown
@ SrcLangExt_Unknown
Definition: types.h:43
Rtf_Style_Default::name
const char * name
Definition: rtfstyle.h:40
TagNamespaceInfo
Container for namespace specific info that can be read from a tagfile
Definition: tagreader.cpp:153
TagGroupInfo::get
static TagGroupInfo * get(std::unique_ptr< TagCompoundInfo > &t)
Definition: tagreader.cpp:220
TagClassInfo::Kind::Union
@ Union
TagClassInfo::get
static TagClassInfo * get(std::unique_ptr< TagCompoundInfo > &t)
Definition: tagreader.cpp:126
TagCompoundInfo::docAnchors
std::vector< TagAnchorInfo > docAnchors
Definition: tagreader.cpp:107
ArgumentList::push_back
void push_back(const Argument &a)
Definition: arguments.h:95
Normal
@ Normal
Definition: types.h:29
TagDirInfo
Container for directory specific info that can be read from a tagfile
Definition: tagreader.cpp:247
Protection
Protection
Protection level of members
Definition: types.h:26
FileName
Class representing all files with a certain base name
Definition: filename.h:28
stripExtensionGeneral
QCString stripExtensionGeneral(const QCString &fName, const QCString &ext)
Definition: util.cpp:5285
TagNamespaceInfo::clangId
QCString clangId
Definition: tagreader.cpp:157
TagFileParser::Invalid
@ Invalid
Definition: tagreader.cpp:804
TagCompoundInfo::CompoundType::Class
@ Class
TagFileParser::InFile
@ InFile
Definition: tagreader.cpp:807
TagNamespaceInfo::get
static TagNamespaceInfo * get(std::unique_ptr< TagCompoundInfo > &t)
Definition: tagreader.cpp:161
TagClassInfo::templateArguments
StringVector templateArguments
Definition: tagreader.cpp:122
Private
@ Private
Definition: types.h:26
TagGroupInfo::classList
StringVector classList
Definition: tagreader.cpp:214
TagFileParser::buildMemberList
void buildMemberList(const std::shared_ptr< Entry > &ce, const std::vector< TagMemberInfo > &members)
Definition: tagreader.cpp:1180
XMLLocator::fileName
virtual std::string fileName() const =0
ArgumentList
This class represents an function or template argument list.
Definition: arguments.h:59
TagClassInfo::bases
std::vector< BaseInfo > bases
Definition: tagreader.cpp:121
CodeSymbolType::Property
@ Property
TagMemberInfo::anchorFile
QCString anchorFile
Definition: tagreader.cpp:83
QCString::isEmpty
bool isEmpty() const
Returns TRUE iff the string is empty
Definition: qcstring.h:144
TagFileInfo::namespaceList
StringVector namespaceList
Definition: tagreader.cpp:195
TagEnumValueInfo::clangid
QCString clangid
Definition: tagreader.cpp:63
TagDirInfo::fileList
StringVector fileList
Definition: tagreader.cpp:253
TagPackageInfo::get
static TagPackageInfo * get(std::unique_ptr< TagCompoundInfo > &t)
Definition: tagreader.cpp:177
Entry::ENUM_SEC
@ ENUM_SEC
Definition: entry.h:93
TagFileParser::m_tagName
QCString m_tagName
Definition: tagreader.cpp:842
TagConceptInfo::get
static TagConceptInfo * get(std::unique_ptr< TagCompoundInfo > &t)
Definition: tagreader.cpp:142
TagFileParser::InTempArgList
@ InTempArgList
Definition: tagreader.cpp:815
CodeSymbolType::Slot
@ Slot
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
TagIncludeInfo::isImported
bool isImported
Definition: tagreader.cpp:74
Entry::CONCEPT_SEC
@ CONCEPT_SEC
Definition: entry.h:69
TagConceptInfo::clangId
QCString clangId
Definition: tagreader.cpp:141
Grouping
Grouping info
Definition: types.h:64
TagFileParser::InPackage
@ InPackage
Definition: tagreader.cpp:813
TagMemberInfo::isStatic
bool isStatic
Definition: tagreader.cpp:91
Entry::DEFINE_SEC
@ DEFINE_SEC
Definition: entry.h:106
Virtual
@ Virtual
Definition: types.h:29
g_elementHandlers
static const std::map< std::string, ElementCallbacks > g_elementHandlers
Definition: tagreader.cpp:871
QCString::str
std::string str() const
Definition: qcstring.h:442
TagFileParser::InNamespace
@ InNamespace
Definition: tagreader.cpp:808
Specifier
Specifier
Virtualness of a member.
Definition: types.h:29
TagCompoundInfo::CompoundType::Page
@ Page
TagEnumValueInfo::anchor
QCString anchor
Definition: tagreader.cpp:62
TagCompoundInfo::filename
QCString filename
Definition: tagreader.cpp:106
TagFileParser::m_locator
const XMLLocator * m_locator
Definition: tagreader.cpp:847
Public
@ Public
Definition: types.h:26
Entry::MAINPAGEDOC_SEC
@ MAINPAGEDOC_SEC
Definition: entry.h:109
TagClassInfo::anchor
QCString anchor
Definition: tagreader.cpp:120
TagEnumValueInfo::name
QCString name
Definition: tagreader.cpp:60
TagFileParser::m_curEnumValue
TagEnumValueInfo m_curEnumValue
Definition: tagreader.cpp:838
TagClassInfo::Kind::Class
@ Class
TagFileParser::m_curMember
TagMemberInfo m_curMember
Definition: tagreader.cpp:837
TagConceptInfo
Container for concept specific info that can be read from a tagfile
Definition: tagreader.cpp:137
TagMemberInfo::type
QCString type
Definition: tagreader.cpp:81
TagCompoundInfo::CompoundType::File
@ File
TagEnumValueInfo::file
QCString file
Definition: tagreader.cpp:61
TagIncludeInfo::isLocal
bool isLocal
Definition: tagreader.cpp:73
TagMemberInfo::anchor
QCString anchor
Definition: tagreader.cpp:84
TagGroupInfo::namespaceList
StringVector namespaceList
Definition: tagreader.cpp:216
TagCompoundInfo::CompoundType::Group
@ Group
TagClassInfo
Container for class specific info that can be read from a tagfile
Definition: tagreader.cpp:114
CodeSymbolType::Event
@ Event
TagFileParser::m_curIncludes
TagIncludeInfo m_curIncludes
Definition: tagreader.cpp:839
end
DirIterator end(const DirIterator &) noexcept
Definition: dir.cpp:128
CodeSymbolType::DCOP
@ DCOP
TagIncludeInfo::text
QCString text
Definition: tagreader.cpp:72
Doxygen::inputNameLinkedMap
static FileNameLinkedMap * inputNameLinkedMap
Definition: doxygen.h:88
XMLLocator::lineNr
virtual int lineNr() const =0
BaseInfo::name
QCString name
the name of the base class
Definition: entry.h:40
Argument::type
QCString type
Definition: arguments.h:50
Entry::NAMESPACE_SEC
@ NAMESPACE_SEC
Definition: entry.h:68
Entry::Union
static const uint64 Union
Definition: entry.h:128
TagMemberInfo::clangId
QCString clangId
Definition: tagreader.cpp:87
TagMemberInfo::prot
Protection prot
Definition: tagreader.cpp:89
Entry::Struct
static const uint64 Struct
Definition: entry.h:127
SrcLangExt_ObjC
@ SrcLangExt_ObjC
Definition: types.h:49
Entry::Interface
static const uint64 Interface
Definition: entry.h:126
TagClassInfo::Kind::Singleton
@ Singleton
Method
@ Method
Definition: types.h:32
createFileDef
FileDef * createFileDef(const QCString &p, const QCString &n, const QCString &ref, const QCString &dn)
Definition: filedef.cpp:190
TagGroupInfo
Container for group specific info that can be read from a tagfile
Definition: tagreader.cpp:208
TagNamespaceInfo::namespaceList
StringVector namespaceList
Definition: tagreader.cpp:160
TagMemberInfo::lineNr
int lineNr
Definition: tagreader.cpp:93
QCString::stripWhiteSpace
QCString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
Definition: qcstring.h:243
TagFileParser::m_fileName
QCString m_fileName
Definition: tagreader.cpp:843
TagFileParser::m_curString
QCString m_curString
Definition: tagreader.cpp:841
TagCompoundInfo::CompoundType::Concept
@ Concept
TagClassInfo::kind
Kind kind
Definition: tagreader.cpp:124
Entry::CLASS_SEC
@ CLASS_SEC
Definition: entry.h:67
TagIncludeInfo::name
QCString name
Definition: tagreader.cpp:71
TagNamespaceInfo::classList
StringVector classList
Definition: tagreader.cpp:158
TagFileParser::InDir
@ InDir
Definition: tagreader.cpp:814
TagFileParser::addDocAnchors
void addDocAnchors(const std::shared_ptr< Entry > &e, const std::vector< TagAnchorInfo > &l)
Definition: tagreader.cpp:1160
TagClassInfo::Kind::Enum
@ Enum
TagMemberInfo::kind
QCString kind
Definition: tagreader.cpp:86
SrcLangExt_Cpp
@ SrcLangExt_Cpp
Definition: types.h:50
TagClassInfo::Kind::Service
@ Service
TagIncludeInfo::id
QCString id
Definition: tagreader.cpp:70
Argument
This class contains the information about the argument of a function or template
Definition: arguments.h:26
TagCompoundInfo::name
QCString name
Definition: tagreader.cpp:105
TagFileParser::InConcept
@ InConcept
Definition: tagreader.cpp:806
stripPath
QCString stripPath(const QCString &s)
Definition: util.cpp:5318
TagMemberInfo::virt
Specifier virt
Definition: tagreader.cpp:90
TagFileParser::InGroup
@ InGroup
Definition: tagreader.cpp:809
TRUE
#define TRUE
Definition: qcstring.h:36
Entry::FUNCTION_SEC
@ FUNCTION_SEC
Definition: entry.h:97
TagMemberInfo::enumValues
std::vector< TagEnumValueInfo > enumValues
Definition: tagreader.cpp:92
TagPackageInfo::classList
StringVector classList
Definition: tagreader.cpp:176
Entry::Service
static const uint64 Service
Definition: entry.h:135
LinkedMap::find
const T * find(const std::string &key) const
Find an object given the key.
Definition: linkedmap.h:60
Entry::Protocol
static const uint64 Protocol
Definition: entry.h:130
g_compoundFactory
static const std::map< std::string, CompoundFactory > g_compoundFactory
Definition: tagreader.cpp:910
TagClassInfo::Kind::Category
@ Category
TagIncludeInfo
Container for include info that can be read from a tagfile
Definition: tagreader.cpp:67
TagFileInfo::get
static TagFileInfo * get(std::unique_ptr< TagCompoundInfo > &t)
Definition: tagreader.cpp:197
TagDirInfo::subdirList
StringVector subdirList
Definition: tagreader.cpp:252
SectionManager::add
SectionInfo * add(const SectionInfo &si)
Add a new section given the data of an existing section.
Definition: section.h:135
TagFileParser::m_title
QCString m_title
Definition: tagreader.cpp:844
Entry::GROUPDOC_SEC
@ GROUPDOC_SEC
Definition: entry.h:107
TagMemberInfo::docAnchors
std::vector< TagAnchorInfo > docAnchors
Definition: tagreader.cpp:88
TagFileInfo
Container for file specific info that can be read from a tagfile
Definition: tagreader.cpp:188
TagCompoundInfo::CompoundType::Package
@ Package
TagCompoundInfo::CompoundType::Dir
@ Dir
Entry::Exception
static const uint64 Exception
Definition: entry.h:129
SectionType::Anchor
@ Anchor
TagFileParser::m_state
State m_state
Definition: tagreader.cpp:845
Protected
@ Protected
Definition: types.h:26
TagAnchorInfo
Information about an linkable anchor
Definition: tagreader.cpp:44
TagDirInfo::get
static TagDirInfo * get(std::unique_ptr< TagCompoundInfo > &t)
Definition: tagreader.cpp:254
TagClassInfo::Kind::Exception
@ Exception
TagPackageInfo
Container for package specific info that can be read from a tagfile
Definition: tagreader.cpp:172
TagPageInfo::title
QCString title
Definition: tagreader.cpp:235
Entry::Strong
static const uint64 Strong
Definition: entry.h:169
TagGroupInfo::conceptList
StringVector conceptList
Definition: tagreader.cpp:215
SectionManager::instance
static SectionManager & instance()
returns a reference to the singleton
Definition: section.h:172
Entry::PAGEDOC_SEC
@ PAGEDOC_SEC
Definition: entry.h:95
msg
void msg(const char *fmt,...)
Definition: message.cpp:53
TagFileInfo::classList
StringVector classList
Definition: tagreader.cpp:193
Grouping::GROUPING_INGROUP
@ GROUPING_INGROUP
membership in group was defined by @ingroup
Definition: types.h:74
TagGroupInfo::fileList
StringVector fileList
Definition: tagreader.cpp:217
TagMemberInfo::name
QCString name
Definition: tagreader.cpp:82
Entry::Category
static const uint64 Category
Definition: entry.h:131
qPrint
const char * qPrint(const char *s)
Definition: qcstring.h:589
TagFileParser::m_stateStack
std::stack< State > m_stateStack
Definition: tagreader.cpp:846
TagNamespaceInfo::conceptList
StringVector conceptList
Definition: tagreader.cpp:159
TagCompoundInfo::lineNr
int lineNr
Definition: tagreader.cpp:108
TagDirInfo::path
QCString path
Definition: tagreader.cpp:251
TagFileParser::m_curCompound
std::unique_ptr< TagCompoundInfo > m_curCompound
Definition: tagreader.cpp:835
SectionInfo
class that provide information about a section.
Definition: section.h:49
Entry::PACKAGE_SEC
@ PACKAGE_SEC
Definition: entry.h:112
TagClassInfo::Kind::Struct
@ Struct
Argument::name
QCString name
Definition: arguments.h:52
TagClassInfo::Kind::Interface
@ Interface
TagGroupInfo::title
QCString title
Definition: tagreader.cpp:212
ASSERT
#define ASSERT(x)
Definition: qcstring.h:44
getFileNameExtension
QCString getFileNameExtension(const QCString &fn)
Definition: util.cpp:5621
TagClassInfo::Kind::None
@ None
TagMemberInfo::arglist
QCString arglist
Definition: tagreader.cpp:85
BaseInfo
This class stores information about an inheritance relation
Definition: entry.h:35
TagFileParser::warn
void warn(const char *fmt)
Definition: tagreader.cpp:819
TagClassInfo::isObjC
bool isObjC
Definition: tagreader.cpp:125
TagGroupInfo::subgroupList
StringVector subgroupList
Definition: tagreader.cpp:213
Entry::VARIABLE_SEC
@ VARIABLE_SEC
Definition: entry.h:96
TagFileParser::InClass
@ InClass
Definition: tagreader.cpp:805
TagMemberInfo
Container for member specific info that can be read from a tagfile
Definition: tagreader.cpp:78
TagFileParser::InPage
@ InPage
Definition: tagreader.cpp:810
TagCompoundInfo::members
std::vector< TagMemberInfo > members
Definition: tagreader.cpp:104
TagFileInfo::conceptList
StringVector conceptList
Definition: tagreader.cpp:194
TagFileParser::m_tagFileCompounds
std::vector< std::unique_ptr< TagCompoundInfo > > m_tagFileCompounds
Definition: tagreader.cpp:834
TagEnumValueInfo
Container for enum values that are scoped within an enum
Definition: tagreader.cpp:57
TagClassInfo::clangId
QCString clangId
Definition: tagreader.cpp:119
TagGroupInfo::pageList
StringVector pageList
Definition: tagreader.cpp:218
CodeSymbolType::Signal
@ Signal
Entry::Singleton
static const uint64 Singleton
Definition: entry.h:136
guessSection
int guessSection(const QCString &name)
Definition: util.cpp:331
TagFileInfo::path
QCString path
Definition: tagreader.cpp:192
TagCompoundInfo::CompoundType::Namespace
@ Namespace
stringToArgumentList
std::unique_ptr< ArgumentList > stringToArgumentList(SrcLangExt lang, const QCString &argsString, QCString *extraTypeChars=0)
TagPageInfo
Container for page specific info that can be read from a tagfile
Definition: tagreader.cpp:231
QCString::right
QCString right(size_t len) const
Definition: qcstring.h:217
TagFileParser::InMember
@ InMember
Definition: tagreader.cpp:811
TagFileInfo::includes
std::vector< TagIncludeInfo > includes
Definition: tagreader.cpp:196
XMLHandlers::value
static std::string value(const Attributes &attrib, const std::string &key)
Definition: xml.h:57
Entry::Enum
static const uint64 Enum
Definition: entry.h:134
Pure
@ Pure
Definition: types.h:29
QCString
This is an alternative implementation of QCString.
Definition: qcstring.h:108