summaryrefslogtreecommitdiffstats
path: root/src/doxygen.cpp
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2020-05-22 14:08:39 (GMT)
committerDimitri van Heesch <doxygen@gmail.com>2020-05-22 14:08:39 (GMT)
commitff5ba4a40fa13c0987272d463ba0edc57bc10fa6 (patch)
tree7041494e22c0b3d9eb68ad7a89f3fd48e4bcdf5a /src/doxygen.cpp
parente3470060b067bbb5d949de01758aff491fc804c3 (diff)
downloadDoxygen-ff5ba4a40fa13c0987272d463ba0edc57bc10fa6.zip
Doxygen-ff5ba4a40fa13c0987272d463ba0edc57bc10fa6.tar.gz
Doxygen-ff5ba4a40fa13c0987272d463ba0edc57bc10fa6.tar.bz2
Refactoring: Removed creation of MemberDef's for macro definitions from pre.l
Diffstat (limited to 'src/doxygen.cpp')
-rw-r--r--src/doxygen.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 5f324fd..c7c9b45 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -160,6 +160,7 @@ bool Doxygen::generatingXmlOutput = FALSE;
bool Doxygen::markdownSupport = TRUE;
GenericsSDict *Doxygen::genericsDict;
Preprocessor *Doxygen::preprocessor = 0;
+DefineList Doxygen::macroDefinitions;
// locally accessible globals
static std::unordered_map< std::string, const Entry* > g_classEntries;
@@ -7698,6 +7699,36 @@ static void addSourceReferences()
//----------------------------------------------------------------------------
+// add the macro definitions found during preprocessing as file members
+static void buildDefineList()
+{
+ for (const auto &def : Doxygen::macroDefinitions)
+ {
+ 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())
+ {
+ 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));
+ }
+}
+
+//----------------------------------------------------------------------------
+
static void sortMemberLists()
{
// sort class member lists
@@ -10876,6 +10907,10 @@ void parseInput()
* Gather information *
**************************************************************************/
+ g_s.begin("Building macro definition list...\n");
+ buildDefineList();
+ g_s.end();
+
g_s.begin("Building group list...\n");
buildGroupList(root.get());
organizeSubGroups(root.get());