diff options
author | Dimitri van Heesch <doxygen@gmail.com> | 2020-06-28 19:57:14 (GMT) |
---|---|---|
committer | Dimitri van Heesch <doxygen@gmail.com> | 2020-06-28 19:57:14 (GMT) |
commit | ff5ebce0649b5e1fbef2660234f5cc8184e80148 (patch) | |
tree | 63487b226b3e3b92355d670fbec5ea7382fc9475 /src/doxygen.cpp | |
parent | d0f24b762e23b1b0c069209978aa403acc027cdf (diff) | |
download | Doxygen-ff5ebce0649b5e1fbef2660234f5cc8184e80148.zip Doxygen-ff5ebce0649b5e1fbef2660234f5cc8184e80148.tar.gz Doxygen-ff5ebce0649b5e1fbef2660234f5cc8184e80148.tar.bz2 |
Refactor: make preprocessor run in parallel
And at the same time make sure it gives the same results as when
processed using a single thread.
Diffstat (limited to 'src/doxygen.cpp')
-rw-r--r-- | src/doxygen.cpp | 45 |
1 files changed, 26 insertions, 19 deletions
diff --git a/src/doxygen.cpp b/src/doxygen.cpp index d8436bb..01b47f5 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -159,7 +159,7 @@ bool Doxygen::userComments = FALSE; QCString Doxygen::spaces; bool Doxygen::generatingXmlOutput = FALSE; GenericsSDict *Doxygen::genericsDict; -DefineList Doxygen::macroDefinitions; +DefinesPerFileList Doxygen::macroDefinitions; // locally accessible globals static std::unordered_map< std::string, const Entry* > g_classEntries; @@ -7701,28 +7701,35 @@ static void addSourceReferences() // add the macro definitions found during preprocessing as file members static void buildDefineList() { - for (const auto &def : Doxygen::macroDefinitions) + for (const auto &s : g_inputFiles) { - std::unique_ptr<MemberDef> md { createMemberDef( - def->fileName,def->lineNr,def->columnNr, - "#define",def->name,def->args,0, - Public,Normal,FALSE,Member,MemberType_Define, - ArgumentList(),ArgumentList(),"") }; - - if (!def->args.isEmpty()) + auto it = Doxygen::macroDefinitions.find(s); + if (it!=Doxygen::macroDefinitions.end()) { - md->moveArgumentList(stringToArgumentList(SrcLangExt_Cpp, def->args)); - } - md->setInitializer(def->definition); - md->setFileDef(def->fileDef); - md->setDefinition("#define "+def->name); + for (const auto &def : it->second) + { + std::unique_ptr<MemberDef> md { createMemberDef( + def->fileName,def->lineNr,def->columnNr, + "#define",def->name,def->args,0, + Public,Normal,FALSE,Member,MemberType_Define, + ArgumentList(),ArgumentList(),"") }; - MemberName *mn=Doxygen::functionNameLinkedMap->add(def->name); - if (def->fileDef) - { - def->fileDef->insertMember(md.get()); + if (!def->args.isEmpty()) + { + md->moveArgumentList(stringToArgumentList(SrcLangExt_Cpp, def->args)); + } + md->setInitializer(def->definition); + md->setFileDef(def->fileDef); + md->setDefinition("#define "+def->name); + + MemberName *mn=Doxygen::functionNameLinkedMap->add(def->name); + if (def->fileDef) + { + def->fileDef->insertMember(md.get()); + } + mn->push_back(std::move(md)); + } } - mn->push_back(std::move(md)); } } |