Doxygen
Loading...
Searching...
No Matches
filedef.cpp File Reference
#include "filedef.h"
#include <unordered_set>
#include "clangparser.h"
#include "classdef.h"
#include "classlist.h"
#include "conceptdef.h"
#include "config.h"
#include "debug.h"
#include "definitionimpl.h"
#include "docparser.h"
#include "dot.h"
#include "dotincldepgraph.h"
#include "doxygen.h"
#include "entry.h"
#include "htags.h"
#include "language.h"
#include "layout.h"
#include "memberdef.h"
#include "membergroup.h"
#include "memberlist.h"
#include "message.h"
#include "moduledef.h"
#include "namespacedef.h"
#include "outputlist.h"
#include "parserintf.h"
#include "portable.h"
#include "util.h"
#include "vhdldocgen.h"
Include dependency graph for filedef.cpp:

Go to the source code of this file.

Classes

class  FileDefImpl

Typedefs

using DefinitionLineMap = std::unordered_map<int,const Definition *>
using MemberDefLineMap = std::unordered_map<int,const MemberDef *>
using IncludeInfoMap = std::unordered_map<std::string, const IncludeInfo *>

Functions

DString includeStatement (SrcLangExt lang, IncludeKind kind)
DString includeOpen (SrcLangExt lang, IncludeKind kind)
DString includeClose (SrcLangExt lang, IncludeKind kind)
DString includeTagFileAttributes (SrcLangExt lang, IncludeKind kind)
std::unique_ptr< FileDefcreateFileDef (const DString &p, const DString &n, const DString &ref, const DString &dn)
static void getAllIncludeFilesRecursively (StringUnorderedSet &filesVisited, const FileDef *fd, StringVector &incFiles)
bool compareFileDefs (const FileDef *fd1, const FileDef *fd2)
FileDeftoFileDef (Definition *d)
const FileDeftoFileDef (const Definition *d)

Typedef Documentation

◆ DefinitionLineMap

using DefinitionLineMap = std::unordered_map<int,const Definition *>

Definition at line 114 of file filedef.cpp.

◆ IncludeInfoMap

using IncludeInfoMap = std::unordered_map<std::string, const IncludeInfo *>

Definition at line 116 of file filedef.cpp.

◆ MemberDefLineMap

using MemberDefLineMap = std::unordered_map<int,const MemberDef *>

Definition at line 115 of file filedef.cpp.

Function Documentation

◆ compareFileDefs()

bool compareFileDefs ( const FileDef * fd1,
const FileDef * fd2 )

Definition at line 1966 of file filedef.cpp.

1967{
1968 return dstricmp_sort(fd1->name(),fd2->name()) < 0;
1969}
virtual const DString & name() const =0
int dstricmp_sort(const char *str1, const char *str2)
Definition dstring.h:67

References dstricmp_sort(), and Definition::name().

Referenced by DirDefImpl::sort(), GroupDefImpl::sortMemberLists(), and writeFileIndex().

◆ createFileDef()

◆ getAllIncludeFilesRecursively()

void getAllIncludeFilesRecursively ( StringUnorderedSet & filesVisited,
const FileDef * fd,
StringVector & incFiles )
static

Definition at line 1861 of file filedef.cpp.

1863{
1864 for (const auto &ii : fd->includeFileList())
1865 {
1866 if (ii.fileDef && !ii.fileDef->isReference() &&
1867 filesVisited.find(ii.fileDef->absFilePath().str())==filesVisited.end())
1868 {
1869 //printf("FileDefImpl::addIncludeDependency(%s)\n",qPrint(ii->fileDef->absFilePath()));
1870 incFiles.push_back(ii.fileDef->absFilePath().str());
1871 filesVisited.insert(ii.fileDef->absFilePath().str());
1872 getAllIncludeFilesRecursively(filesVisited,ii.fileDef,incFiles);
1873 }
1874 }
1875}
virtual const IncludeInfoList & includeFileList() const =0
static void getAllIncludeFilesRecursively(StringUnorderedSet &filesVisited, const FileDef *fd, StringVector &incFiles)
Definition filedef.cpp:1861

References getAllIncludeFilesRecursively(), and FileDef::includeFileList().

Referenced by getAllIncludeFilesRecursively().

◆ includeClose()

DString includeClose ( SrcLangExt lang,
IncludeKind kind )

Definition at line 82 of file filedef.cpp.

83{
84 if (lang==SrcLangExt::IDL) return "\";";
85 else if (lang==SrcLangExt::Java) return ";";
86
87 switch (kind)
88 {
89 case IncludeKind::ImportLocal: return "\";";
90 case IncludeKind::ImportLocalObjC: return "\"";
91 case IncludeKind::IncludeLocal: return "\"";
92 case IncludeKind::ImportSystem: return ">;";
93 case IncludeKind::ImportSystemObjC: return ">";
94 case IncludeKind::IncludeSystem: return ">";
95 case IncludeKind::ImportModule: return ";";
96 }
97 return "";
98}
@ ImportLocal
Definition filedef.h:51
@ ImportModule
Definition filedef.h:52
@ IncludeLocal
Definition filedef.h:47
@ ImportSystemObjC
Definition filedef.h:48
@ ImportLocalObjC
Definition filedef.h:49
@ IncludeSystem
Definition filedef.h:46
@ ImportSystem
Definition filedef.h:50

References ImportLocal, ImportLocalObjC, ImportModule, ImportSystem, ImportSystemObjC, IncludeLocal, and IncludeSystem.

Referenced by ClassDefImpl::writeIncludeFiles(), ConceptDefImpl::writeIncludeFiles(), and FileDefImpl::writeIncludeFiles().

◆ includeOpen()

DString includeOpen ( SrcLangExt lang,
IncludeKind kind )

Definition at line 69 of file filedef.cpp.

70{
71 if (lang==SrcLangExt::Java || kind==IncludeKind::ImportModule) return "";
72 if ((kind & IncludeKind_LocalMask) || (lang==SrcLangExt::IDL))
73 {
74 return "\"";
75 }
76 else
77 {
78 return "<";
79 }
80}
constexpr uint32_t IncludeKind_LocalMask
Definition filedef.h:60

References ImportModule, and IncludeKind_LocalMask.

Referenced by ClassDefImpl::writeIncludeFiles(), ConceptDefImpl::writeIncludeFiles(), and FileDefImpl::writeIncludeFiles().

◆ includeStatement()

DString includeStatement ( SrcLangExt lang,
IncludeKind kind )

Definition at line 52 of file filedef.cpp.

53{
54 bool isIDLorJava = lang==SrcLangExt::IDL || lang==SrcLangExt::Java;
55 if (isIDLorJava || (kind & IncludeKind_ImportMask))
56 {
57 return "import ";
58 }
59 else if (kind & IncludeKind_ObjCMask)
60 {
61 return "#import ";
62 }
63 else
64 {
65 return "#include ";
66 }
67}
constexpr uint32_t IncludeKind_ObjCMask
Definition filedef.h:64
constexpr uint32_t IncludeKind_ImportMask
Definition filedef.h:62

References IncludeKind_ImportMask, and IncludeKind_ObjCMask.

Referenced by ClassDefImpl::writeIncludeFiles(), ConceptDefImpl::writeIncludeFiles(), and FileDefImpl::writeIncludeFiles().

◆ includeTagFileAttributes()

DString includeTagFileAttributes ( SrcLangExt lang,
IncludeKind kind )

Definition at line 100 of file filedef.cpp.

101{
102 DString result;
103 bool isIDLorJava = lang==SrcLangExt::IDL || lang==SrcLangExt::Java;
104 result.sprintf("local=\"%s\" import=\"%s\" module=\"%s\" objc=\"%s\"",
105 (kind & IncludeKind_LocalMask) ? "yes" : "no",
106 (isIDLorJava || (kind & IncludeKind_ImportMask)) ? "yes" : "no",
107 (kind==IncludeKind::ImportModule) ? "yes" : "no",
108 (kind & IncludeKind_ObjCMask) ? "yes" : "no");
109 return result;
110}
A String class for use with Doxygen wrapping std::string and adding some additional functionality off...
Definition dstring.h:84
DString & sprintf(const char *format,...)
Definition dstring.cpp:34

References ImportModule, IncludeKind_ImportMask, IncludeKind_LocalMask, IncludeKind_ObjCMask, and DString::sprintf().

Referenced by FileDefImpl::writeTagFile().

◆ toFileDef() [1/2]

const FileDef * toFileDef ( const Definition * d)

Definition at line 1986 of file filedef.cpp.

1987{
1988 if (d==nullptr) return nullptr;
1989 if (d && typeid(*d)==typeid(FileDefImpl))
1990 {
1991 return static_cast<const FileDef*>(d);
1992 }
1993 else
1994 {
1995 return nullptr;
1996 }
1997}
A model of a file symbol.
Definition filedef.h:97

◆ toFileDef() [2/2]