Doxygen
doxygen.h 文件参考
#include "containers.h"
#include "membergroup.h"
#include "dirdef.h"
#include "memberlist.h"
#include "define.h"
#include "cache.h"
#include "symbolmap.h"
+ doxygen.h 的引用(Include)关系图:
+ 此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

struct  LookupInfo
 
class  Doxygen
 This class serves as a namespace for global variables used by doxygen. 更多...
 

宏定义

#define THREAD_LOCAL   thread_local
 
#define AtomicInt   std::atomic_int
 
#define AtomicBool   std::atomic_bool
 

类型定义

using ClangUsrMap = std::unordered_map< std::string, const Definition * >
 

函数

void initDoxygen ()
 
void readConfiguration (int argc, char **argv)
 
void checkConfiguration ()
 check and resolve config options 更多...
 
void adjustConfiguration ()
 adjust globals that depend on configuration settings. 更多...
 
void parseInput ()
 
void generateOutput ()
 
void readAliases ()
 
void readFormulaRepository (QCString dir, bool cmp=FALSE)
 
void cleanUpDoxygen ()
 
void readFileOrDirectory (const QCString &s, FileNameLinkedMap *fnDict, StringUnorderedSet *exclSet, const StringVector *patList, const StringVector *exclPatList, StringVector *resultList, StringUnorderedSet *resultSet, bool recursive, bool errorIfNotExist=TRUE, StringUnorderedSet *killSet=0, StringSet *paths=0)
 
void copyAndFilterFile (const char *fileName, BufStr &dest)
 

宏定义说明

◆ AtomicBool

#define AtomicBool   std::atomic_bool

在文件 doxygen.h29 行定义.

◆ AtomicInt

#define AtomicInt   std::atomic_int

在文件 doxygen.h28 行定义.

◆ THREAD_LOCAL

#define THREAD_LOCAL   thread_local

在文件 doxygen.h27 行定义.

类型定义说明

◆ ClangUsrMap

using ClangUsrMap = std::unordered_map<std::string,const Definition *>

在文件 doxygen.h69 行定义.

函数说明

◆ adjustConfiguration()

void adjustConfiguration ( )

adjust globals that depend on configuration settings.

在文件 doxygen.cpp11153 行定义.

11154 {
11155  Doxygen::globalScope = createNamespaceDef("<globalScope>",1,1,"<globalScope>");
11163 
11164  setTranslator(Config_getEnum(OUTPUT_LANGUAGE));
11165 
11166  /* Set the global html file extension. */
11167  Doxygen::htmlFileExtension = Config_getString(HTML_FILE_EXTENSION);
11168 
11169 
11171  Config_getBool(CALLER_GRAPH) ||
11172  Config_getBool(REFERENCES_RELATION) ||
11173  Config_getBool(REFERENCED_BY_RELATION);
11174 
11175  /**************************************************************************
11176  * Add custom extension mappings
11177  **************************************************************************/
11178 
11179  const StringVector &extMaps = Config_getList(EXTENSION_MAPPING);
11180  for (const auto &mapping : extMaps)
11181  {
11182  QCString mapStr = mapping.c_str();
11183  int i=mapStr.find('=');
11184  if (i==-1)
11185  {
11186  continue;
11187  }
11188  else
11189  {
11190  QCString ext = mapStr.left(i).stripWhiteSpace().lower();
11191  QCString language = mapStr.mid(i+1).stripWhiteSpace().lower();
11192  if (ext.isEmpty() || language.isEmpty())
11193  {
11194  continue;
11195  }
11196 
11197  if (!updateLanguageMapping(ext,language))
11198  {
11199  err("Failed to map file extension '%s' to unsupported language '%s'.\n"
11200  "Check the EXTENSION_MAPPING setting in the config file.\n",
11201  qPrint(ext),qPrint(language));
11202  }
11203  else
11204  {
11205  msg("Adding custom extension mapping: '%s' will be treated as language '%s'\n",
11206  qPrint(ext),qPrint(language));
11207  }
11208  }
11209  }
11210 
11211  // add predefined macro name to a dictionary
11212  const StringVector &expandAsDefinedList =Config_getList(EXPAND_AS_DEFINED);
11213  for (const auto &s : expandAsDefinedList)
11214  {
11215  Doxygen::expandAsDefinedSet.insert(s.c_str());
11216  }
11217 
11218  // read aliases and store them in a dictionary
11219  readAliases();
11220 
11221  // store number of spaces in a tab into Doxygen::spaces
11222  int tabSize = Config_getInt(TAB_SIZE);
11223  Doxygen::spaces.resize(tabSize+1);
11224  int sp;for (sp=0;sp<tabSize;sp++) Doxygen::spaces.at(sp)=' ';
11225  Doxygen::spaces.at(tabSize)='\0';
11226 }

引用了 QCString::at(), Config_getBool, Config_getEnum, Config_getInt, Config_getList, Config_getString, createNamespaceDef(), Doxygen::diaFileNameLinkedMap, Doxygen::dotFileNameLinkedMap, err(), Doxygen::exampleNameLinkedMap, Doxygen::expandAsDefinedSet, QCString::find(), Doxygen::globalScope, Doxygen::htmlFileExtension, Doxygen::imageNameLinkedMap, Doxygen::includeNameLinkedMap, Doxygen::inputNameLinkedMap, QCString::isEmpty(), QCString::left(), QCString::lower(), QCString::mid(), Doxygen::mscFileNameLinkedMap, msg(), Doxygen::parseSourcesNeeded, qPrint(), readAliases(), QCString::resize(), setTranslator(), Doxygen::spaces, QCString::stripWhiteSpace() , 以及 updateLanguageMapping().

被这些函数引用 main().

◆ checkConfiguration()

void checkConfiguration ( )

check and resolve config options

在文件 doxygen.cpp11143 行定义.

11144 {
11145 
11150 }

引用了 Config::checkAndCorrect(), Config_getBool, FALSE, initWarningFormat(), Config::postProcess() , 以及 Config::updateObsolete().

被这些函数引用 main().

◆ cleanUpDoxygen()

void cleanUpDoxygen ( )

在文件 doxygen.cpp10694 行定义.

10695 {
10698 
10699  delete Doxygen::indexList;
10707  Doxygen::mainPage.reset();
10708  delete Doxygen::pageLinkedMap;
10710  delete Doxygen::globalScope;
10711  delete Doxygen::parserManager;
10712  delete theTranslator;
10713  delete g_outputList;
10715 
10718  delete Doxygen::groupLinkedMap;
10720  delete Doxygen::dirLinkedMap;
10721  delete Doxygen::symbolMap;
10722 
10724 }

引用了 FormulaManager::clear(), LinkedMap< T, Hash, KeyEqual, Map >::clear(), DotManager::deleteInstance(), Doxygen::diaFileNameLinkedMap, Doxygen::dirLinkedMap, Doxygen::dotFileNameLinkedMap, Doxygen::exampleLinkedMap, Doxygen::exampleNameLinkedMap, Mappers::freeMappers(), Doxygen::functionNameLinkedMap, g_outputList, Doxygen::globalScope, Doxygen::groupLinkedMap, Doxygen::imageNameLinkedMap, Doxygen::includeNameLinkedMap, Doxygen::indexList, Doxygen::inputNameLinkedMap, FormulaManager::instance(), SectionManager::instance(), Doxygen::mainPage, Doxygen::memberNameLinkedMap, Doxygen::mscFileNameLinkedMap, Doxygen::namespaceLinkedMap, Doxygen::pageLinkedMap, Doxygen::parserManager, Doxygen::symbolMap , 以及 theTranslator.

被这些函数引用 createOutputDirectory(), generateOutput(), parseInput(), readConfiguration() , 以及 stopDoxygen().

◆ copyAndFilterFile()

void copyAndFilterFile ( const char *  fileName,
BufStr dest 
)

◆ generateOutput()

void generateOutput ( )

add extra languages for which we can only produce syntax highlighted code

在文件 doxygen.cpp12168 行定义.

12169 {
12170  /**************************************************************************
12171  * Initialize output generators *
12172  **************************************************************************/
12173 
12174  /// add extra languages for which we can only produce syntax highlighted code
12176 
12177  //// dump all symbols
12178  if (g_dumpSymbolMap)
12179  {
12180  dumpSymbolMap();
12181  exit(0);
12182  }
12183 
12185 
12186  bool generateHtml = Config_getBool(GENERATE_HTML);
12187  bool generateLatex = Config_getBool(GENERATE_LATEX);
12188  bool generateMan = Config_getBool(GENERATE_MAN);
12189  bool generateRtf = Config_getBool(GENERATE_RTF);
12190  bool generateDocbook = Config_getBool(GENERATE_DOCBOOK);
12191 
12192 
12193  g_outputList = new OutputList;
12194  if (generateHtml)
12195  {
12199  }
12200  if (generateLatex)
12201  {
12204  }
12205  if (generateDocbook)
12206  {
12209  }
12210  if (generateMan)
12211  {
12214  }
12215  if (generateRtf)
12216  {
12219  }
12220  if (Config_getBool(USE_HTAGS))
12221  {
12223  QCString htmldir = Config_getString(HTML_OUTPUT);
12224  if (!Htags::execute(htmldir))
12225  err("USE_HTAGS is YES but htags(1) failed. \n");
12226  else if (!Htags::loadFilemap(htmldir))
12227  err("htags(1) ended normally but failed to load the filemap. \n");
12228  }
12229 
12230  /**************************************************************************
12231  * Generate documentation *
12232  **************************************************************************/
12233 
12234  g_s.begin("Generating style sheet...\n");
12235  //printf("writing style info\n");
12236  g_outputList->writeStyleInfo(0); // write first part
12237  g_s.end();
12238 
12239  static bool searchEngine = Config_getBool(SEARCHENGINE);
12240  static bool serverBasedSearch = Config_getBool(SERVER_BASED_SEARCH);
12241 
12242  g_s.begin("Generating search indices...\n");
12243  if (searchEngine && !serverBasedSearch && (generateHtml || g_useOutputTemplate))
12244  {
12246  }
12247 
12248  // generate search indices (need to do this before writing other HTML
12249  // pages as these contain a drop down menu with options depending on
12250  // what categories we find in this function.
12251  if (generateHtml && searchEngine)
12252  {
12253  QCString searchDirName = Config_getString(HTML_OUTPUT)+"/search";
12254  Dir searchDir(searchDirName.str());
12255  if (!searchDir.exists() && !searchDir.mkdir(searchDirName.str()))
12256  {
12257  term("Could not create search results directory '%s' $PWD='%s'\n",
12258  qPrint(searchDirName),Dir::currentDirPath().c_str());
12259  }
12260  HtmlGenerator::writeSearchData(searchDirName);
12261  if (!serverBasedSearch) // client side search index
12262  {
12264  }
12265  }
12266  g_s.end();
12267 
12268  // copy static stuff
12269  if (generateHtml)
12270  {
12272  copyStyleSheet();
12273  copyLogo(Config_getString(HTML_OUTPUT));
12274  copyExtraFiles(Config_getList(HTML_EXTRA_FILES),"HTML_EXTRA_FILES",Config_getString(HTML_OUTPUT));
12275  }
12276  if (generateLatex)
12277  {
12279  copyLogo(Config_getString(LATEX_OUTPUT));
12280  copyExtraFiles(Config_getList(LATEX_EXTRA_FILES),"LATEX_EXTRA_FILES",Config_getString(LATEX_OUTPUT));
12281  }
12282  if (generateDocbook)
12283  {
12284  copyLogo(Config_getString(DOCBOOK_OUTPUT));
12285  }
12286  if (generateRtf)
12287  {
12288  copyLogo(Config_getString(RTF_OUTPUT));
12289  }
12290 
12292  if (fm.hasFormulas() && generateHtml
12293  && !Config_getBool(USE_MATHJAX))
12294  {
12295  g_s.begin("Generating images for formulas in HTML...\n");
12296  fm.generateImages(Config_getString(HTML_OUTPUT), Config_getEnum(HTML_FORMULA_FORMAT)==HTML_FORMULA_FORMAT_t::svg ?
12298  g_s.end();
12299  }
12300  if (fm.hasFormulas() && generateRtf)
12301  {
12302  g_s.begin("Generating images for formulas in RTF...\n");
12304  g_s.end();
12305  }
12306 
12307  if (fm.hasFormulas() && generateDocbook)
12308  {
12309  g_s.begin("Generating images for formulas in Docbook...\n");
12311  g_s.end();
12312  }
12313 
12314  g_s.begin("Generating example documentation...\n");
12316  g_s.end();
12317 
12318  warn_flush();
12319 
12320  g_s.begin("Generating file sources...\n");
12322  g_s.end();
12323 
12324  g_s.begin("Generating file documentation...\n");
12325  generateFileDocs();
12326  g_s.end();
12327 
12328  g_s.begin("Generating page documentation...\n");
12329  generatePageDocs();
12330  g_s.end();
12331 
12332  g_s.begin("Generating group documentation...\n");
12334  g_s.end();
12335 
12336  g_s.begin("Generating class documentation...\n");
12338  g_s.end();
12339 
12340  g_s.begin("Generating concept documentation...\n");
12342  g_s.end();
12343 
12344  g_s.begin("Generating namespace index...\n");
12346  g_s.end();
12347 
12348  if (Config_getBool(GENERATE_LEGEND))
12349  {
12350  g_s.begin("Generating graph info page...\n");
12352  g_s.end();
12353  }
12354 
12355  g_s.begin("Generating directory documentation...\n");
12357  g_s.end();
12358 
12359  if (g_outputList->size()>0)
12360  {
12362  }
12363 
12364  g_s.begin("finalizing index lists...\n");
12366  g_s.end();
12367 
12368  g_s.begin("writing tag file...\n");
12369  writeTagFile();
12370  g_s.end();
12371 
12372  if (Config_getBool(GENERATE_XML))
12373  {
12374  g_s.begin("Generating XML output...\n");
12376  generateXML();
12378  g_s.end();
12379  }
12380 #if USE_SQLITE3
12381  if (Config_getBool(GENERATE_SQLITE3))
12382  {
12383  g_s.begin("Generating SQLITE3 output...\n");
12384  generateSqlite3();
12385  g_s.end();
12386  }
12387 #endif
12388 
12389  if (Config_getBool(GENERATE_AUTOGEN_DEF))
12390  {
12391  g_s.begin("Generating AutoGen DEF output...\n");
12392  generateDEF();
12393  g_s.end();
12394  }
12395  if (Config_getBool(GENERATE_PERLMOD))
12396  {
12397  g_s.begin("Generating Perl module output...\n");
12398  generatePerlMod();
12399  g_s.end();
12400  }
12401  if (generateHtml && searchEngine && serverBasedSearch)
12402  {
12403  g_s.begin("Generating search index\n");
12404  if (Doxygen::searchIndex->kind()==SearchIndexIntf::Internal) // write own search index
12405  {
12407  Doxygen::searchIndex->write(Config_getString(HTML_OUTPUT)+"/search/search.idx");
12408  }
12409  else // write data for external search index
12410  {
12412  QCString searchDataFile = Config_getString(SEARCHDATA_FILE);
12413  if (searchDataFile.isEmpty())
12414  {
12415  searchDataFile="searchdata.xml";
12416  }
12417  if (!Portable::isAbsolutePath(searchDataFile.data()))
12418  {
12419  searchDataFile.prepend(Config_getString(OUTPUT_DIRECTORY)+"/");
12420  }
12421  Doxygen::searchIndex->write(searchDataFile);
12422  }
12423  g_s.end();
12424  }
12425 
12426  if (g_useOutputTemplate)
12427  {
12428  g_s.begin("Generating output via template engine...\n");
12430  g_s.end();
12431  }
12432 
12433  warn_flush();
12434 
12435  if (generateRtf)
12436  {
12437  g_s.begin("Combining RTF output...\n");
12438  if (!RTFGenerator::preProcessFileInplace(Config_getString(RTF_OUTPUT),"refman.rtf"))
12439  {
12440  err("An error occurred during post-processing the RTF files!\n");
12441  }
12442  g_s.end();
12443  }
12444 
12445  warn_flush();
12446 
12447  g_s.begin("Running plantuml with JAVA...\n");
12449  g_s.end();
12450 
12451  warn_flush();
12452 
12453  if (Config_getBool(HAVE_DOT))
12454  {
12455  g_s.begin("Running dot...\n");
12457  g_s.end();
12458  }
12459 
12460  if (generateHtml &&
12461  Config_getBool(GENERATE_HTMLHELP) &&
12462  !Config_getString(HHC_LOCATION).isEmpty())
12463  {
12464  g_s.begin("Running html help compiler...\n");
12465  std::string oldDir = Dir::currentDirPath();
12466  Dir::setCurrent(Config_getString(HTML_OUTPUT).str());
12469  if (Portable::system(Config_getString(HHC_LOCATION).data(), "index.hhp", Debug::isFlagSet(Debug::ExtCmd))!=1)
12470  {
12471  err("failed to run html help compiler on index.hhp\n");
12472  }
12474  Dir::setCurrent(oldDir);
12475  g_s.end();
12476  }
12477 
12478  warn_flush();
12479 
12480  if ( generateHtml &&
12481  Config_getBool(GENERATE_QHP) &&
12482  !Config_getString(QHG_LOCATION).isEmpty())
12483  {
12484  g_s.begin("Running qhelpgenerator...\n");
12485  QCString qhpFileName = Qhp::getQhpFileName();
12486  QCString qchFileName = getQchFileName();
12487 
12488  QCString args = QCString().sprintf("%s -o \"%s\"", qPrint(qhpFileName), qPrint(qchFileName));
12489  std::string oldDir = Dir::currentDirPath();
12490  Dir::setCurrent(Config_getString(HTML_OUTPUT).str());
12492  if (Portable::system(Config_getString(QHG_LOCATION).data(), args.data(), FALSE))
12493  {
12494  err("failed to run qhelpgenerator on index.qhp\n");
12495  }
12497  Dir::setCurrent(oldDir);
12498  g_s.end();
12499  }
12500 
12501  g_outputList->cleanup();
12502 
12503  int cacheParam;
12504  msg("lookup cache used %zu/%zu hits=%" PRIu64 " misses=%" PRIu64 "\n",
12505  Doxygen::lookupCache->size(),
12506  Doxygen::lookupCache->capacity(),
12507  Doxygen::lookupCache->hits(),
12508  Doxygen::lookupCache->misses());
12509  cacheParam = computeIdealCacheParam(static_cast<size_t>(Doxygen::lookupCache->misses()*2/3)); // part of the cache is flushed, hence the 2/3 correction factor
12510  if (cacheParam>Config_getInt(LOOKUP_CACHE_SIZE))
12511  {
12512  msg("Note: based on cache misses the ideal setting for LOOKUP_CACHE_SIZE is %d at the cost of higher memory usage.\n",cacheParam);
12513  }
12514 
12516  {
12517  msg("Total elapsed time: %.6f seconds\n(of which %.6f seconds waiting for external tools to finish)\n",
12518  ((double)Debug::elapsedTime()),
12520  );
12521  g_s.print();
12522  }
12523  else
12524  {
12525  msg("finished...\n");
12526  }
12527 
12528 
12529  /**************************************************************************
12530  * Start cleaning up *
12531  **************************************************************************/
12532 
12533  cleanUpDoxygen();
12534 
12536  Dir thisDir;
12537  thisDir.remove(Doxygen::filterDBFileName.str());
12538  finishWarnExit();
12539  Config::deinit();
12540  delete Doxygen::clangUsrMap;
12542 }

引用了 OutputList::add(), addCodeOnlyMappings(), Statistics::begin(), FormulaManager::Bitmap, Doxygen::clangUsrMap, OutputList::cleanup(), cleanUpDoxygen(), computeIdealCacheParam(), Config_getBool, Config_getEnum, Config_getInt, Config_getList, Config_getString, copyExtraFiles(), copyLatexStyleSheet(), copyLogo(), copyStyleSheet(), createJavaScriptSearchIndex(), Dir::currentDirPath(), QCString::data(), Config::deinit(), dumpSymbolMap(), Debug::elapsedTime(), Statistics::end(), err(), Htags::execute(), Dir::exists(), Debug::ExtCmd, FALSE, Doxygen::filterDBFileName, IndexList::finalize(), finalizeSearchIndexer(), finishWarnExit(), g_dumpSymbolMap, g_outputList, g_s, g_successfulRun, g_useOutputTemplate, generateClassDocs(), generateConceptDocs(), generateDEF(), generateDirDocs(), generateExampleDocs(), generateFileDocs(), generateFileSources(), generateGroupDocs(), FormulaManager::generateImages(), generateNamespaceDocs(), generateOutputViaTemplate(), generatePageDocs(), generatePerlMod(), generateSqlite3(), FTVHelp::generateTreeViewImages(), generateXML(), Doxygen::generatingXmlOutput, getQchFileName(), Qhp::getQhpFileName(), Portable::getSysElapsedTime(), FormulaManager::hasFormulas(), Doxygen::indexList, RTFGenerator::init(), ManGenerator::init(), HtmlGenerator::init(), LatexGenerator::init(), DocbookGenerator::init(), initSearchIndexer(), DotManager::instance(), PlantumlManager::instance(), FormulaManager::instance(), SearchIndexIntf::Internal, Portable::isAbsolutePath(), QCString::isEmpty(), Debug::isFlagSet(), Htags::loadFilemap(), Doxygen::lookupCache, Dir::mkdir(), msg(), FormulaManager::On, QCString::prepend(), RTFGenerator::preProcessFileInplace(), Statistics::print(), qPrint(), Dir::remove(), DotManager::run(), PlantumlManager::run(), Doxygen::searchIndex, Dir::setCurrent(), Portable::setShortDir(), OutputList::size(), QCString::sprintf(), QCString::str(), Portable::system(), Portable::sysTimerStart(), Portable::sysTimerStop(), term(), Debug::Time, TRUE, Htags::useHtags, FormulaManager::Vector, warn_flush(), SearchIndexIntf::write(), HtmlGenerator::writeExternalSearchPage(), writeGraphInfo(), writeIndexHierarchy(), writeJavaScriptSearchIndex(), HtmlGenerator::writeSearchData(), HtmlGenerator::writeSearchPage(), OutputList::writeStyleInfo(), HtmlGenerator::writeTabData() , 以及 writeTagFile().

被这些函数引用 main().

◆ initDoxygen()

void initDoxygen ( )

在文件 doxygen.cpp10610 行定义.

10611 {
10612  initResources();
10613  QCString lang = Portable::getenv("LC_ALL");
10614  if (!lang.isEmpty()) Portable::setenv("LANG",lang);
10615  std::setlocale(LC_ALL,"");
10616  std::setlocale(LC_CTYPE,"C"); // to get isspace(0xA0)==0, needed for UTF-8
10617  std::setlocale(LC_NUMERIC,"C");
10618 
10620 
10622 
10624  Doxygen::parserManager = new ParserManager( make_parser_factory<NullOutlineParser>(),
10625  make_parser_factory<FileCodeParser>());
10626  Doxygen::parserManager->registerParser("c", make_parser_factory<COutlineParser>(),
10627  make_parser_factory<CCodeParser>());
10628  Doxygen::parserManager->registerParser("python", make_parser_factory<PythonOutlineParser>(),
10629  make_parser_factory<PythonCodeParser>());
10630  Doxygen::parserManager->registerParser("fortran", make_parser_factory<FortranOutlineParser>(),
10631  make_parser_factory<FortranCodeParser>());
10632  Doxygen::parserManager->registerParser("fortranfree", make_parser_factory<FortranOutlineParserFree>(),
10633  make_parser_factory<FortranCodeParserFree>());
10634  Doxygen::parserManager->registerParser("fortranfixed", make_parser_factory<FortranOutlineParserFixed>(),
10635  make_parser_factory<FortranCodeParserFixed>());
10636  Doxygen::parserManager->registerParser("vhdl", make_parser_factory<VHDLOutlineParser>(),
10637  make_parser_factory<VHDLCodeParser>());
10638  Doxygen::parserManager->registerParser("xml", make_parser_factory<NullOutlineParser>(),
10639  make_parser_factory<XMLCodeParser>());
10640  Doxygen::parserManager->registerParser("sql", make_parser_factory<NullOutlineParser>(),
10641  make_parser_factory<SQLCodeParser>());
10642  Doxygen::parserManager->registerParser("md", make_parser_factory<MarkdownOutlineParser>(),
10643  make_parser_factory<FileCodeParser>());
10644  Doxygen::parserManager->registerParser("lex", make_parser_factory<LexOutlineParser>(),
10645  make_parser_factory<LexCodeParser>());
10646 
10647  // register any additional parsers here...
10648 
10653 
10654 #ifdef USE_LIBCLANG
10656 #endif
10665  Doxygen::pageLinkedMap = new PageLinkedMap; // all doc pages
10666  Doxygen::exampleLinkedMap = new PageLinkedMap; // all examples
10667  //Doxygen::tagDestinationDict.setAutoDelete(TRUE);
10669 
10670  // initialisation of these globals depends on
10671  // configuration switches so we need to postpone these
10680 
10681  /**************************************************************************
10682  * Initialize some global constants
10683  **************************************************************************/
10684 
10685  g_compoundKeywords.insert("template class");
10686  g_compoundKeywords.insert("template struct");
10687  g_compoundKeywords.insert("class");
10688  g_compoundKeywords.insert("struct");
10689  g_compoundKeywords.insert("union");
10690  g_compoundKeywords.insert("interface");
10691  g_compoundKeywords.insert("exception");
10692 }

引用了 Doxygen::clangUsrMap, Doxygen::classLinkedMap, Doxygen::conceptLinkedMap, Portable::correct_path(), Doxygen::diaFileNameLinkedMap, Doxygen::dirLinkedMap, Doxygen::dotFileNameLinkedMap, Doxygen::exampleLinkedMap, Doxygen::exampleNameLinkedMap, Doxygen::functionNameLinkedMap, g_compoundKeywords, Portable::getenv(), Doxygen::globalScope, Doxygen::groupLinkedMap, Doxygen::hiddenClassLinkedMap, Doxygen::imageNameLinkedMap, Doxygen::includeNameLinkedMap, Doxygen::indexList, initClassMemberIndices(), initDefaultExtensionMapping(), initFileMemberIndices(), initNamespaceMemberIndices(), initResources(), Doxygen::inputNameLinkedMap, QCString::isEmpty(), Doxygen::memberNameLinkedMap, Doxygen::mscFileNameLinkedMap, Doxygen::namespaceLinkedMap, Doxygen::pageLinkedMap, Doxygen::parserManager, ParserManager::registerParser(), Portable::setenv(), Debug::startTimer() , 以及 Doxygen::symbolMap.

被这些函数引用 main().

◆ parseInput()

void parseInput ( )

在文件 doxygen.cpp11558 行定义.

11559 {
11560  atexit(exitDoxygen);
11561 
11562 #if USE_LIBCLANG
11563  Doxygen::clangAssistedParsing = Config_getBool(CLANG_ASSISTED_PARSING);
11564 #endif
11565 
11566  // we would like to show the versionString earlier, but we first have to handle the configuration file
11567  // to know the value of the QUIET setting.
11568  QCString versionString = getFullVersion();
11569  msg("Doxygen version used: %s\n",qPrint(versionString));
11570 
11571  /**************************************************************************
11572  * Make sure the output directory exists
11573  **************************************************************************/
11574  QCString outputDirectory = Config_getString(OUTPUT_DIRECTORY);
11575  if (outputDirectory.isEmpty())
11576  {
11577  outputDirectory = Config_updateString(OUTPUT_DIRECTORY,Dir::currentDirPath().c_str());
11578  }
11579  else
11580  {
11581  Dir dir(outputDirectory.str());
11582  if (!dir.exists())
11583  {
11584  dir.setPath(Dir::currentDirPath());
11585  if (!dir.mkdir(outputDirectory.str()))
11586  {
11587  err("tag OUTPUT_DIRECTORY: Output directory '%s' does not "
11588  "exist and cannot be created\n",qPrint(outputDirectory));
11589  cleanUpDoxygen();
11590  exit(1);
11591  }
11592  else
11593  {
11594  msg("Notice: Output directory '%s' does not exist. "
11595  "I have created it for you.\n", qPrint(outputDirectory));
11596  }
11597  dir.setPath(outputDirectory.str());
11598  }
11599  outputDirectory = Config_updateString(OUTPUT_DIRECTORY,dir.absPath().c_str());
11600  }
11601 
11602  /**************************************************************************
11603  * Initialize global lists and dictionaries
11604  **************************************************************************/
11605 
11606  // also scale lookup cache with SYMBOL_CACHE_SIZE
11607  int cacheSize = Config_getInt(LOOKUP_CACHE_SIZE);
11608  if (cacheSize<0) cacheSize=0;
11609  if (cacheSize>9) cacheSize=9;
11610  uint lookupSize = 65536 << cacheSize;
11612 
11613 #ifdef HAS_SIGNALS
11614  signal(SIGINT, stopDoxygen);
11615 #endif
11616 
11617  uint pid = Portable::pid();
11618  Doxygen::filterDBFileName.sprintf("doxygen_filterdb_%d.tmp",pid);
11619  Doxygen::filterDBFileName.prepend(outputDirectory+"/");
11620 
11621  /**************************************************************************
11622  * Check/create output directories *
11623  **************************************************************************/
11624 
11625  QCString htmlOutput;
11626  bool generateHtml = Config_getBool(GENERATE_HTML);
11627  if (generateHtml || g_useOutputTemplate /* TODO: temp hack */)
11628  {
11629  htmlOutput = createOutputDirectory(outputDirectory,Config_getString(HTML_OUTPUT),"/html");
11630  Config_updateString(HTML_OUTPUT,htmlOutput);
11631 
11632  // add HTML indexers that are enabled
11633  bool generateHtmlHelp = Config_getBool(GENERATE_HTMLHELP);
11634  bool generateEclipseHelp = Config_getBool(GENERATE_ECLIPSEHELP);
11635  bool generateQhp = Config_getBool(GENERATE_QHP);
11636  bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
11637  bool generateDocSet = Config_getBool(GENERATE_DOCSET);
11638  if (generateEclipseHelp) Doxygen::indexList->addIndex<EclipseHelp>();
11639  if (generateHtmlHelp) Doxygen::indexList->addIndex<HtmlHelp>();
11640  if (generateQhp) Doxygen::indexList->addIndex<Qhp>();
11641  if (generateTreeView) Doxygen::indexList->addIndex<FTVHelp>(TRUE);
11642  if (generateDocSet) Doxygen::indexList->addIndex<DocSets>();
11644  }
11645 
11646  QCString docbookOutput;
11647  bool generateDocbook = Config_getBool(GENERATE_DOCBOOK);
11648  if (generateDocbook)
11649  {
11650  docbookOutput = createOutputDirectory(outputDirectory,Config_getString(DOCBOOK_OUTPUT),"/docbook");
11651  Config_updateString(DOCBOOK_OUTPUT,docbookOutput);
11652  }
11653 
11654  QCString xmlOutput;
11655  bool generateXml = Config_getBool(GENERATE_XML);
11656  if (generateXml)
11657  {
11658  xmlOutput = createOutputDirectory(outputDirectory,Config_getString(XML_OUTPUT),"/xml");
11659  Config_updateString(XML_OUTPUT,xmlOutput);
11660  }
11661 
11662  QCString latexOutput;
11663  bool generateLatex = Config_getBool(GENERATE_LATEX);
11664  if (generateLatex)
11665  {
11666  latexOutput = createOutputDirectory(outputDirectory,Config_getString(LATEX_OUTPUT), "/latex");
11667  Config_updateString(LATEX_OUTPUT,latexOutput);
11668  }
11669 
11670  QCString rtfOutput;
11671  bool generateRtf = Config_getBool(GENERATE_RTF);
11672  if (generateRtf)
11673  {
11674  rtfOutput = createOutputDirectory(outputDirectory,Config_getString(RTF_OUTPUT),"/rtf");
11675  Config_updateString(RTF_OUTPUT,rtfOutput);
11676  }
11677 
11678  QCString manOutput;
11679  bool generateMan = Config_getBool(GENERATE_MAN);
11680  if (generateMan)
11681  {
11682  manOutput = createOutputDirectory(outputDirectory,Config_getString(MAN_OUTPUT),"/man");
11683  Config_updateString(MAN_OUTPUT,manOutput);
11684  }
11685 
11686 #if USE_SQLITE3
11687  QCString sqlOutput;
11688  bool generateSql = Config_getBool(GENERATE_SQLITE3);
11689  if (generateSql)
11690  {
11691  sqlOutput = createOutputDirectory(outputDirectory,Config_getString(SQLITE3_OUTPUT),"/sqlite3");
11692  Config_updateString(SQLITE3_OUTPUT,sqlOutput);
11693  }
11694 #endif
11695 
11696  if (Config_getBool(HAVE_DOT))
11697  {
11698  QCString curFontPath = Config_getString(DOT_FONTPATH);
11699  if (curFontPath.isEmpty())
11700  {
11701  Portable::getenv("DOTFONTPATH");
11702  QCString newFontPath = ".";
11703  if (!curFontPath.isEmpty())
11704  {
11705  newFontPath+=Portable::pathListSeparator();
11706  newFontPath+=curFontPath;
11707  }
11708  Portable::setenv("DOTFONTPATH",qPrint(newFontPath));
11709  }
11710  else
11711  {
11712  Portable::setenv("DOTFONTPATH",qPrint(curFontPath));
11713  }
11714  }
11715 
11716 
11717 
11718  /**************************************************************************
11719  * Handle layout file *
11720  **************************************************************************/
11721 
11723  QCString layoutFileName = Config_getString(LAYOUT_FILE);
11724  bool defaultLayoutUsed = FALSE;
11725  if (layoutFileName.isEmpty())
11726  {
11727  layoutFileName = Config_updateString(LAYOUT_FILE,"DoxygenLayout.xml");
11728  defaultLayoutUsed = TRUE;
11729  }
11730 
11731  FileInfo fi(layoutFileName.str());
11732  if (fi.exists())
11733  {
11734  msg("Parsing layout file %s...\n",qPrint(layoutFileName));
11735  LayoutDocManager::instance().parse(layoutFileName);
11736  }
11737  else if (!defaultLayoutUsed)
11738  {
11739  warn_uncond("failed to open layout file '%s' for reading!\n",qPrint(layoutFileName));
11740  }
11741 
11742  /**************************************************************************
11743  * Read and preprocess input *
11744  **************************************************************************/
11745 
11746  // prevent search in the output directories
11747  StringVector exclPatterns = Config_getList(EXCLUDE_PATTERNS);
11748  if (generateHtml) exclPatterns.push_back(htmlOutput.str());
11749  if (generateDocbook) exclPatterns.push_back(docbookOutput.str());
11750  if (generateXml) exclPatterns.push_back(xmlOutput.str());
11751  if (generateLatex) exclPatterns.push_back(latexOutput.str());
11752  if (generateRtf) exclPatterns.push_back(rtfOutput.str());
11753  if (generateMan) exclPatterns.push_back(manOutput.str());
11754  Config_updateList(EXCLUDE_PATTERNS,exclPatterns);
11755 
11756  searchInputFiles();
11757 
11758  // Notice: the order of the function calls below is very important!
11759 
11760  if (Config_getBool(GENERATE_HTML) && !Config_getBool(USE_MATHJAX))
11761  {
11763  }
11764  if (Config_getBool(GENERATE_RTF))
11765  {
11766  // in case GENERRATE_HTML is set we just have to compare, both repositories should be identical
11768  Config_getBool(GENERATE_HTML) &&
11769  !Config_getBool(USE_MATHJAX));
11770  }
11771  if (Config_getBool(GENERATE_DOCBOOK))
11772  {
11773  // in case GENERRATE_HTML is set we just have to compare, both repositories should be identical
11775  (Config_getBool(GENERATE_HTML) &&
11776  !Config_getBool(USE_MATHJAX)) ||
11777  Config_getBool(GENERATE_RTF));
11778  }
11779 
11780  /**************************************************************************
11781  * Handle Tag Files *
11782  **************************************************************************/
11783 
11784  std::shared_ptr<Entry> root = std::make_shared<Entry>();
11785  msg("Reading and parsing tag files\n");
11786 
11787  const StringVector &tagFileList = Config_getList(TAGFILES);
11788  for (const auto &s : tagFileList)
11789  {
11790  readTagFile(root,s.c_str());
11791  }
11792 
11793  /**************************************************************************
11794  * Parse source files *
11795  **************************************************************************/
11796 
11797  addSTLSupport(root);
11798 
11799  g_s.begin("Parsing files\n");
11800  if (Config_getInt(NUM_PROC_THREADS)==1)
11801  {
11803  }
11804  else
11805  {
11807  }
11808  g_s.end();
11809 
11810  /**************************************************************************
11811  * Gather information *
11812  **************************************************************************/
11813 
11814  g_s.begin("Building macro definition list...\n");
11815  buildDefineList();
11816  g_s.end();
11817 
11818  g_s.begin("Building group list...\n");
11819  buildGroupList(root.get());
11820  organizeSubGroups(root.get());
11821  g_s.end();
11822 
11823  g_s.begin("Building directory list...\n");
11824  buildDirectories();
11825  findDirDocumentation(root.get());
11826  g_s.end();
11827 
11828  g_s.begin("Building namespace list...\n");
11829  buildNamespaceList(root.get());
11830  findUsingDirectives(root.get());
11831  g_s.end();
11832 
11833  g_s.begin("Building file list...\n");
11834  buildFileList(root.get());
11835  g_s.end();
11836 
11837  g_s.begin("Building class list...\n");
11838  buildClassList(root.get());
11839  g_s.end();
11840 
11841  g_s.begin("Building concept list...\n");
11842  buildConceptList(root.get());
11843  g_s.end();
11844 
11845  // build list of using declarations here (global list)
11846  buildListOfUsingDecls(root.get());
11847  g_s.end();
11848 
11849  g_s.begin("Computing nesting relations for classes...\n");
11851  g_s.end();
11852  // 1.8.2-20121111: no longer add nested classes to the group as well
11853  //distributeClassGroupRelations();
11854 
11855  // calling buildClassList may result in cached relations that
11856  // become invalid after resolveClassNestingRelations(), that's why
11857  // we need to clear the cache here
11859  // we don't need the list of using declaration anymore
11860  g_usingDeclarations.clear();
11861 
11862  g_s.begin("Associating documentation with classes...\n");
11863  buildClassDocList(root.get());
11864  g_s.end();
11865 
11866  g_s.begin("Associating documentation with concepts...\n");
11867  buildConceptDocList(root.get());
11868  g_s.end();
11869 
11870  g_s.begin("Building example list...\n");
11871  buildExampleList(root.get());
11872  g_s.end();
11873 
11874  g_s.begin("Searching for enumerations...\n");
11875  findEnums(root.get());
11876  g_s.end();
11877 
11878  // Since buildVarList calls isVarWithConstructor
11879  // and this calls getResolvedClass we need to process
11880  // typedefs first so the relations between classes via typedefs
11881  // are properly resolved. See bug 536385 for an example.
11882  g_s.begin("Searching for documented typedefs...\n");
11883  buildTypedefList(root.get());
11884  g_s.end();
11885 
11886  if (Config_getBool(OPTIMIZE_OUTPUT_SLICE))
11887  {
11888  g_s.begin("Searching for documented sequences...\n");
11889  buildSequenceList(root.get());
11890  g_s.end();
11891 
11892  g_s.begin("Searching for documented dictionaries...\n");
11893  buildDictionaryList(root.get());
11894  g_s.end();
11895  }
11896 
11897  g_s.begin("Searching for members imported via using declarations...\n");
11898  // this should be after buildTypedefList in order to properly import
11899  // used typedefs
11900  findUsingDeclarations(root.get(),TRUE); // do for python packages first
11901  findUsingDeclarations(root.get(),FALSE); // then the rest
11902  g_s.end();
11903 
11904  g_s.begin("Searching for included using directives...\n");
11906  g_s.end();
11907 
11908  g_s.begin("Searching for documented variables...\n");
11909  buildVarList(root.get());
11910  g_s.end();
11911 
11912  g_s.begin("Building interface member list...\n");
11913  buildInterfaceAndServiceList(root.get()); // UNO IDL
11914 
11915  g_s.begin("Building member list...\n"); // using class info only !
11916  buildFunctionList(root.get());
11917  g_s.end();
11918 
11919  g_s.begin("Searching for friends...\n");
11920  findFriends();
11921  g_s.end();
11922 
11923  g_s.begin("Searching for documented defines...\n");
11924  findDefineDocumentation(root.get());
11925  g_s.end();
11926 
11927  g_s.begin("Computing class inheritance relations...\n");
11928  findClassEntries(root.get());
11930  g_s.end();
11931 
11932  g_s.begin("Computing class usage relations...\n");
11934  g_s.end();
11935 
11936  if (Config_getBool(INLINE_SIMPLE_STRUCTS))
11937  {
11938  g_s.begin("Searching for tag less structs...\n");
11940  g_s.end();
11941  }
11942 
11943  g_s.begin("Flushing cached template relations that have become invalid...\n");
11945  g_s.end();
11946 
11947  g_s.begin("Computing class relations...\n");
11950  if (Config_getBool(OPTIMIZE_OUTPUT_VHDL))
11951  {
11953  }
11955  g_classEntries.clear();
11956  g_s.end();
11957 
11958  g_s.begin("Add enum values to enums...\n");
11959  addEnumValuesToEnums(root.get());
11960  findEnumDocumentation(root.get());
11961  g_s.end();
11962 
11963  g_s.begin("Searching for member function documentation...\n");
11964  findObjCMethodDefinitions(root.get());
11965  findMemberDocumentation(root.get()); // may introduce new members !
11966  findUsingDeclImports(root.get()); // may introduce new members !
11967 
11970  g_s.end();
11971 
11972  // moved to after finding and copying documentation,
11973  // as this introduces new members see bug 722654
11974  g_s.begin("Creating members for template instances...\n");
11976  g_s.end();
11977 
11978  g_s.begin("Building page list...\n");
11979  buildPageList(root.get());
11980  g_s.end();
11981 
11982  g_s.begin("Search for main page...\n");
11983  findMainPage(root.get());
11984  findMainPageTagFiles(root.get());
11985  g_s.end();
11986 
11987  g_s.begin("Computing page relations...\n");
11988  computePageRelations(root.get());
11990  g_s.end();
11991 
11992  g_s.begin("Determining the scope of groups...\n");
11993  findGroupScope(root.get());
11994  g_s.end();
11995 
11996  auto memberNameComp = [](const MemberNameLinkedMap::Ptr &n1,const MemberNameLinkedMap::Ptr &n2)
11997  {
11998  return qstricmp(n1->memberName().data()+getPrefixIndex(n1->memberName()),
11999  n2->memberName().data()+getPrefixIndex(n2->memberName())
12000  )<0;
12001  };
12002 
12003  auto classComp = [](const ClassLinkedMap::Ptr &c1,const ClassLinkedMap::Ptr &c2)
12004  {
12005  if (Config_getBool(SORT_BY_SCOPE_NAME))
12006  {
12007  return qstricmp(c1->name(), c2->name())<0;
12008  }
12009  else
12010  {
12011  int i = qstricmp(c1->className(), c2->className());
12012  return i==0 ? qstricmp(c1->name(), c2->name())<0 : i<0;
12013  }
12014  };
12015 
12016  auto namespaceComp = [](const NamespaceLinkedMap::Ptr &n1,const NamespaceLinkedMap::Ptr &n2)
12017  {
12018  return qstricmp(n1->name(),n2->name())<0;
12019  };
12020 
12021  auto conceptComp = [](const ConceptLinkedMap::Ptr &c1,const ConceptLinkedMap::Ptr &c2)
12022  {
12023  return qstricmp(c1->name(),c2->name())<0;
12024  };
12025 
12026  g_s.begin("Sorting lists...\n");
12027  std::sort(Doxygen::memberNameLinkedMap->begin(),
12029  memberNameComp);
12032  memberNameComp);
12033  std::sort(Doxygen::hiddenClassLinkedMap->begin(),
12035  classComp);
12036  std::sort(Doxygen::classLinkedMap->begin(),
12038  classComp);
12039  std::sort(Doxygen::conceptLinkedMap->begin(),
12041  conceptComp);
12042  std::sort(Doxygen::namespaceLinkedMap->begin(),
12044  namespaceComp);
12045  g_s.end();
12046 
12047  g_s.begin("Determining which enums are documented\n");
12049  g_s.end();
12050 
12051  g_s.begin("Computing member relations...\n");
12052  mergeCategories();
12054  g_s.end();
12055 
12056  g_s.begin("Building full member lists recursively...\n");
12058  g_s.end();
12059 
12060  g_s.begin("Adding members to member groups.\n");
12062  g_s.end();
12063 
12064  if (Config_getBool(DISTRIBUTE_GROUP_DOC))
12065  {
12066  g_s.begin("Distributing member group documentation.\n");
12068  g_s.end();
12069  }
12070 
12071  g_s.begin("Computing member references...\n");
12073  g_s.end();
12074 
12075  if (Config_getBool(INHERIT_DOCS))
12076  {
12077  g_s.begin("Inheriting documentation...\n");
12079  g_s.end();
12080  }
12081 
12082  // compute the shortest possible names of all files
12083  // without losing the uniqueness of the file names.
12084  g_s.begin("Generating disk names...\n");
12086  g_s.end();
12087 
12088  g_s.begin("Adding source references...\n");
12090  g_s.end();
12091 
12092  g_s.begin("Adding xrefitems...\n");
12095  g_s.end();
12096 
12097  g_s.begin("Sorting member lists...\n");
12098  sortMemberLists();
12099  g_s.end();
12100 
12101  g_s.begin("Setting anonymous enum type...\n");
12103  g_s.end();
12104 
12105  if (Config_getBool(DIRECTORY_GRAPH))
12106  {
12107  g_s.begin("Computing dependencies between directories...\n");
12109  g_s.end();
12110  }
12111 
12112  g_s.begin("Generating citations page...\n");
12114  g_s.end();
12115 
12116  g_s.begin("Counting members...\n");
12117  countMembers();
12118  g_s.end();
12119 
12120  g_s.begin("Counting data structures...\n");
12122  g_s.end();
12123 
12124  g_s.begin("Resolving user defined references...\n");
12126  g_s.end();
12127 
12128  g_s.begin("Finding anchors and sections in the documentation...\n");
12130  g_s.end();
12131 
12132  g_s.begin("Transferring function references...\n");
12134  g_s.end();
12135 
12136  g_s.begin("Combining using relations...\n");
12138  g_s.end();
12139 
12140  g_s.begin("Adding members to index pages...\n");
12142  addToIndices();
12143  g_s.end();
12144 
12145  g_s.begin("Correcting members for VHDL...\n");
12147  g_s.end();
12148 
12149  g_s.begin("Computing tooltip texts...\n");
12151  g_s.end();
12152 
12153  if (Config_getBool(SORT_GROUP_NAMES))
12154  {
12155  std::sort(Doxygen::groupLinkedMap->begin(),
12157  [](const auto &g1,const auto &g2)
12158  { return g1->groupTitle() < g2->groupTitle(); });
12159 
12160  for (const auto &gd : *Doxygen::groupLinkedMap)
12161  {
12162  gd->sortSubGroups();
12163  }
12164  }
12165 
12166 }

引用了 Dir::absPath(), addEnumValuesToEnums(), IndexList::addIndex(), addListReferences(), addMembersToIndex(), addMembersToMemberGroup(), addSourceReferences(), addSTLSupport(), addToIndices(), begin(), Statistics::begin(), buildClassDocList(), buildClassList(), buildCompleteMemberLists(), buildConceptDocList(), buildConceptList(), buildDefineList(), buildDirectories(), buildExampleList(), buildFileList(), buildGroupList(), buildListOfUsingDecls(), buildNamespaceList(), buildPageList(), checkPageRelations(), Doxygen::clangAssistedParsing, Doxygen::classLinkedMap, cleanUpDoxygen(), Cache< K, V >::clear(), combineUsingRelations(), computeClassRelations(), computeDirDependencies(), computeMemberReferences(), computeMemberRelations(), computePageRelations(), computeTemplateClassRelations(), computeTooltipTexts(), VhdlDocGen::computeVhdlComponentRelations(), Doxygen::conceptLinkedMap, Config_getBool, Config_getInt, Config_getList, Config_getString, Config_updateList, Config_updateString, countDataStructures(), countMembers(), createOutputDirectory(), createTemplateInstanceMembers(), Dir::currentDirPath(), distributeMemberGroupDocumentation(), end(), Statistics::end(), err(), FileInfo::exists(), Dir::exists(), exitDoxygen(), FALSE, Doxygen::filterDBFileName, findClassEntries(), findDefineDocumentation(), findDirDocumentation(), findDocumentedEnumValues(), findEnumDocumentation(), findEnums(), findGroupScope(), findIncludedUsingDirectives(), findInheritedTemplateInstances(), findMainPage(), findMainPageTagFiles(), findMemberDocumentation(), findObjCMethodDefinitions(), findSectionsInDocumentation(), findTagLessClasses(), findUsedTemplateInstances(), findUsingDeclarations(), findUsingDeclImports(), findUsingDirectives(), flushCachedTemplateRelations(), flushUnresolvedRelations(), Doxygen::functionNameLinkedMap, g_classEntries, g_s, g_useOutputTemplate, g_usingDeclarations, generateDiskNames(), CitationManager::generatePage(), generateXRefPages(), Portable::getenv(), getPrefixIndex(), Doxygen::groupLinkedMap, Doxygen::hiddenClassLinkedMap, Doxygen::indexList, inheritDocumentation(), LayoutDocManager::init(), IndexList::initialize(), CitationManager::instance(), FormulaManager::instance(), LayoutDocManager::instance(), QCString::isEmpty(), Doxygen::lookupCache, Doxygen::memberNameLinkedMap, mergeCategories(), Dir::mkdir(), msg(), Doxygen::namespaceLinkedMap, organizeSubGroups(), LayoutDocManager::parse(), parseFilesMultiThreading(), parseFilesSingleThreading(), Portable::pathListSeparator(), Portable::pid(), QCString::prepend(), qPrint(), qstricmp(), FormulaManager::readFormulas(), readTagFile(), resolveClassNestingRelations(), resolveUserReferences(), searchInputFiles(), setAnonymousEnumType(), Portable::setenv(), Dir::setPath(), sortMemberLists(), GroupDef::sortSubGroups(), QCString::sprintf(), stopDoxygen(), QCString::str(), transferFunctionDocumentation(), transferFunctionReferences(), transferRelatedFunctionDocumentation(), TRUE, vhdlCorrectMemberProperties() , 以及 warn_uncond().

被这些函数引用 main().

◆ readAliases()

void readAliases ( )

在文件 doxygen.cpp10432 行定义.

10433 {
10434  // add aliases to a dictionary
10435  const StringVector &aliasList = Config_getList(ALIASES);
10436  for (const auto &al : aliasList)
10437  {
10438  QCString alias(al);
10439  int i=alias.find('=');
10440  if (i>0)
10441  {
10442  QCString name=alias.left(i).stripWhiteSpace();
10443  QCString value=alias.right(alias.length()-i-1);
10444  //printf("Alias: found name='%s' value='%s'\n",qPrint(name),qPrint(value));
10445  if (!name.isEmpty())
10446  {
10447  auto it = Doxygen::aliasMap.find(name.str());
10448  if (it==Doxygen::aliasMap.end()) // insert new alias
10449  {
10450  Doxygen::aliasMap.insert(std::make_pair(name.str(),value.str()));
10451  }
10452  else // overwrite previous alias
10453  {
10454  it->second=value.str();
10455  }
10456  }
10457  }
10458  }
10459  expandAliases();
10460  escapeAliases();
10461 }

引用了 Doxygen::aliasMap, Config_getList, end(), escapeAliases(), expandAliases(), QCString::find(), QCString::isEmpty(), QCString::left(), QCString::length(), QCString::right(), QCString::str() , 以及 QCString::stripWhiteSpace().

被这些函数引用 adjustConfiguration().

◆ readConfiguration()

void readConfiguration ( int  argc,
char **  argv 
)

在文件 doxygen.cpp10738 行定义.

10739 {
10740  QCString versionString = getFullVersion();
10741 
10742  /**************************************************************************
10743  * Handle arguments *
10744  **************************************************************************/
10745 
10746  int optInd=1;
10747  QCString configName;
10748  QCString layoutName;
10749  QCString debugLabel;
10750  QCString formatName;
10751  QCString listName;
10752  bool genConfig=FALSE;
10753  bool shortList=FALSE;
10754  bool diffList=FALSE;
10755  bool updateConfig=FALSE;
10756  int retVal;
10757  bool quiet = false;
10758  while (optInd<argc && argv[optInd][0]=='-' &&
10759  (isalpha(argv[optInd][1]) || argv[optInd][1]=='?' ||
10760  argv[optInd][1]=='-')
10761  )
10762  {
10763  switch(argv[optInd][1])
10764  {
10765  case 'g':
10766  genConfig=TRUE;
10767  break;
10768  case 'l':
10769  if (optInd+1>=argc)
10770  {
10771  layoutName="DoxygenLayout.xml";
10772  }
10773  else
10774  {
10775  layoutName=argv[optInd+1];
10776  }
10777  writeDefaultLayoutFile(layoutName);
10778  cleanUpDoxygen();
10779  exit(0);
10780  break;
10781  case 'd':
10782  debugLabel=getArg(argc,argv,optInd);
10783  if (debugLabel.isEmpty())
10784  {
10785  devUsage();
10786  cleanUpDoxygen();
10787  exit(0);
10788  }
10789  retVal = Debug::setFlag(debugLabel);
10790  if (!retVal)
10791  {
10792  err("option \"-d\" has unknown debug specifier: \"%s\".\n",qPrint(debugLabel));
10793  devUsage();
10794  cleanUpDoxygen();
10795  exit(1);
10796  }
10797  break;
10798  case 'x':
10799  diffList=TRUE;
10800  break;
10801  case 's':
10802  shortList=TRUE;
10803  break;
10804  case 'u':
10805  updateConfig=TRUE;
10806  break;
10807  case 'e':
10808  formatName=getArg(argc,argv,optInd);
10809  if (formatName.isEmpty())
10810  {
10811  err("option \"-e\" is missing format specifier rtf.\n");
10812  cleanUpDoxygen();
10813  exit(1);
10814  }
10815  if (qstricmp(formatName.data(),"rtf")==0)
10816  {
10817  if (optInd+1>=argc)
10818  {
10819  err("option \"-e rtf\" is missing an extensions file name\n");
10820  cleanUpDoxygen();
10821  exit(1);
10822  }
10823  std::ofstream f;
10824  if (openOutputFile(argv[optInd+1],f))
10825  {
10826  TextStream t(&f);
10828  }
10829  cleanUpDoxygen();
10830  exit(0);
10831  }
10832  err("option \"-e\" has invalid format specifier.\n");
10833  cleanUpDoxygen();
10834  exit(1);
10835  break;
10836  case 'f':
10837  listName=getArg(argc,argv,optInd);
10838  if (listName.isEmpty())
10839  {
10840  err("option \"-f\" is missing list specifier.\n");
10841  cleanUpDoxygen();
10842  exit(1);
10843  }
10844  if (qstricmp(listName.data(),"emoji")==0)
10845  {
10846  if (optInd+1>=argc)
10847  {
10848  err("option \"-f emoji\" is missing an output file name\n");
10849  cleanUpDoxygen();
10850  exit(1);
10851  }
10852  std::ofstream f;
10853  if (openOutputFile(argv[optInd+1],f))
10854  {
10855  TextStream t(&f);
10857  }
10858  cleanUpDoxygen();
10859  exit(0);
10860  }
10861  err("option \"-f\" has invalid list specifier.\n");
10862  cleanUpDoxygen();
10863  exit(1);
10864  break;
10865  case 'w':
10866  formatName=getArg(argc,argv,optInd);
10867  if (formatName.isEmpty())
10868  {
10869  err("option \"-w\" is missing format specifier rtf, html or latex\n");
10870  cleanUpDoxygen();
10871  exit(1);
10872  }
10873  if (qstricmp(formatName.data(),"rtf")==0)
10874  {
10875  if (optInd+1>=argc)
10876  {
10877  err("option \"-w rtf\" is missing a style sheet file name\n");
10878  cleanUpDoxygen();
10879  exit(1);
10880  }
10881  std::ofstream f;
10882  if (openOutputFile(argv[optInd+1],f))
10883  {
10884  TextStream t(&f);
10886  }
10887  cleanUpDoxygen();
10888  exit(1);
10889  }
10890  else if (qstricmp(formatName.data(),"html")==0)
10891  {
10892  Config::init();
10893  if (optInd+4<argc || FileInfo("Doxyfile").exists())
10894  // explicit config file mentioned or default found on disk
10895  {
10896  QCString df = optInd+4<argc ? argv[optInd+4] : QCString("Doxyfile");
10897  if (!Config::parse(df)) // parse the config file
10898  {
10899  err("error opening or reading configuration file %s!\n",argv[optInd+4]);
10900  cleanUpDoxygen();
10901  exit(1);
10902  }
10903  }
10904  if (optInd+3>=argc)
10905  {
10906  err("option \"-w html\" does not have enough arguments\n");
10907  cleanUpDoxygen();
10908  exit(1);
10909  }
10913 
10914  setTranslator(Config_getEnum(OUTPUT_LANGUAGE));
10915 
10916  std::ofstream f;
10917  if (openOutputFile(argv[optInd+1],f))
10918  {
10919  TextStream t(&f);
10920  HtmlGenerator::writeHeaderFile(t, argv[optInd+3]);
10921  }
10922  f.close();
10923  if (openOutputFile(argv[optInd+2],f))
10924  {
10925  TextStream t(&f);
10927  }
10928  f.close();
10929  if (openOutputFile(argv[optInd+3],f))
10930  {
10931  TextStream t(&f);
10933  }
10934  cleanUpDoxygen();
10935  exit(0);
10936  }
10937  else if (qstricmp(formatName.data(),"latex")==0)
10938  {
10939  Config::init();
10940  if (optInd+4<argc || FileInfo("Doxyfile").exists())
10941  {
10942  QCString df = optInd+4<argc ? argv[optInd+4] : QCString("Doxyfile");
10943  if (!Config::parse(df))
10944  {
10945  err("error opening or reading configuration file %s!\n",argv[optInd+4]);
10946  cleanUpDoxygen();
10947  exit(1);
10948  }
10949  }
10950  if (optInd+3>=argc)
10951  {
10952  err("option \"-w latex\" does not have enough arguments\n");
10953  cleanUpDoxygen();
10954  exit(1);
10955  }
10959 
10960  setTranslator(Config_getEnum(OUTPUT_LANGUAGE));
10961 
10962  std::ofstream f;
10963  if (openOutputFile(argv[optInd+1],f))
10964  {
10965  TextStream t(&f);
10967  }
10968  f.close();
10969  if (openOutputFile(argv[optInd+2],f))
10970  {
10971  TextStream t(&f);
10973  }
10974  f.close();
10975  if (openOutputFile(argv[optInd+3],f))
10976  {
10977  TextStream t(&f);
10979  }
10980  cleanUpDoxygen();
10981  exit(0);
10982  }
10983  else
10984  {
10985  err("Illegal format specifier \"%s\": should be one of rtf, html or latex\n",qPrint(formatName));
10986  cleanUpDoxygen();
10987  exit(1);
10988  }
10989  break;
10990  case 'm':
10992  break;
10993  case 'v':
10994  version(false);
10995  cleanUpDoxygen();
10996  exit(0);
10997  break;
10998  case 'V':
10999  version(true);
11000  cleanUpDoxygen();
11001  exit(0);
11002  break;
11003  case '-':
11004  if (qstrcmp(&argv[optInd][2],"help")==0)
11005  {
11006  usage(argv[0],versionString);
11007  exit(0);
11008  }
11009  else if (qstrcmp(&argv[optInd][2],"version")==0)
11010  {
11011  version(false);
11012  cleanUpDoxygen();
11013  exit(0);
11014  }
11015  else if ((qstrcmp(&argv[optInd][2],"Version")==0) ||
11016  (qstrcmp(&argv[optInd][2],"VERSION")==0))
11017  {
11018  version(true);
11019  cleanUpDoxygen();
11020  exit(0);
11021  }
11022  else
11023  {
11024  err("Unknown option \"-%s\"\n",&argv[optInd][1]);
11025  usage(argv[0],versionString);
11026  exit(1);
11027  }
11028  break;
11029  case 'b':
11030  setvbuf(stdout,NULL,_IONBF,0);
11031  break;
11032  case 'q':
11033  quiet = true;
11034  break;
11035  case 'T':
11036  msg("Warning: this option activates output generation via Django like template files. "
11037  "This option is scheduled for doxygen 2.0, is currently incomplete and highly experimental! "
11038  "Only use if you are a doxygen developer\n");
11040  break;
11041  case 'h':
11042  case '?':
11043  usage(argv[0],versionString);
11044  exit(0);
11045  break;
11046  default:
11047  err("Unknown option \"-%c\"\n",argv[optInd][1]);
11048  usage(argv[0],versionString);
11049  exit(1);
11050  }
11051  optInd++;
11052  }
11053 
11054  /**************************************************************************
11055  * Parse or generate the config file *
11056  **************************************************************************/
11057 
11058  Config::init();
11059 
11060  FileInfo configFileInfo1("Doxyfile"),configFileInfo2("doxyfile");
11061  if (optInd>=argc)
11062  {
11063  if (configFileInfo1.exists())
11064  {
11065  configName="Doxyfile";
11066  }
11067  else if (configFileInfo2.exists())
11068  {
11069  configName="doxyfile";
11070  }
11071  else if (genConfig)
11072  {
11073  configName="Doxyfile";
11074  }
11075  else
11076  {
11077  err("Doxyfile not found and no input file specified!\n");
11078  usage(argv[0],versionString);
11079  exit(1);
11080  }
11081  }
11082  else
11083  {
11084  FileInfo fi(argv[optInd]);
11085  if (fi.exists() || qstrcmp(argv[optInd],"-")==0 || genConfig)
11086  {
11087  configName=argv[optInd];
11088  }
11089  else
11090  {
11091  err("configuration file %s not found!\n",argv[optInd]);
11092  usage(argv[0],versionString);
11093  exit(1);
11094  }
11095  }
11096 
11097  if (genConfig && g_useOutputTemplate)
11098  {
11099  generateTemplateFiles("templates");
11100  cleanUpDoxygen();
11101  exit(0);
11102  }
11103 
11104  if (genConfig)
11105  {
11106  generateConfigFile(configName,shortList);
11107  cleanUpDoxygen();
11108  exit(0);
11109  }
11110 
11111  if (!Config::parse(configName,updateConfig))
11112  {
11113  err("could not open or read configuration file %s!\n",qPrint(configName));
11114  cleanUpDoxygen();
11115  exit(1);
11116  }
11117 
11118  if (diffList)
11119  {
11121  compareDoxyfile();
11122  cleanUpDoxygen();
11123  exit(0);
11124  }
11125 
11126  if (updateConfig)
11127  {
11129  generateConfigFile(configName,shortList,TRUE);
11130  cleanUpDoxygen();
11131  exit(0);
11132  }
11133 
11134  /* Perlmod wants to know the path to the config file.*/
11135  FileInfo configFileInfo(configName.str());
11136  setPerlModDoxyfile(configFileInfo.absFilePath());
11137 
11138  /* handle -q option */
11139  if (quiet) Config_updateBool(QUIET,TRUE);
11140 }

引用了 FileInfo::absFilePath(), Config::checkAndCorrect(), cleanUpDoxygen(), compareDoxyfile(), Config_getBool, Config_getEnum, Config_updateBool, QCString::data(), devUsage(), err(), FileInfo::exists(), FALSE, g_dumpSymbolMap, g_useOutputTemplate, generateConfigFile(), generateTemplateFiles(), getArg(), Config::init(), EmojiEntityMapper::instance(), reg::isalpha(), QCString::isEmpty(), msg(), openOutputFile(), Config::parse(), Config::postProcess(), qPrint(), qstrcmp(), qstricmp(), Debug::setFlag(), setPerlModDoxyfile(), setTranslator(), QCString::str(), TRUE, Config::updateObsolete(), usage(), version(), writeDefaultLayoutFile(), EmojiEntityMapper::writeEmojiFile(), RTFGenerator::writeExtensionsFile(), HtmlGenerator::writeFooterFile(), LatexGenerator::writeFooterFile(), HtmlGenerator::writeHeaderFile(), LatexGenerator::writeHeaderFile(), RTFGenerator::writeStyleSheetFile(), HtmlGenerator::writeStyleSheetFile() , 以及 LatexGenerator::writeStyleSheetFile().

被这些函数引用 main().

◆ readFileOrDirectory()

void readFileOrDirectory ( const QCString s,
FileNameLinkedMap fnDict,
StringUnorderedSet exclSet,
const StringVector patList,
const StringVector exclPatList,
StringVector resultList,
StringUnorderedSet resultSet,
bool  recursive,
bool  errorIfNotExist = TRUE,
StringUnorderedSet killSet = 0,
StringSet paths = 0 
)

在文件 doxygen.cpp10302 行定义.

10314 {
10315  //printf("killSet count=%d\n",killSet ? (int)killSet->size() : -1);
10316  // strip trailing slashes
10317  if (s.isEmpty()) return;
10318 
10319  g_pathsVisited.clear();
10320 
10321  FileInfo fi(s.str());
10322  //printf("readFileOrDirectory(%s)\n",s);
10323  {
10324  if (exclSet==0 || exclSet->find(fi.absFilePath())==exclSet->end())
10325  {
10326  if (!fi.exists() || !fi.isReadable())
10327  {
10328  if (errorIfNotExist)
10329  {
10330  warn_uncond("source '%s' is not a readable file or directory... skipping.\n",qPrint(s));
10331  }
10332  }
10333  else if (!Config_getBool(EXCLUDE_SYMLINKS) || !fi.isSymLink())
10334  {
10335  if (fi.isFile())
10336  {
10337  std::string dirPath = fi.dirPath(true);
10338  std::string filePath = fi.absFilePath();
10339  if (paths && !dirPath.empty())
10340  {
10341  paths->insert(dirPath);
10342  }
10343  //printf("killSet.find(%s)=%d\n",qPrint(fi.absFilePath()),killSet.find(fi.absFilePath())!=killSet.end());
10344  if (killSet==0 || killSet->find(filePath)==killSet->end())
10345  {
10346  std::string name=fi.fileName();
10347  if (fnMap)
10348  {
10349  std::unique_ptr<FileDef> fd { createFileDef(QCString(dirPath+"/"),QCString(name)) };
10350  if (!name.empty())
10351  {
10352  FileName *fn = fnMap->add(QCString(name),QCString(filePath));
10353  fn->push_back(std::move(fd));
10354  }
10355  }
10356  if (resultList || resultSet)
10357  {
10358  if (resultList) resultList->push_back(filePath);
10359  if (resultSet) resultSet->insert(filePath);
10360  }
10361 
10362  if (killSet) killSet->insert(fi.absFilePath());
10363  }
10364  }
10365  else if (fi.isDir()) // readable dir
10366  {
10367  readDir(&fi,fnMap,exclSet,patList,
10368  exclPatList,resultList,resultSet,errorIfNotExist,
10369  recursive,killSet,paths);
10370  }
10371  }
10372  }
10373  }
10374 }

引用了 FileInfo::absFilePath(), LinkedMap< T, Hash, KeyEqual, Map >::add(), Config_getBool, createFileDef(), FileInfo::dirPath(), FileInfo::exists(), FileInfo::fileName(), g_pathsVisited(), FileInfo::isDir(), QCString::isEmpty(), FileInfo::isFile(), FileInfo::isReadable(), FileInfo::isSymLink(), qPrint(), readDir(), QCString::str() , 以及 warn_uncond().

被这些函数引用 searchInputFiles().

◆ readFormulaRepository()

void readFormulaRepository ( QCString  dir,
bool  cmp = FALSE 
)
createNamespaceDef
NamespaceDefMutable * createNamespaceDef(const QCString &defFileName, int defLine, int defColumn, const QCString &name, const QCString &ref, const QCString &refFile, const QCString &type, bool isPublished)
Factory method to create new NamespaceDef instance
Definition: namespacedef.cpp:163
Debug::ExtCmd
@ ExtCmd
Definition: debug.h:36
StringVector
std::vector< std::string > StringVector
Definition: containers.h:32
flushUnresolvedRelations
static void flushUnresolvedRelations()
Definition: doxygen.cpp:8796
buildClassDocList
static void buildClassDocList(const Entry *root)
Definition: doxygen.cpp:1159
Config::init
void init()
DotManager::instance
static DotManager * instance()
Definition: dot.cpp:77
reg::isalpha
static bool isalpha(char c)
Definition: regex.cpp:38
Dir::currentDirPath
static std::string currentDirPath()
Definition: dir.cpp:282
FormulaManager::readFormulas
void readFormulas(const QCString &dir, bool doCompare=false)
Definition: formula.cpp:71
HtmlGenerator
Generator for HTML output
Definition: htmlgen.h:66
copyExtraFiles
static void copyExtraFiles(const StringVector &files, const QCString &filesOption, const QCString &outputOption)
Definition: doxygen.cpp:9716
transferRelatedFunctionDocumentation
static void transferRelatedFunctionDocumentation()
Definition: doxygen.cpp:3934
Cache< std::string, LookupInfo >
generateConfigFile
static void generateConfigFile(const QCString &configFile, bool shortList, bool updateOnly=FALSE)
Definition: doxygen.cpp:9539
g_usingDeclarations
static StringSet g_usingDeclarations
Definition: doxygen.cpp:174
Doxygen::mainPage
static std::unique_ptr< PageDef > mainPage
Definition: doxygen.h:83
FileName
Class representing all files with a certain base name
Definition: filename.h:28
Config_getEnum
#define Config_getEnum(name)
Definition: config.h:35
expandAliases
static void expandAliases()
Definition: doxygen.cpp:10378
generateXML
void generateXML()
Definition: xmlgen.cpp:1888
g_pathsVisited
static StringUnorderedSet g_pathsVisited(1009)
buildFileList
static void buildFileList(const Entry *root)
Definition: doxygen.cpp:470
setTranslator
void setTranslator(OUTPUT_LANGUAGE_t langName)
Definition: language.cpp:158
finishWarnExit
void finishWarnExit()
Definition: message.cpp:271
DotManager::run
bool run() const
Definition: dot.cpp:154
Doxygen::imageNameLinkedMap
static FileNameLinkedMap * imageNameLinkedMap
Definition: doxygen.h:89
Dir::remove
bool remove(const std::string &path, bool acceptsAbsPath=true) const
Definition: dir.cpp:256
Dir
Class representing a directory in the file system
Definition: dir.h:68
generatePerlMod
void generatePerlMod()
Definition: perlmodgen.cpp:2958
findMemberDocumentation
static void findMemberDocumentation(const Entry *root)
Definition: doxygen.cpp:6959
Doxygen::diaFileNameLinkedMap
static FileNameLinkedMap * diaFileNameLinkedMap
Definition: doxygen.h:92
DotManager::deleteInstance
static void deleteInstance()
Definition: dot.cpp:86
writeJavaScriptSearchIndex
void writeJavaScriptSearchIndex()
Definition: searchindex.cpp:905
buildGroupList
static void buildGroupList(const Entry *root)
Definition: doxygen.cpp:400
findClassEntries
static void findClassEntries(const Entry *root)
Definition: doxygen.cpp:4824
Doxygen::hiddenClassLinkedMap
static ClassLinkedMap * hiddenClassLinkedMap
Definition: doxygen.h:79
Htags::loadFilemap
static bool loadFilemap(const QCString &htmldir)
Definition: htags.cpp:109
Doxygen::conceptLinkedMap
static ConceptLinkedMap * conceptLinkedMap
Definition: doxygen.h:80
Htags::useHtags
static bool useHtags
Definition: htags.h:23
countMembers
static void countMembers()
Definition: doxygen.cpp:8405
generateDiskNames
static void generateDiskNames()
Definition: doxygen.cpp:9739
Doxygen::dotFileNameLinkedMap
static FileNameLinkedMap * dotFileNameLinkedMap
Definition: doxygen.h:90
transferFunctionDocumentation
static void transferFunctionDocumentation()
Definition: doxygen.cpp:3855
QCString::isEmpty
bool isEmpty() const
Returns TRUE iff the string is empty
Definition: qcstring.h:144
RTFGenerator
Generator for RTF output.
Definition: rtfgen.h:25
initFileMemberIndices
void initFileMemberIndices()
Definition: index.cpp:2801
createOutputDirectory
static QCString createOutputDirectory(const QCString &baseDirName, const QCString &formatDirName, const char *defaultDirName)
Definition: doxygen.cpp:11329
transferFunctionReferences
static void transferFunctionReferences()
Definition: doxygen.cpp:3888
Doxygen::pageLinkedMap
static PageLinkedMap * pageLinkedMap
Definition: doxygen.h:82
sortMemberLists
static void sortMemberLists()
Definition: doxygen.cpp:8330
RTFGenerator::writeStyleSheetFile
static void writeStyleSheetFile(TextStream &t)
Definition: rtfgen.cpp:102
Doxygen::indexList
static IndexList * indexList
Definition: doxygen.h:114
findGroupScope
static void findGroupScope(const Entry *root)
Definition: doxygen.cpp:415
flushCachedTemplateRelations
static void flushCachedTemplateRelations()
Definition: doxygen.cpp:8742
computeTooltipTexts
static void computeTooltipTexts()
Definition: doxygen.cpp:8377
warn_flush
void warn_flush()
Definition: message.cpp:237
generateGroupDocs
static void generateGroupDocs()
Definition: doxygen.cpp:9377
FormulaManager::Format::Vector
@ Vector
generateExampleDocs
static void generateExampleDocs()
Definition: doxygen.cpp:9338
devUsage
static void devUsage()
Definition: doxygen.cpp:10501
setPerlModDoxyfile
void setPerlModDoxyfile(const QCString &qs)
Definition: perlmodgen.cpp:1508
FormulaManager::instance
static FormulaManager & instance()
Definition: formula.cpp:65
buildDefineList
static void buildDefineList()
Definition: doxygen.cpp:8294
Doxygen::globalScope
static NamespaceDefMutable * globalScope
Definition: doxygen.h:102
inheritDocumentation
static void inheritDocumentation()
Definition: doxygen.cpp:8555
HtmlGenerator::writeStyleSheetFile
static void writeStyleSheetFile(TextStream &t)
Definition: htmlgen.cpp:1101
generateNamespaceDocs
static void generateNamespaceDocs()
Definition: doxygen.cpp:9481
QCString::str
std::string str() const
Definition: qcstring.h:442
LinkedMap< MemberName >::Ptr
std::unique_ptr< MemberName > Ptr
Definition: linkedmap.h:51
HtmlGenerator::writeSearchData
static void writeSearchData(const QCString &dir)
Definition: htmlgen.cpp:1044
IndexList::addIndex
void addIndex(As &&... args)
Add an index generator to the list, using a syntax similar to std::make_unique<T>()
Definition: index.h:78
Doxygen::aliasMap
static StringMap aliasMap
Definition: doxygen.h:99
PlantumlManager::instance
static PlantumlManager & instance()
Definition: plantuml.cpp:124
g_s
class Statistics g_s
dumpSymbolMap
static void dumpSymbolMap()
Definition: doxygen.cpp:10487
Doxygen::parseSourcesNeeded
static bool parseSourcesNeeded
Definition: doxygen.h:104
err
void err(const char *fmt,...)
Definition: message.cpp:203
OutputList::size
size_t size() const
Definition: outputlist.h:51
QCString::at
char & at(size_t i)
Returns a reference to the character at index i.
Definition: qcstring.h:477
TextStream
Text streaming class that buffers data.
Definition: textstream.h:33
Doxygen::dirLinkedMap
static DirLinkedMap * dirLinkedMap
Definition: doxygen.h:109
SearchIndexIntf::Internal
@ Internal
Definition: searchindex.h:70
QCString::find
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:38
CitationManager::instance
static CitationManager & instance()
Definition: cite.cpp:56
findEnums
static void findEnums(const Entry *root)
Definition: doxygen.cpp:7015
ClangUsrMap
std::unordered_map< std::string, const Definition * > ClangUsrMap
Definition: doxygen.h:69
generateConceptDocs
static void generateConceptDocs()
Definition: doxygen.cpp:8534
computeClassRelations
static void computeClassRelations()
Definition: doxygen.cpp:4895
FormulaManager::clear
void clear()
Definition: formula.cpp:461
Config::deinit
void deinit()
parseFilesMultiThreading
static void parseFilesMultiThreading(const std::shared_ptr< Entry > &root)
parse the list of input files
Definition: doxygen.cpp:9898
OutputList::writeStyleInfo
void writeStyleInfo(int part)
Definition: outputlist.h:86
Doxygen::exampleNameLinkedMap
static FileNameLinkedMap * exampleNameLinkedMap
Definition: doxygen.h:86
createJavaScriptSearchIndex
void createJavaScriptSearchIndex()
Definition: searchindex.cpp:751
HtmlGenerator::writeExternalSearchPage
static void writeExternalSearchPage()
Definition: htmlgen.cpp:2725
resolveClassNestingRelations
static void resolveClassNestingRelations()
Definition: doxygen.cpp:1312
addToIndices
static void addToIndices()
Definition: doxygen.cpp:7608
LayoutDocManager::init
void init()
Definition: layout.cpp:1556
begin
DirIterator begin(DirIterator it) noexcept
Definition: dir.cpp:123
FileNameLinkedMap
Ordered dictionary of FileName objects.
Definition: filename.h:72
Debug::isFlagSet
static bool isFlagSet(DebugMask mask)
Definition: debug.cpp:99
buildConceptDocList
static void buildConceptDocList(const Entry *root)
Definition: doxygen.cpp:1301
Doxygen::symbolMap
static SymbolMap< Definition > * symbolMap
Definition: doxygen.h:106
Portable::getenv
QCString getenv(const QCString &variable)
Definition: portable.cpp:279
DirLinkedMap
A linked map of directories
Definition: dirdef.h:176
organizeSubGroups
static void organizeSubGroups(const Entry *root)
Definition: doxygen.cpp:458
end
DirIterator end(const DirIterator &) noexcept
Definition: dir.cpp:128
Doxygen::generatingXmlOutput
static bool generatingXmlOutput
Definition: doxygen.h:117
initResources
void initResources()
LatexGenerator::writeStyleSheetFile
static void writeStyleSheetFile(TextStream &t)
Definition: latexgen.cpp:523
g_outputList
static OutputList * g_outputList
Definition: doxygen.cpp:173
Portable::setShortDir
void setShortDir()
Definition: portable.cpp:534
version
static void version(const bool extended)
Definition: doxygen.cpp:10515
HtmlGenerator::writeFooterFile
static void writeFooterFile(TextStream &t)
Definition: htmlgen.cpp:1112
Doxygen::inputNameLinkedMap
static FileNameLinkedMap * inputNameLinkedMap
Definition: doxygen.h:88
buildConceptList
static void buildConceptList(const Entry *root)
Definition: doxygen.cpp:1292
copyLatexStyleSheet
static void copyLatexStyleSheet()
Definition: doxygen.cpp:9628
findInheritedTemplateInstances
static void findInheritedTemplateInstances()
Definition: doxygen.cpp:4854
findIncludedUsingDirectives
static void findIncludedUsingDirectives()
Definition: doxygen.cpp:2169
Config_updateList
#define Config_updateList(name,...)
Definition: config.h:42
uint
unsigned uint
Definition: qcstring.h:40
Config_updateString
#define Config_updateString(name, value)
Definition: config.h:38
OutputList
Class representing a list of output generators that are written to in parallel.
Definition: outputlist.h:37
Config::postProcess
void postProcess(bool clearHeaderAndFooter, bool compare=FALSE)
findDocumentedEnumValues
static void findDocumentedEnumValues()
Definition: doxygen.cpp:7568
warn_uncond
void warn_uncond(const char *fmt,...)
Definition: message.cpp:194
findUsedTemplateInstances
static void findUsedTemplateInstances()
Definition: doxygen.cpp:4875
Statistics::begin
void begin(const char *name)
Definition: doxygen.cpp:209
createFileDef
FileDef * createFileDef(const QCString &p, const QCString &n, const QCString &ref, const QCString &dn)
Definition: filedef.cpp:190
g_compoundKeywords
static StringSet g_compoundKeywords
Definition: doxygen.cpp:172
findDefineDocumentation
static void findDefineDocumentation(Entry *root)
Definition: doxygen.cpp:8853
Doxygen::clangAssistedParsing
static bool clangAssistedParsing
Definition: doxygen.h:119
QCString::stripWhiteSpace
QCString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
Definition: qcstring.h:243
Config_getInt
#define Config_getInt(name)
Definition: config.h:34
generateXRefPages
static void generateXRefPages()
Definition: doxygen.cpp:5095
Doxygen::functionNameLinkedMap
static MemberNameLinkedMap * functionNameLinkedMap
Definition: doxygen.h:94
g_useOutputTemplate
static bool g_useOutputTemplate
Definition: doxygen.cpp:177
stopDoxygen
static void stopDoxygen(int)
Definition: doxygen.cpp:11229
QCString::left
QCString left(size_t len) const
Definition: qcstring.h:212
LatexGenerator::writeHeaderFile
static void writeHeaderFile(TextStream &t)
Definition: latexgen.cpp:511
findObjCMethodDefinitions
static void findObjCMethodDefinitions(const Entry *root)
Definition: doxygen.cpp:6988
Debug::startTimer
static void startTimer()
Definition: debug.cpp:133
usage
static void usage(const QCString &name, const QCString &versionString)
Definition: doxygen.cpp:10544
GroupLinkedMap
Definition: groupdef.h:123
Portable::sysTimerStart
void sysTimerStart()
Definition: portable.cpp:470
Doxygen::parserManager
static ParserManager * parserManager
Definition: doxygen.h:111
LatexGenerator::init
static void init()
Definition: latexgen.cpp:465
initSearchIndexer
void initSearchIndexer()
Definition: searchindex.cpp:1242
findUsingDeclarations
static void findUsingDeclarations(const Entry *root, bool filterPythonPackages)
Definition: doxygen.cpp:1986
updateLanguageMapping
bool updateLanguageMapping(const QCString &extension, const QCString &language)
Definition: util.cpp:5469
generateTemplateFiles
void generateTemplateFiles(const QCString &templateDir)
Definition: context.cpp:9137
generateFileSources
static void generateFileSources()
Definition: doxygen.cpp:7947
LatexGenerator::writeFooterFile
static void writeFooterFile(TextStream &t)
Definition: latexgen.cpp:517
qstricmp
int qstricmp(const char *str1, const char *str2)
Definition: qcstring.cpp:433
initDefaultExtensionMapping
void initDefaultExtensionMapping()
Definition: util.cpp:5505
theTranslator
Translator * theTranslator
Definition: language.cpp:156
IndexList::finalize
void finalize()
Definition: index.h:91
MemberNameLinkedMap
Ordered dictionary of MemberName objects.
Definition: membername.h:61
HtmlHelp
A class that generated the HTML Help specific files.
Definition: htmlhelp.h:32
IndexList
A list of index interfaces.
Definition: index.h:55
initWarningFormat
void initWarningFormat()
Definition: message.cpp:34
readTagFile
static void readTagFile(const std::shared_ptr< Entry > &root, const QCString &tagLine)
Definition: doxygen.cpp:9591
findEnumDocumentation
static void findEnumDocumentation(const Entry *root)
Definition: doxygen.cpp:7446
Doxygen::groupLinkedMap
static GroupLinkedMap * groupLinkedMap
Definition: doxygen.h:96
g_successfulRun
static bool g_successfulRun
Definition: doxygen.cpp:175
writeDefaultLayoutFile
void writeDefaultLayoutFile(const QCString &fileName)
Definition: layout.cpp:1614
FormulaManager::HighDPI::On
@ On
resolveUserReferences
static void resolveUserReferences()
Definition: doxygen.cpp:9199
CitationManager::generatePage
void generatePage()
Generate the citations page
Definition: cite.cpp:192
QCString::lower
QCString lower() const
Definition: qcstring.h:232
PlantumlManager::run
void run()
Run plant UML tool for all images
Definition: plantuml.cpp:282
addCodeOnlyMappings
void addCodeOnlyMappings()
Definition: util.cpp:5568
RTFGenerator::init
static void init()
Definition: rtfgen.cpp:170
PageLinkedMap
Definition: pagedef.h:74
countDataStructures
void countDataStructures()
Definition: index.cpp:87
findUsingDirectives
static void findUsingDirectives(const Entry *root)
Definition: doxygen.cpp:1829
Debug::setFlag
static int setFlag(const QCString &label)
Definition: debug.cpp:82
Config::checkAndCorrect
void checkAndCorrect(bool quiet)
distributeMemberGroupDocumentation
static void distributeMemberGroupDocumentation()
Definition: doxygen.cpp:8652
TRUE
#define TRUE
Definition: qcstring.h:36
Portable::correct_path
void correct_path()
Correct a possible wrong PATH variable
Definition: portable.cpp:515
addMembersToMemberGroup
static void addMembersToMemberGroup()
Definition: doxygen.cpp:8615
findSectionsInDocumentation
static void findSectionsInDocumentation()
Definition: doxygen.cpp:8689
Portable::system
int system(const QCString &command, const QCString &args, bool commandHasConsole=true)
Definition: portable.cpp:42
Dir::setCurrent
static bool setCurrent(const std::string &path)
Definition: dir.cpp:290
Doxygen::expandAsDefinedSet
static StringUnorderedSet expandAsDefinedSet
Definition: doxygen.h:101
setAnonymousEnumType
static void setAnonymousEnumType()
Definition: doxygen.cpp:8391
Portable::getSysElapsedTime
double getSysElapsedTime()
Definition: portable.cpp:482
Config_updateBool
#define Config_updateBool(name, value)
Definition: config.h:39
findDirDocumentation
static void findDirDocumentation(const Entry *root)
Definition: doxygen.cpp:8974
EclipseHelp
Generator for Eclipse help files.
Definition: eclipsehelp.h:40
ManGenerator::init
static void init()
Definition: mangen.cpp:101
Htags::execute
static bool execute(const QCString &htmldir)
Definition: htags.cpp:38
readDir
static void readDir(FileInfo *fi, FileNameLinkedMap *fnMap, StringUnorderedSet *exclSet, const StringVector *patList, const StringVector *exclPatList, StringVector *resultList, StringUnorderedSet *resultSet, bool errorIfNotExist, bool recursive, StringUnorderedSet *killSet, StringSet *paths)
Definition: doxygen.cpp:10193
generateDirDocs
void generateDirDocs(OutputList &ol)
Definition: dirdef.cpp:1094
ConceptLinkedMap
Definition: conceptdef.h:63
getArg
static const char * getArg(int argc, char **argv, int &optInd)
Definition: doxygen.cpp:10583
Mappers::freeMappers
static void freeMappers()
Definition: cmdmapper.cpp:266
IndexList::initialize
void initialize()
Definition: index.h:89
cleanUpDoxygen
void cleanUpDoxygen()
Definition: doxygen.cpp:10694
generateDEF
void generateDEF()
Definition: defgen.cpp:526
Qhp
Definition: qhp.h:23
getQchFileName
static QCString getQchFileName()
Definition: doxygen.cpp:11352
getPrefixIndex
int getPrefixIndex(const QCString &name)
Definition: util.cpp:3357
Portable::pathListSeparator
QCString pathListSeparator()
Definition: portable.cpp:356
Debug::elapsedTime
static double elapsedTime()
Definition: debug.cpp:138
computeIdealCacheParam
static int computeIdealCacheParam(size_t v)
Definition: doxygen.cpp:10726
FTVHelp::generateTreeViewImages
static void generateTreeViewImages()
Definition: ftvhelp.cpp:763
DocbookGenerator::init
static void init()
Definition: docbookgen.cpp:311
generateFileDocs
static void generateFileDocs()
Definition: doxygen.cpp:8151
Doxygen::searchIndex
static SearchIndexIntf * searchIndex
Definition: doxygen.h:105
buildCompleteMemberLists
static void buildCompleteMemberLists()
Definition: doxygen.cpp:7917
generatePageDocs
static void generatePageDocs()
Definition: doxygen.cpp:9267
QCString::mid
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
Definition: qcstring.h:224
initNamespaceMemberIndices
void initNamespaceMemberIndices()
Definition: index.cpp:2733
Doxygen::filterDBFileName
static QCString filterDBFileName
Definition: doxygen.h:113
FormulaManager::Format::Bitmap
@ Bitmap
FormulaManager
Definition: formula.h:27
buildExampleList
static void buildExampleList(Entry *root)
Definition: doxygen.cpp:9286
Doxygen::memberNameLinkedMap
static MemberNameLinkedMap * memberNameLinkedMap
Definition: doxygen.h:93
RTFGenerator::preProcessFileInplace
static bool preProcessFileInplace(const QCString &path, const QCString &name)
This is an API to a VERY brittle RTF preprocessor that combines nested RTF files.
Definition: rtfgen.cpp:2297
HtmlGenerator::writeSearchPage
static void writeSearchPage()
Definition: htmlgen.cpp:2634
Config_getBool
#define Config_getBool(name)
Definition: config.h:33
buildListOfUsingDecls
static void buildListOfUsingDecls(const Entry *root)
Definition: doxygen.cpp:1973
buildPageList
static void buildPageList(Entry *root)
Definition: doxygen.cpp:9036
writeTagFile
static void writeTagFile()
Definition: doxygen.cpp:11244
parseFilesSingleThreading
static void parseFilesSingleThreading(const std::shared_ptr< Entry > &root)
parse the list of input files
Definition: doxygen.cpp:10040
buildClassList
static void buildClassList(const Entry *root)
Definition: doxygen.cpp:1147
SearchIndexIntf::write
virtual void write(const QCString &file)=0
FormulaManager::hasFormulas
bool hasFormulas() const
Definition: formula.cpp:490
Doxygen::htmlFileExtension
static QCString htmlFileExtension
Definition: doxygen.h:103
SectionManager::instance
static SectionManager & instance()
returns a reference to the singleton
Definition: section.h:172
generateOutputViaTemplate
void generateOutputViaTemplate()
Definition: context.cpp:8994
Config::updateObsolete
void updateObsolete()
msg
void msg(const char *fmt,...)
Definition: message.cpp:53
writeGraphInfo
void writeGraphInfo(OutputList &ol)
Definition: index.cpp:3686
finalizeSearchIndexer
void finalizeSearchIndexer()
Definition: searchindex.cpp:1264
ParserManager::registerParser
void registerParser(const QCString &name, OutlineParserFactory outlineParserFactory, CodeParserFactory codeParserFactory)
Registers an additional parser.
Definition: parserintf.h:179
LayoutDocManager::instance
static LayoutDocManager & instance()
Returns a reference to this singleton.
Definition: layout.cpp:1574
checkPageRelations
static void checkPageRelations()
Definition: doxygen.cpp:9179
term
void term(const char *fmt,...)
Definition: message.cpp:220
writeIndexHierarchy
void writeIndexHierarchy(OutputList &ol)
Definition: index.cpp:5155
computeMemberRelations
static void computeMemberRelations()
Definition: doxygen.cpp:7802
computeTemplateClassRelations
static void computeTemplateClassRelations()
Definition: doxygen.cpp:4927
mergeCategories
static void mergeCategories()
Definition: doxygen.cpp:7895
g_dumpSymbolMap
static bool g_dumpSymbolMap
Definition: doxygen.cpp:176
FileInfo
Minimal replacement for QFileInfo.
Definition: fileinfo.h:22
VhdlDocGen::computeVhdlComponentRelations
static void computeVhdlComponentRelations()
Definition: vhdldocgen.cpp:2501
qPrint
const char * qPrint(const char *s)
Definition: qcstring.h:589
Debug::Time
@ Time
Definition: debug.h:35
LatexGenerator
Generator for LaTeX output.
Definition: latexgen.h:79
vhdlCorrectMemberProperties
static void vhdlCorrectMemberProperties()
Definition: doxygen.cpp:7766
exitDoxygen
static void exitDoxygen()
Definition: doxygen.cpp:11316
Config_getString
#define Config_getString(name)
Definition: config.h:32
addMembersToIndex
static void addMembersToIndex()
Definition: doxygen.cpp:7576
generateSqlite3
void generateSqlite3()
Definition: sqlite3gen.cpp:2588
Qhp::getQhpFileName
static QCString getQhpFileName()
Definition: qhp.cpp:286
findMainPage
static void findMainPage(Entry *root)
Definition: doxygen.cpp:9063
DocSets
A class that generates docset files.
Definition: docsets.h:32
generateClassDocs
static void generateClassDocs()
Definition: doxygen.cpp:8526
escapeAliases
static void escapeAliases()
Definition: doxygen.cpp:10388
addSTLSupport
void addSTLSupport(std::shared_ptr< Entry > &root)
Add stub entries for the most used classes in the standard template library
Definition: stlsupport.cpp:264
Config::parse
bool parse(const QCString &fileName, bool update=FALSE)
compareDoxyfile
static void compareDoxyfile()
Definition: doxygen.cpp:9573
computePageRelations
static void computePageRelations(Entry *root)
Definition: doxygen.cpp:9145
Portable::sysTimerStop
void sysTimerStop()
Definition: portable.cpp:475
ParserManager
Manages programming language parsers.
Definition: parserintf.h:145
Doxygen::namespaceLinkedMap
static NamespaceLinkedMap * namespaceLinkedMap
Definition: doxygen.h:97
addListReferences
static void addListReferences()
Definition: doxygen.cpp:5029
Portable::pid
unsigned int pid()
Definition: portable.cpp:207
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
Doxygen::mscFileNameLinkedMap
static FileNameLinkedMap * mscFileNameLinkedMap
Definition: doxygen.h:91
initClassMemberIndices
void initClassMemberIndices()
Definition: index.cpp:2649
Doxygen::lookupCache
static Cache< std::string, LookupInfo > * lookupCache
Definition: doxygen.h:108
qstrcmp
int qstrcmp(const char *str1, const char *str2)
Definition: qcstring.h:82
buildNamespaceList
static void buildNamespaceList(const Entry *root)
Definition: doxygen.cpp:1648
addEnumValuesToEnums
static void addEnumValuesToEnums(const Entry *root)
Definition: doxygen.cpp:7182
FormulaManager::generateImages
void generateImages(const QCString &outputDir, Format format, HighDPI hd=HighDPI::Off) const
Definition: formula.cpp:130
Portable::setenv
void setenv(const QCString &variable, const QCString &value)
Definition: portable.cpp:246
Portable::isAbsolutePath
bool isAbsolutePath(const QCString &fileName)
Definition: portable.cpp:496
EmojiEntityMapper::instance
static EmojiEntityMapper * instance()
Returns the one and only instance of the Emoji entity mapper
Definition: emoji.cpp:1536
Statistics::print
void print()
Definition: doxygen.cpp:221
FTVHelp
A class that generates a dynamic tree view side panel.
Definition: ftvhelp.h:36
Statistics::end
void end()
Definition: doxygen.cpp:215
OutputList::add
void add()
Definition: outputlist.h:46
findMainPageTagFiles
static void findMainPageTagFiles(Entry *root)
Definition: doxygen.cpp:9133
copyStyleSheet
static void copyStyleSheet()
Definition: doxygen.cpp:9655
copyLogo
static void copyLogo(const QCString &outputOption)
Definition: doxygen.cpp:9696
SymbolMap< Definition >
DocbookGenerator
Definition: docbookgen.h:93
searchInputFiles
void searchInputFiles()
Definition: doxygen.cpp:11369
ClassLinkedMap
Definition: classlist.h:26
LinkedMap::clear
void clear()
Definition: linkedmap.h:225
Doxygen::classLinkedMap
static ClassLinkedMap * classLinkedMap
Definition: doxygen.h:78
LayoutDocManager::parse
void parse(const QCString &fileName)
Parses a user provided layout
Definition: layout.cpp:1600
addSourceReferences
static void addSourceReferences()
Definition: doxygen.cpp:8215
EmojiEntityMapper::writeEmojiFile
void writeEmojiFile(TextStream &t)
Writes the list of supported emojis to the given file.
Definition: emoji.cpp:1567
readAliases
void readAliases()
Definition: doxygen.cpp:10432
HtmlGenerator::init
static void init()
Definition: htmlgen.cpp:930
buildDirectories
void buildDirectories()
Definition: dirdef.cpp:1005
HtmlGenerator::writeHeaderFile
static void writeHeaderFile(TextStream &t, const QCString &cssname)
Definition: htmlgen.cpp:1106
findTagLessClasses
static void findTagLessClasses(std::vector< ClassDefMutable * > &candidates, const ClassDef *cd)
Definition: doxygen.cpp:1607
createTemplateInstanceMembers
static void createTemplateInstanceMembers()
Definition: doxygen.cpp:7876
QCString::right
QCString right(size_t len) const
Definition: qcstring.h:217
ManGenerator
Generator for Man page output.
Definition: mangen.h:24
QCString::prepend
QCString & prepend(const char *s)
Definition: qcstring.h:339
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
openOutputFile
bool openOutputFile(const QCString &outFile, std::ofstream &f)
Definition: util.cpp:7039
computeDirDependencies
void computeDirDependencies()
Definition: dirdef.cpp:1078
QCString::sprintf
QCString & sprintf(const char *format,...)
Definition: qcstring.cpp:24
HtmlGenerator::writeTabData
static void writeTabData()
Additional initialization after indices have been created
Definition: htmlgen.cpp:1013
NamespaceLinkedMap
Definition: namespacedef.h:41
combineUsingRelations
static void combineUsingRelations()
Definition: doxygen.cpp:8590
Doxygen::clangUsrMap
static ClangUsrMap * clangUsrMap
Definition: doxygen.h:107
computeMemberReferences
static void computeMemberReferences()
Definition: doxygen.cpp:4996
Doxygen::spaces
static QCString spaces
Definition: doxygen.h:116
OutputList::cleanup
void cleanup()
Definition: outputlist.h:479
Cache::clear
void clear()
Clears all values in the cache.
Definition: cache.h:144
findUsingDeclImports
static void findUsingDeclImports(const Entry *root)
Definition: doxygen.cpp:2075
Config_getList
#define Config_getList(name)
Definition: config.h:37
RTFGenerator::writeExtensionsFile
static void writeExtensionsFile(TextStream &t)
Definition: rtfgen.cpp:118
FALSE
#define FALSE
Definition: qcstring.h:33
g_classEntries
static std::multimap< std::string, const Entry * > g_classEntries
Definition: doxygen.cpp:170
Doxygen::exampleLinkedMap
static PageLinkedMap * exampleLinkedMap
Definition: doxygen.h:81
Doxygen::includeNameLinkedMap
static FileNameLinkedMap * includeNameLinkedMap
Definition: doxygen.h:85
QCString
This is an alternative implementation of QCString.
Definition: qcstring.h:108