summaryrefslogtreecommitdiffstats
path: root/src/filedef.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/filedef.cpp')
-rw-r--r--src/filedef.cpp222
1 files changed, 93 insertions, 129 deletions
diff --git a/src/filedef.cpp b/src/filedef.cpp
index 7e8afdc..658023b 100644
--- a/src/filedef.cpp
+++ b/src/filedef.cpp
@@ -55,7 +55,8 @@ class FileDefImpl : public DefinitionImpl, public FileDef
virtual ~FileDefImpl();
virtual DefType definitionType() const { return TypeFile; }
- virtual QCString name() const;
+ virtual const QCString &name() const;
+
virtual QCString displayName(bool=TRUE) const { return name(); }
virtual QCString fileName() const { return m_fileName; }
virtual QCString getOutputFileBase() const;
@@ -81,7 +82,7 @@ class FileDefImpl : public DefinitionImpl, public FileDef
virtual SDict<Definition> *getUsedClasses() const { return m_usingDeclList; }
virtual QList<IncludeInfo> *includeFileList() const { return m_includeList; }
virtual QList<IncludeInfo> *includedByFileList() const { return m_includedByList; }
- virtual void getAllIncludeFilesRecursively(QStrList &incFiles) const;
+ virtual void getAllIncludeFilesRecursively(StringVector &incFiles) const;
virtual MemberList *getMemberList(MemberListType lt) const;
virtual const QList<MemberList> &getMemberLists() const { return m_memberLists; }
virtual MemberGroupSDict *getMemberGroupSDict() const { return m_memberGroupSDict; }
@@ -100,10 +101,8 @@ class FileDefImpl : public DefinitionImpl, public FileDef
virtual void writeQuickMemberLinks(OutputList &ol,const MemberDef *currentMd) const;
virtual void writeSummaryLinks(OutputList &ol) const;
virtual void writeTagFile(FTextStream &t);
- virtual void startParsing();
- virtual void writeSource(OutputList &ol,bool sameTu,QStrList &filesInSameTu);
- virtual void parseSource(bool sameTu,QStrList &filesInSameTu);
- virtual void finishParsing();
+ virtual void writeSource(OutputList &ol,ClangTUParser *clangParser);
+ virtual void parseSource(ClangTUParser *clangParser);
virtual void setDiskName(const QCString &name);
virtual void insertMember(MemberDef *md);
virtual void insertClass(ClassDef *cd);
@@ -116,7 +115,7 @@ class FileDefImpl : public DefinitionImpl, public FileDef
virtual void combineUsingRelations();
virtual bool generateSourceFile() const;
virtual void sortMemberLists();
- virtual void addIncludeDependency(FileDef *fd,const char *incName,bool local,bool imported,bool indirect);
+ virtual void addIncludeDependency(FileDef *fd,const char *incName,bool local,bool imported);
virtual void addIncludedByDependency(FileDef *fd,const char *incName,bool local,bool imported);
virtual void addMembersToMemberGroup();
virtual void distributeMemberGroupDocumentation();
@@ -356,25 +355,22 @@ void FileDefImpl::writeTagFile(FTextStream &tagFile)
IncludeInfo *ii;
for (;(ii=ili.current());++ili)
{
- if (!ii->indirect)
+ FileDef *fd=ii->fileDef;
+ if (fd && fd->isLinkable() && !fd->isReference())
{
- FileDef *fd=ii->fileDef;
- if (fd && fd->isLinkable() && !fd->isReference())
- {
- bool isIDLorJava = FALSE;
- SrcLangExt lang = fd->getLanguage();
- isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java;
- const char *locStr = (ii->local || isIDLorJava) ? "yes" : "no";
- const char *impStr = (ii->imported || isIDLorJava) ? "yes" : "no";
- tagFile << " <includes id=\""
- << convertToXML(fd->getOutputFileBase()) << "\" "
- << "name=\"" << convertToXML(fd->name()) << "\" "
- << "local=\"" << locStr << "\" "
- << "imported=\"" << impStr << "\">"
- << convertToXML(ii->includeName)
- << "</includes>"
- << endl;
- }
+ bool isIDLorJava = FALSE;
+ SrcLangExt lang = fd->getLanguage();
+ isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java;
+ const char *locStr = (ii->local || isIDLorJava) ? "yes" : "no";
+ const char *impStr = (ii->imported || isIDLorJava) ? "yes" : "no";
+ tagFile << " <includes id=\""
+ << convertToXML(fd->getOutputFileBase()) << "\" "
+ << "name=\"" << convertToXML(fd->name()) << "\" "
+ << "local=\"" << locStr << "\" "
+ << "imported=\"" << impStr << "\">"
+ << convertToXML(ii->includeName)
+ << "</includes>"
+ << endl;
}
}
}
@@ -476,7 +472,8 @@ void FileDefImpl::writeDetailedDescription(OutputList &ol,const QCString &title)
ol.startTextBlock();
if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF))
{
- ol.generateDoc(briefFile(),briefLine(),this,0,briefDescription(),FALSE,FALSE);
+ ol.generateDoc(briefFile(),briefLine(),this,0,briefDescription(),FALSE,FALSE,
+ 0,FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
}
if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF) &&
!documentation().isEmpty())
@@ -493,7 +490,8 @@ void FileDefImpl::writeDetailedDescription(OutputList &ol,const QCString &title)
}
if (!documentation().isEmpty())
{
- ol.generateDoc(docFile(),docLine(),this,0,documentation()+"\n",TRUE,FALSE);
+ ol.generateDoc(docFile(),docLine(),this,0,documentation()+"\n",TRUE,FALSE,
+ 0,FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
}
//printf("Writing source ref for file %s\n",name().data());
if (Config_getBool(SOURCE_BROWSER))
@@ -541,7 +539,8 @@ void FileDefImpl::writeBriefDescription(OutputList &ol)
if (hasBriefDescription())
{
DocRoot *rootNode = validatingParseDoc(briefFile(),briefLine(),this,0,
- briefDescription(),TRUE,FALSE,0,TRUE,FALSE);
+ briefDescription(),TRUE,FALSE,
+ 0,TRUE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
if (rootNode && !rootNode->isEmpty())
{
@@ -596,61 +595,58 @@ void FileDefImpl::writeIncludeFiles(OutputList &ol)
IncludeInfo *ii;
for (;(ii=ili.current());++ili)
{
- if (!ii->indirect)
+ FileDef *fd=ii->fileDef;
+ bool isIDLorJava = FALSE;
+ if (fd)
{
- FileDef *fd=ii->fileDef;
- bool isIDLorJava = FALSE;
- if (fd)
- {
- SrcLangExt lang = fd->getLanguage();
- isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java;
- }
- ol.startTypewriter();
- if (isIDLorJava) // IDL/Java include
- {
- ol.docify("import ");
- }
- else if (ii->imported) // Objective-C include
- {
- ol.docify("#import ");
- }
- else // C/C++ include
- {
- ol.docify("#include ");
- }
- if (ii->local || isIDLorJava)
- ol.docify("\"");
- else
- ol.docify("<");
- ol.disable(OutputGenerator::Html);
- ol.docify(ii->includeName);
- ol.enableAll();
- ol.disableAllBut(OutputGenerator::Html);
-
- // Here we use the include file name as it appears in the file.
- // we could also we the name as it is used within doxygen,
- // then we should have used fd->docName() instead of ii->includeName
- if (fd && fd->isLinkable())
- {
- ol.writeObjectLink(fd->getReference(),
- fd->generateSourceFile() ? fd->includeName() : fd->getOutputFileBase(),
- 0,ii->includeName);
- }
- else
- {
- ol.docify(ii->includeName);
- }
+ SrcLangExt lang = fd->getLanguage();
+ isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java;
+ }
+ ol.startTypewriter();
+ if (isIDLorJava) // IDL/Java include
+ {
+ ol.docify("import ");
+ }
+ else if (ii->imported) // Objective-C include
+ {
+ ol.docify("#import ");
+ }
+ else // C/C++ include
+ {
+ ol.docify("#include ");
+ }
+ if (ii->local || isIDLorJava)
+ ol.docify("\"");
+ else
+ ol.docify("<");
+ ol.disable(OutputGenerator::Html);
+ ol.docify(ii->includeName);
+ ol.enableAll();
+ ol.disableAllBut(OutputGenerator::Html);
- ol.enableAll();
- if (ii->local || isIDLorJava)
- ol.docify("\"");
- else
- ol.docify(">");
- if (isIDLorJava)
- ol.docify(";");
- ol.endTypewriter();
- ol.lineBreak();
+ // Here we use the include file name as it appears in the file.
+ // we could also we the name as it is used within doxygen,
+ // then we should have used fd->docName() instead of ii->includeName
+ if (fd && fd->isLinkable())
+ {
+ ol.writeObjectLink(fd->getReference(),
+ fd->generateSourceFile() ? fd->includeName() : fd->getOutputFileBase(),
+ 0,ii->includeName);
+ }
+ else
+ {
+ ol.docify(ii->includeName);
}
+
+ ol.enableAll();
+ if (ii->local || isIDLorJava)
+ ol.docify("\"");
+ else
+ ol.docify(">");
+ if (isIDLorJava)
+ ol.docify(";");
+ ol.endTypewriter();
+ ol.lineBreak();
}
ol.endTextBlock();
}
@@ -1153,7 +1149,7 @@ void FileDefImpl::writeQuickMemberLinks(OutputList &ol,const MemberDef *currentM
}
/*! Write a source listing of this file to the output */
-void FileDefImpl::writeSource(OutputList &ol,bool sameTu,QStrList &filesInSameTu)
+void FileDefImpl::writeSource(OutputList &ol,ClangTUParser *clangParser)
{
static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
static bool filterSourceFiles = Config_getBool(FILTER_SOURCE_FILES);
@@ -1211,23 +1207,13 @@ void FileDefImpl::writeSource(OutputList &ol,bool sameTu,QStrList &filesInSameTu
ol.popGeneratorState();
}
- (void)sameTu;
- (void)filesInSameTu;
#if USE_LIBCLANG
- static bool clangAssistedParsing = Config_getBool(CLANG_ASSISTED_PARSING);
- if (clangAssistedParsing &&
+ if (Doxygen::clangAssistedParsing && clangParser &&
(getLanguage()==SrcLangExt_Cpp || getLanguage()==SrcLangExt_ObjC))
{
ol.startCodeFragment();
- if (!sameTu)
- {
- ClangParser::instance()->start(absFilePath(),filesInSameTu);
- }
- else
- {
- ClangParser::instance()->switchToFile(absFilePath());
- }
- ClangParser::instance()->writeSources(ol,this);
+ clangParser->switchToFile(this);
+ clangParser->writeSources(ol,this);
ol.endCodeFragment();
}
else
@@ -1271,26 +1257,16 @@ void FileDefImpl::writeSource(OutputList &ol,bool sameTu,QStrList &filesInSameTu
ol.enableAll();
}
-void FileDefImpl::parseSource(bool sameTu,QStrList &filesInSameTu)
+void FileDefImpl::parseSource(ClangTUParser *clangParser)
{
static bool filterSourceFiles = Config_getBool(FILTER_SOURCE_FILES);
DevNullCodeDocInterface devNullIntf;
- (void)sameTu;
- (void)filesInSameTu;
#if USE_LIBCLANG
- static bool clangAssistedParsing = Config_getBool(CLANG_ASSISTED_PARSING);
- if (clangAssistedParsing &&
+ if (Doxygen::clangAssistedParsing && clangParser &&
(getLanguage()==SrcLangExt_Cpp || getLanguage()==SrcLangExt_ObjC))
{
- if (!sameTu)
- {
- ClangParser::instance()->start(absFilePath(),filesInSameTu);
- }
- else
- {
- ClangParser::instance()->switchToFile(absFilePath());
- }
- ClangParser::instance()->writeSources(devNullIntf,this);
+ clangParser->switchToFile(this);
+ clangParser->writeSources(devNullIntf,this);
}
else
#endif
@@ -1306,15 +1282,6 @@ void FileDefImpl::parseSource(bool sameTu,QStrList &filesInSameTu)
}
}
-void FileDefImpl::startParsing()
-{
-}
-
-void FileDefImpl::finishParsing()
-{
- ClangParser::instance()->finish();
-}
-
void FileDefImpl::addMembersToMemberGroup()
{
QListIterator<MemberList> mli(m_memberLists);
@@ -1464,7 +1431,7 @@ void FileDefImpl::insertNamespace(NamespaceDef *nd)
}
}
-QCString FileDefImpl::name() const
+const QCString &FileDefImpl::name() const
{
if (Config_getBool(FULL_PATH_NAMES))
return m_fileName;
@@ -1540,8 +1507,7 @@ void FileDefImpl::addUsingDeclaration(Definition *d)
}
}
-void FileDefImpl::addIncludeDependency(FileDef *fd,const char *incName,bool local,
- bool imported,bool indirect)
+void FileDefImpl::addIncludeDependency(FileDef *fd,const char *incName,bool local,bool imported)
{
//printf("FileDefImpl::addIncludeDependency(%p,%s,%d)\n",fd,incName,local);
QCString iName = fd ? fd->absFilePath().data() : incName;
@@ -1558,7 +1524,6 @@ void FileDefImpl::addIncludeDependency(FileDef *fd,const char *incName,bool loca
ii->includeName = incName;
ii->local = local;
ii->imported = imported;
- ii->indirect = indirect;
m_includeList->append(ii);
m_includeDict->insert(iName,ii);
}
@@ -1655,7 +1620,6 @@ void FileDefImpl::addIncludedByDependency(FileDef *fd,const char *incName,
ii->includeName = incName;
ii->local = local;
ii->imported = imported;
- ii->indirect = FALSE;
m_includedByList->append(ii);
m_includedByDict->insert(iName,ii);
}
@@ -2166,7 +2130,7 @@ bool FileDefImpl::isLinkableInProject() const
}
static void getAllIncludeFilesRecursively(
- QDict<void> *filesVisited,const FileDef *fd,QStrList &incFiles)
+ StringUnorderedSet &filesVisited,const FileDef *fd,StringVector &incFiles)
{
if (fd->includeFileList())
{
@@ -2175,21 +2139,21 @@ static void getAllIncludeFilesRecursively(
for (iii.toFirst();(ii=iii.current());++iii)
{
if (ii->fileDef && !ii->fileDef->isReference() &&
- !filesVisited->find(ii->fileDef->absFilePath()))
+ filesVisited.find(ii->fileDef->absFilePath().str())==filesVisited.end())
{
//printf("FileDefImpl::addIncludeDependency(%s)\n",ii->fileDef->absFilePath().data());
- incFiles.append(ii->fileDef->absFilePath());
- filesVisited->insert(ii->fileDef->absFilePath(),(void*)0x8);
+ incFiles.push_back(ii->fileDef->absFilePath().str());
+ filesVisited.insert(ii->fileDef->absFilePath().str());
getAllIncludeFilesRecursively(filesVisited,ii->fileDef,incFiles);
}
}
}
}
-void FileDefImpl::getAllIncludeFilesRecursively(QStrList &incFiles) const
+void FileDefImpl::getAllIncludeFilesRecursively(StringVector &incFiles) const
{
- QDict<void> includes(257);
- ::getAllIncludeFilesRecursively(&includes,this,incFiles);
+ StringUnorderedSet includes;
+ ::getAllIncludeFilesRecursively(includes,this,incFiles);
}
QCString FileDefImpl::title() const