#include "containers.h"
#include "membergroup.h"
#include "dirdef.h"
#include "memberlist.h"
#include "define.h"
#include "cache.h"
#include "symbolmap.h"
浏览源代码.
|
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 |
◆ AtomicInt
#define AtomicInt std::atomic_int |
◆ THREAD_LOCAL
#define THREAD_LOCAL thread_local |
◆ ClangUsrMap
◆ adjustConfiguration()
void adjustConfiguration |
( |
| ) |
|
adjust globals that depend on configuration settings.
在文件 doxygen.cpp 第 11153 行定义.
11180 for (
const auto &mapping : extMaps)
11182 QCString mapStr = mapping.c_str();
11183 int i=mapStr.
find(
'=');
11199 err(
"Failed to map file extension '%s' to unsupported language '%s'.\n"
11200 "Check the EXTENSION_MAPPING setting in the config file.\n",
11205 msg(
"Adding custom extension mapping: '%s' will be treated as language '%s'\n",
11213 for (
const auto &s : expandAsDefinedList)
引用了 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 |
( |
| ) |
|
◆ cleanUpDoxygen()
在文件 doxygen.cpp 第 10694 行定义.
引用了 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()
add extra languages for which we can only produce syntax highlighted code
在文件 doxygen.cpp 第 12168 行定义.
12205 if (generateDocbook)
12225 err(
"USE_HTAGS is YES but htags(1) failed. \n");
12227 err(
"htags(1) ended normally but failed to load the filemap. \n");
12234 g_s.
begin(
"Generating style sheet...\n");
12240 static bool serverBasedSearch =
Config_getBool(SERVER_BASED_SEARCH);
12242 g_s.
begin(
"Generating search indices...\n");
12251 if (generateHtml && searchEngine)
12254 Dir searchDir(searchDirName.
str());
12255 if (!searchDir.exists() && !searchDir.mkdir(searchDirName.
str()))
12257 term(
"Could not create search results directory '%s' $PWD='%s'\n",
12261 if (!serverBasedSearch)
12282 if (generateDocbook)
12295 g_s.
begin(
"Generating images for formulas in HTML...\n");
12302 g_s.
begin(
"Generating images for formulas in RTF...\n");
12309 g_s.
begin(
"Generating images for formulas in Docbook...\n");
12314 g_s.
begin(
"Generating example documentation...\n");
12320 g_s.
begin(
"Generating file sources...\n");
12324 g_s.
begin(
"Generating file documentation...\n");
12328 g_s.
begin(
"Generating page documentation...\n");
12332 g_s.
begin(
"Generating group documentation...\n");
12336 g_s.
begin(
"Generating class documentation...\n");
12340 g_s.
begin(
"Generating concept documentation...\n");
12344 g_s.
begin(
"Generating namespace index...\n");
12350 g_s.
begin(
"Generating graph info page...\n");
12355 g_s.
begin(
"Generating directory documentation...\n");
12364 g_s.
begin(
"finalizing index lists...\n");
12368 g_s.
begin(
"writing tag file...\n");
12374 g_s.
begin(
"Generating XML output...\n");
12383 g_s.
begin(
"Generating SQLITE3 output...\n");
12391 g_s.
begin(
"Generating AutoGen DEF output...\n");
12397 g_s.
begin(
"Generating Perl module output...\n");
12401 if (generateHtml && searchEngine && serverBasedSearch)
12403 g_s.
begin(
"Generating search index\n");
12413 if (searchDataFile.
isEmpty())
12415 searchDataFile=
"searchdata.xml";
12428 g_s.
begin(
"Generating output via template engine...\n");
12437 g_s.
begin(
"Combining RTF output...\n");
12440 err(
"An error occurred during post-processing the RTF files!\n");
12447 g_s.
begin(
"Running plantuml with JAVA...\n");
12460 if (generateHtml &&
12464 g_s.
begin(
"Running html help compiler...\n");
12471 err(
"failed to run html help compiler on index.hhp\n");
12480 if ( generateHtml &&
12484 g_s.
begin(
"Running qhelpgenerator...\n");
12494 err(
"failed to run qhelpgenerator on index.qhp\n");
12504 msg(
"lookup cache used %zu/%zu hits=%" PRIu64
" misses=%" PRIu64
"\n",
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);
12517 msg(
"Total elapsed time: %.6f seconds\n(of which %.6f seconds waiting for external tools to finish)\n",
12525 msg(
"finished...\n");
引用了 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()
在文件 doxygen.cpp 第 10610 行定义.
10615 std::setlocale(LC_ALL,
"");
10616 std::setlocale(LC_CTYPE,
"C");
10617 std::setlocale(LC_NUMERIC,
"C");
10625 make_parser_factory<FileCodeParser>());
10627 make_parser_factory<CCodeParser>());
10629 make_parser_factory<PythonCodeParser>());
10631 make_parser_factory<FortranCodeParser>());
10633 make_parser_factory<FortranCodeParserFree>());
10635 make_parser_factory<FortranCodeParserFixed>());
10637 make_parser_factory<VHDLCodeParser>());
10639 make_parser_factory<XMLCodeParser>());
10641 make_parser_factory<SQLCodeParser>());
10643 make_parser_factory<FileCodeParser>());
10645 make_parser_factory<LexCodeParser>());
10654 #ifdef USE_LIBCLANG
引用了 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()
在文件 doxygen.cpp 第 11558 行定义.
11568 QCString versionString = getFullVersion();
11569 msg(
"Doxygen version used: %s\n",
qPrint(versionString));
11575 if (outputDirectory.
isEmpty())
11581 Dir dir(outputDirectory.
str());
11585 if (!dir.mkdir(outputDirectory.
str()))
11587 err(
"tag OUTPUT_DIRECTORY: Output directory '%s' does not "
11588 "exist and cannot be created\n",
qPrint(outputDirectory));
11594 msg(
"Notice: Output directory '%s' does not exist. "
11595 "I have created it for you.\n",
qPrint(outputDirectory));
11597 dir.setPath(outputDirectory.
str());
11608 if (cacheSize<0) cacheSize=0;
11609 if (cacheSize>9) cacheSize=9;
11610 uint lookupSize = 65536 << cacheSize;
11634 bool generateEclipseHelp =
Config_getBool(GENERATE_ECLIPSEHELP);
11648 if (generateDocbook)
11706 newFontPath+=curFontPath;
11724 bool defaultLayoutUsed =
FALSE;
11725 if (layoutFileName.
isEmpty())
11728 defaultLayoutUsed =
TRUE;
11734 msg(
"Parsing layout file %s...\n",
qPrint(layoutFileName));
11737 else if (!defaultLayoutUsed)
11739 warn_uncond(
"failed to open layout file '%s' for reading!\n",
qPrint(layoutFileName));
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());
11784 std::shared_ptr<Entry> root = std::make_shared<Entry>();
11785 msg(
"Reading and parsing tag files\n");
11788 for (
const auto &s : tagFileList)
11814 g_s.
begin(
"Building macro definition list...\n");
11818 g_s.
begin(
"Building group list...\n");
11823 g_s.
begin(
"Building directory list...\n");
11828 g_s.
begin(
"Building namespace list...\n");
11833 g_s.
begin(
"Building file list...\n");
11837 g_s.
begin(
"Building class list...\n");
11841 g_s.
begin(
"Building concept list...\n");
11849 g_s.
begin(
"Computing nesting relations for classes...\n");
11862 g_s.
begin(
"Associating documentation with classes...\n");
11866 g_s.
begin(
"Associating documentation with concepts...\n");
11870 g_s.
begin(
"Building example list...\n");
11874 g_s.
begin(
"Searching for enumerations...\n");
11882 g_s.
begin(
"Searching for documented typedefs...\n");
11883 buildTypedefList(root.get());
11888 g_s.
begin(
"Searching for documented sequences...\n");
11889 buildSequenceList(root.get());
11892 g_s.
begin(
"Searching for documented dictionaries...\n");
11893 buildDictionaryList(root.get());
11897 g_s.
begin(
"Searching for members imported via using declarations...\n");
11904 g_s.
begin(
"Searching for included using directives...\n");
11908 g_s.
begin(
"Searching for documented variables...\n");
11909 buildVarList(root.get());
11912 g_s.
begin(
"Building interface member list...\n");
11913 buildInterfaceAndServiceList(root.get());
11915 g_s.
begin(
"Building member list...\n");
11916 buildFunctionList(root.get());
11919 g_s.
begin(
"Searching for friends...\n");
11923 g_s.
begin(
"Searching for documented defines...\n");
11927 g_s.
begin(
"Computing class inheritance relations...\n");
11932 g_s.
begin(
"Computing class usage relations...\n");
11938 g_s.
begin(
"Searching for tag less structs...\n");
11943 g_s.
begin(
"Flushing cached template relations that have become invalid...\n");
11947 g_s.
begin(
"Computing class relations...\n");
11958 g_s.
begin(
"Add enum values to enums...\n");
11963 g_s.
begin(
"Searching for member function documentation...\n");
11974 g_s.
begin(
"Creating members for template instances...\n");
11978 g_s.
begin(
"Building page list...\n");
11982 g_s.
begin(
"Search for main page...\n");
11987 g_s.
begin(
"Computing page relations...\n");
11992 g_s.
begin(
"Determining the scope of groups...\n");
12007 return qstricmp(c1->name(), c2->name())<0;
12011 int i =
qstricmp(c1->className(), c2->className());
12012 return i==0 ?
qstricmp(c1->name(), c2->name())<0 : i<0;
12018 return qstricmp(n1->name(),n2->name())<0;
12023 return qstricmp(c1->name(),c2->name())<0;
12047 g_s.
begin(
"Determining which enums are documented\n");
12051 g_s.
begin(
"Computing member relations...\n");
12056 g_s.
begin(
"Building full member lists recursively...\n");
12060 g_s.
begin(
"Adding members to member groups.\n");
12066 g_s.
begin(
"Distributing member group documentation.\n");
12071 g_s.
begin(
"Computing member references...\n");
12077 g_s.
begin(
"Inheriting documentation...\n");
12084 g_s.
begin(
"Generating disk names...\n");
12088 g_s.
begin(
"Adding source references...\n");
12092 g_s.
begin(
"Adding xrefitems...\n");
12097 g_s.
begin(
"Sorting member lists...\n");
12101 g_s.
begin(
"Setting anonymous enum type...\n");
12107 g_s.
begin(
"Computing dependencies between directories...\n");
12112 g_s.
begin(
"Generating citations page...\n");
12116 g_s.
begin(
"Counting members...\n");
12120 g_s.
begin(
"Counting data structures...\n");
12124 g_s.
begin(
"Resolving user defined references...\n");
12128 g_s.
begin(
"Finding anchors and sections in the documentation...\n");
12132 g_s.
begin(
"Transferring function references...\n");
12136 g_s.
begin(
"Combining using relations...\n");
12140 g_s.
begin(
"Adding members to index pages...\n");
12145 g_s.
begin(
"Correcting members for VHDL...\n");
12149 g_s.
begin(
"Computing tooltip texts...\n");
12157 [](
const auto &g1,
const auto &g2)
12158 {
return g1->groupTitle() < g2->groupTitle(); });
12162 gd->sortSubGroups();
引用了 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()
在文件 doxygen.cpp 第 10432 行定义.
10436 for (
const auto &al : aliasList)
10439 int i=alias.find(
'=');
10454 it->second=value.
str();
引用了 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.cpp 第 10738 行定义.
10740 QCString versionString = getFullVersion();
10752 bool genConfig=
FALSE;
10753 bool shortList=
FALSE;
10754 bool diffList=
FALSE;
10755 bool updateConfig=
FALSE;
10757 bool quiet =
false;
10758 while (optInd<argc && argv[optInd][0]==
'-' &&
10759 (
isalpha(argv[optInd][1]) || argv[optInd][1]==
'?' ||
10760 argv[optInd][1]==
'-')
10763 switch(argv[optInd][1])
10769 if (optInd+1>=argc)
10771 layoutName=
"DoxygenLayout.xml";
10775 layoutName=argv[optInd+1];
10782 debugLabel=
getArg(argc,argv,optInd);
10792 err(
"option \"-d\" has unknown debug specifier: \"%s\".\n",
qPrint(debugLabel));
10808 formatName=
getArg(argc,argv,optInd);
10811 err(
"option \"-e\" is missing format specifier rtf.\n");
10817 if (optInd+1>=argc)
10819 err(
"option \"-e rtf\" is missing an extensions file name\n");
10832 err(
"option \"-e\" has invalid format specifier.\n");
10837 listName=
getArg(argc,argv,optInd);
10840 err(
"option \"-f\" is missing list specifier.\n");
10846 if (optInd+1>=argc)
10848 err(
"option \"-f emoji\" is missing an output file name\n");
10861 err(
"option \"-f\" has invalid list specifier.\n");
10866 formatName=
getArg(argc,argv,optInd);
10869 err(
"option \"-w\" is missing format specifier rtf, html or latex\n");
10875 if (optInd+1>=argc)
10877 err(
"option \"-w rtf\" is missing a style sheet file name\n");
10893 if (optInd+4<argc ||
FileInfo(
"Doxyfile").exists())
10899 err(
"error opening or reading configuration file %s!\n",argv[optInd+4]);
10904 if (optInd+3>=argc)
10906 err(
"option \"-w html\" does not have enough arguments\n");
10940 if (optInd+4<argc ||
FileInfo(
"Doxyfile").exists())
10945 err(
"error opening or reading configuration file %s!\n",argv[optInd+4]);
10950 if (optInd+3>=argc)
10952 err(
"option \"-w latex\" does not have enough arguments\n");
10985 err(
"Illegal format specifier \"%s\": should be one of rtf, html or latex\n",
qPrint(formatName));
11004 if (
qstrcmp(&argv[optInd][2],
"help")==0)
11006 usage(argv[0],versionString);
11009 else if (
qstrcmp(&argv[optInd][2],
"version")==0)
11015 else if ((
qstrcmp(&argv[optInd][2],
"Version")==0) ||
11016 (
qstrcmp(&argv[optInd][2],
"VERSION")==0))
11024 err(
"Unknown option \"-%s\"\n",&argv[optInd][1]);
11025 usage(argv[0],versionString);
11030 setvbuf(stdout,NULL,_IONBF,0);
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");
11043 usage(argv[0],versionString);
11047 err(
"Unknown option \"-%c\"\n",argv[optInd][1]);
11048 usage(argv[0],versionString);
11060 FileInfo configFileInfo1(
"Doxyfile"),configFileInfo2(
"doxyfile");
11063 if (configFileInfo1.exists())
11065 configName=
"Doxyfile";
11067 else if (configFileInfo2.exists())
11069 configName=
"doxyfile";
11071 else if (genConfig)
11073 configName=
"Doxyfile";
11077 err(
"Doxyfile not found and no input file specified!\n");
11078 usage(argv[0],versionString);
11085 if (fi.exists() ||
qstrcmp(argv[optInd],
"-")==0 || genConfig)
11087 configName=argv[optInd];
11091 err(
"configuration file %s not found!\n",argv[optInd]);
11092 usage(argv[0],versionString);
11113 err(
"could not open or read configuration file %s!\n",
qPrint(configName));
引用了 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.cpp 第 10302 行定义.
10324 if (exclSet==0 || exclSet->find(fi.absFilePath())==exclSet->end())
10326 if (!fi.exists() || !fi.isReadable())
10328 if (errorIfNotExist)
10330 warn_uncond(
"source '%s' is not a readable file or directory... skipping.\n",
qPrint(s));
10337 std::string dirPath = fi.dirPath(
true);
10338 std::string filePath = fi.absFilePath();
10339 if (paths && !dirPath.empty())
10341 paths->insert(dirPath);
10344 if (killSet==0 || killSet->find(filePath)==killSet->end())
10346 std::string name=fi.fileName();
10353 fn->push_back(std::move(fd));
10356 if (resultList || resultSet)
10358 if (resultList) resultList->push_back(filePath);
10359 if (resultSet) resultSet->insert(filePath);
10362 if (killSet) killSet->insert(fi.absFilePath());
10365 else if (fi.isDir())
10367 readDir(&fi,fnMap,exclSet,patList,
10368 exclPatList,resultList,resultSet,errorIfNotExist,
10369 recursive,killSet,paths);
引用了 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()
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
std::vector< std::string > StringVector
static void flushUnresolvedRelations()
static void buildClassDocList(const Entry *root)
static DotManager * instance()
static bool isalpha(char c)
static std::string currentDirPath()
Generator for HTML output
static void copyExtraFiles(const StringVector &files, const QCString &filesOption, const QCString &outputOption)
static void transferRelatedFunctionDocumentation()
static void generateConfigFile(const QCString &configFile, bool shortList, bool updateOnly=FALSE)
static StringSet g_usingDeclarations
static std::unique_ptr< PageDef > mainPage
Class representing all files with a certain base name
#define Config_getEnum(name)
static void expandAliases()
static StringUnorderedSet g_pathsVisited(1009)
static void buildFileList(const Entry *root)
void setTranslator(OUTPUT_LANGUAGE_t langName)
static FileNameLinkedMap * imageNameLinkedMap
bool remove(const std::string &path, bool acceptsAbsPath=true) const
Class representing a directory in the file system
static void findMemberDocumentation(const Entry *root)
static FileNameLinkedMap * diaFileNameLinkedMap
static void deleteInstance()
void writeJavaScriptSearchIndex()
static void buildGroupList(const Entry *root)
static void findClassEntries(const Entry *root)
static ClassLinkedMap * hiddenClassLinkedMap
static ConceptLinkedMap * conceptLinkedMap
static void countMembers()
static void generateDiskNames()
static FileNameLinkedMap * dotFileNameLinkedMap
static void transferFunctionDocumentation()
bool isEmpty() const
Returns TRUE iff the string is empty
Generator for RTF output.
void initFileMemberIndices()
static QCString createOutputDirectory(const QCString &baseDirName, const QCString &formatDirName, const char *defaultDirName)
static void transferFunctionReferences()
static PageLinkedMap * pageLinkedMap
static void sortMemberLists()
static void writeStyleSheetFile(TextStream &t)
static IndexList * indexList
static void findGroupScope(const Entry *root)
static void flushCachedTemplateRelations()
static void computeTooltipTexts()
static void generateGroupDocs()
static void generateExampleDocs()
void setPerlModDoxyfile(const QCString &qs)
static void buildDefineList()
static NamespaceDefMutable * globalScope
static void inheritDocumentation()
static void writeStyleSheetFile(TextStream &t)
static void generateNamespaceDocs()
std::unique_ptr< MemberName > Ptr
static void writeSearchData(const QCString &dir)
void addIndex(As &&... args)
Add an index generator to the list, using a syntax similar to std::make_unique<T>()
static StringMap aliasMap
static PlantumlManager & instance()
static void dumpSymbolMap()
static bool parseSourcesNeeded
void err(const char *fmt,...)
char & at(size_t i)
Returns a reference to the character at index i.
Text streaming class that buffers data.
static DirLinkedMap * dirLinkedMap
int find(char c, int index=0, bool cs=TRUE) const
static CitationManager & instance()
static void findEnums(const Entry *root)
std::unordered_map< std::string, const Definition * > ClangUsrMap
static void generateConceptDocs()
static void computeClassRelations()
static void parseFilesMultiThreading(const std::shared_ptr< Entry > &root)
parse the list of input files
void writeStyleInfo(int part)
static FileNameLinkedMap * exampleNameLinkedMap
void createJavaScriptSearchIndex()
static void writeExternalSearchPage()
static void resolveClassNestingRelations()
static void addToIndices()
DirIterator begin(DirIterator it) noexcept
Ordered dictionary of FileName objects.
static bool isFlagSet(DebugMask mask)
static void buildConceptDocList(const Entry *root)
static SymbolMap< Definition > * symbolMap
QCString getenv(const QCString &variable)
A linked map of directories
static void organizeSubGroups(const Entry *root)
DirIterator end(const DirIterator &) noexcept
static bool generatingXmlOutput
static void writeStyleSheetFile(TextStream &t)
static OutputList * g_outputList
static void version(const bool extended)
static void writeFooterFile(TextStream &t)
static FileNameLinkedMap * inputNameLinkedMap
static void buildConceptList(const Entry *root)
static void copyLatexStyleSheet()
static void findInheritedTemplateInstances()
static void findIncludedUsingDirectives()
#define Config_updateList(name,...)
#define Config_updateString(name, value)
Class representing a list of output generators that are written to in parallel.
void postProcess(bool clearHeaderAndFooter, bool compare=FALSE)
static void findDocumentedEnumValues()
void warn_uncond(const char *fmt,...)
static void findUsedTemplateInstances()
void begin(const char *name)
FileDef * createFileDef(const QCString &p, const QCString &n, const QCString &ref, const QCString &dn)
static StringSet g_compoundKeywords
static void findDefineDocumentation(Entry *root)
static bool clangAssistedParsing
QCString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
#define Config_getInt(name)
static void generateXRefPages()
static MemberNameLinkedMap * functionNameLinkedMap
static bool g_useOutputTemplate
static void stopDoxygen(int)
QCString left(size_t len) const
static void writeHeaderFile(TextStream &t)
static void findObjCMethodDefinitions(const Entry *root)
static void usage(const QCString &name, const QCString &versionString)
static ParserManager * parserManager
static void findUsingDeclarations(const Entry *root, bool filterPythonPackages)
bool updateLanguageMapping(const QCString &extension, const QCString &language)
void generateTemplateFiles(const QCString &templateDir)
static void generateFileSources()
static void writeFooterFile(TextStream &t)
int qstricmp(const char *str1, const char *str2)
void initDefaultExtensionMapping()
Translator * theTranslator
Ordered dictionary of MemberName objects.
A class that generated the HTML Help specific files.
A list of index interfaces.
static void readTagFile(const std::shared_ptr< Entry > &root, const QCString &tagLine)
static void findEnumDocumentation(const Entry *root)
static GroupLinkedMap * groupLinkedMap
static bool g_successfulRun
void writeDefaultLayoutFile(const QCString &fileName)
static void resolveUserReferences()
void generatePage()
Generate the citations page
void run()
Run plant UML tool for all images
void addCodeOnlyMappings()
void countDataStructures()
static void findUsingDirectives(const Entry *root)
static int setFlag(const QCString &label)
void checkAndCorrect(bool quiet)
static void distributeMemberGroupDocumentation()
void correct_path()
Correct a possible wrong PATH variable
static void addMembersToMemberGroup()
static void findSectionsInDocumentation()
int system(const QCString &command, const QCString &args, bool commandHasConsole=true)
static bool setCurrent(const std::string &path)
static StringUnorderedSet expandAsDefinedSet
static void setAnonymousEnumType()
double getSysElapsedTime()
#define Config_updateBool(name, value)
static void findDirDocumentation(const Entry *root)
Generator for Eclipse help files.
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)
void generateDirDocs(OutputList &ol)
static const char * getArg(int argc, char **argv, int &optInd)
static void freeMappers()
static QCString getQchFileName()
int getPrefixIndex(const QCString &name)
QCString pathListSeparator()
static double elapsedTime()
static int computeIdealCacheParam(size_t v)
static void generateTreeViewImages()
static void generateFileDocs()
static SearchIndexIntf * searchIndex
static void buildCompleteMemberLists()
static void generatePageDocs()
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
void initNamespaceMemberIndices()
static QCString filterDBFileName
static void buildExampleList(Entry *root)
static MemberNameLinkedMap * memberNameLinkedMap
static bool preProcessFileInplace(const QCString &path, const QCString &name)
This is an API to a VERY brittle RTF preprocessor that combines nested RTF files.
static void writeSearchPage()
#define Config_getBool(name)
static void buildListOfUsingDecls(const Entry *root)
static void buildPageList(Entry *root)
static void writeTagFile()
static void parseFilesSingleThreading(const std::shared_ptr< Entry > &root)
parse the list of input files
static void buildClassList(const Entry *root)
virtual void write(const QCString &file)=0
static QCString htmlFileExtension
static SectionManager & instance()
returns a reference to the singleton
void generateOutputViaTemplate()
void msg(const char *fmt,...)
void writeGraphInfo(OutputList &ol)
void finalizeSearchIndexer()
void registerParser(const QCString &name, OutlineParserFactory outlineParserFactory, CodeParserFactory codeParserFactory)
Registers an additional parser.
static LayoutDocManager & instance()
Returns a reference to this singleton.
static void checkPageRelations()
void term(const char *fmt,...)
void writeIndexHierarchy(OutputList &ol)
static void computeMemberRelations()
static void computeTemplateClassRelations()
static void mergeCategories()
static bool g_dumpSymbolMap
Minimal replacement for QFileInfo.
static void computeVhdlComponentRelations()
const char * qPrint(const char *s)
Generator for LaTeX output.
static void vhdlCorrectMemberProperties()
static void exitDoxygen()
#define Config_getString(name)
static void addMembersToIndex()
static QCString getQhpFileName()
static void findMainPage(Entry *root)
A class that generates docset files.
static void generateClassDocs()
static void escapeAliases()
void addSTLSupport(std::shared_ptr< Entry > &root)
Add stub entries for the most used classes in the standard template library
bool parse(const QCString &fileName, bool update=FALSE)
static void compareDoxyfile()
static void computePageRelations(Entry *root)
Manages programming language parsers.
static NamespaceLinkedMap * namespaceLinkedMap
static void addListReferences()
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string
static FileNameLinkedMap * mscFileNameLinkedMap
void initClassMemberIndices()
static Cache< std::string, LookupInfo > * lookupCache
int qstrcmp(const char *str1, const char *str2)
static void buildNamespaceList(const Entry *root)
static void addEnumValuesToEnums(const Entry *root)
void setenv(const QCString &variable, const QCString &value)
bool isAbsolutePath(const QCString &fileName)
static EmojiEntityMapper * instance()
Returns the one and only instance of the Emoji entity mapper
A class that generates a dynamic tree view side panel.
static void findMainPageTagFiles(Entry *root)
static void copyStyleSheet()
static void copyLogo(const QCString &outputOption)
static ClassLinkedMap * classLinkedMap
void parse(const QCString &fileName)
Parses a user provided layout
static void addSourceReferences()
void writeEmojiFile(TextStream &t)
Writes the list of supported emojis to the given file.
static void writeHeaderFile(TextStream &t, const QCString &cssname)
static void findTagLessClasses(std::vector< ClassDefMutable * > &candidates, const ClassDef *cd)
static void createTemplateInstanceMembers()
QCString right(size_t len) const
Generator for Man page output.
QCString & prepend(const char *s)
bool resize(size_t newlen)
Resizes the string to hold newlen characters (this value should also count the 0-terminator).
bool openOutputFile(const QCString &outFile, std::ofstream &f)
void computeDirDependencies()
QCString & sprintf(const char *format,...)
static void writeTabData()
Additional initialization after indices have been created
static void combineUsingRelations()
static ClangUsrMap * clangUsrMap
static void computeMemberReferences()
void clear()
Clears all values in the cache.
static void findUsingDeclImports(const Entry *root)
#define Config_getList(name)
static void writeExtensionsFile(TextStream &t)
static std::multimap< std::string, const Entry * > g_classEntries
static PageLinkedMap * exampleLinkedMap
static FileNameLinkedMap * includeNameLinkedMap
This is an alternative implementation of QCString.