Root/
Source at commit 1322 created 12 years 7 months ago. By meklort, Add doxygen to utils folder | |
---|---|
1 | /******************************************************************************␊ |
2 | *␊ |
3 | * $Id: $␊ |
4 | *␊ |
5 | * Copyright (C) 1997-2011 by Dimitri van Heesch.␊ |
6 | *␊ |
7 | * Permission to use, copy, modify, and distribute this software and its␊ |
8 | * documentation under the terms of the GNU General Public License is hereby ␊ |
9 | * granted. No representations are made about the suitability of this software ␊ |
10 | * for any purpose. It is provided "as is" without express or implied warranty.␊ |
11 | * See the GNU General Public License for more details.␊ |
12 | *␊ |
13 | * Documents produced by Doxygen are derivative works derived from the␊ |
14 | * input used in their production; they are not affected by this license.␊ |
15 | *␊ |
16 | */␊ |
17 | ␊ |
18 | #ifndef DIRDEF_H␊ |
19 | #define DIRDEF_H␊ |
20 | ␊ |
21 | #include "qtbc.h"␊ |
22 | #include "sortdict.h"␊ |
23 | #include "definition.h"␊ |
24 | ␊ |
25 | #include <qlist.h>␊ |
26 | ␊ |
27 | class FileList;␊ |
28 | class ClassSDict;␊ |
29 | class QStrList;␊ |
30 | class FileDef;␊ |
31 | class OutputList;␊ |
32 | class UsedDir;␊ |
33 | class FTextStream;␊ |
34 | ␊ |
35 | class DirDef;␊ |
36 | ␊ |
37 | /** A list of directories */␊ |
38 | class DirList : public QList<DirDef>␊ |
39 | {␊ |
40 | public:␊ |
41 | int compareItems(GCI item1,GCI item2);␊ |
42 | };␊ |
43 | ␊ |
44 | /** A directory */␊ |
45 | class DirDef : public Definition␊ |
46 | {␊ |
47 | public:␊ |
48 | DirDef(const char *path);␊ |
49 | virtual ~DirDef();␊ |
50 | ␊ |
51 | // accessors␊ |
52 | virtual DefType definitionType() const { return TypeDir; }␊ |
53 | virtual QCString getOutputFileBase() const;␊ |
54 | virtual bool isLinkableInProject() const;␊ |
55 | virtual bool isLinkable() const;␊ |
56 | QCString displayName() const { return m_dispName; }␊ |
57 | QCString shortName() const { return m_shortName; }␊ |
58 | void addSubDir(DirDef *subdir);␊ |
59 | FileList * getFiles() const { return m_fileList; }␊ |
60 | void addFile(FileDef *fd);␊ |
61 | const DirList &subDirs() const { return m_subdirs; }␊ |
62 | bool isCluster() const { return m_subdirs.count()>0; }␊ |
63 | int level() const { return m_level; }␊ |
64 | DirDef *parent() const { return m_parent; }␊ |
65 | int dirCount() const { return m_dirCount; }␊ |
66 | const QDict<UsedDir> *usedDirs() const { return m_usedDirs; }␊ |
67 | bool isParentOf(DirDef *dir) const;␊ |
68 | bool depGraphIsTrivial() const;␊ |
69 | ␊ |
70 | // generate output␊ |
71 | void writeDocumentation(OutputList &ol);␊ |
72 | void writeDepGraph(FTextStream &t);␊ |
73 | ␊ |
74 | static DirDef *mergeDirectoryInTree(const QCString &path);␊ |
75 | bool visited;␊ |
76 | ␊ |
77 | private:␊ |
78 | friend void computeDirDependencies();␊ |
79 | ␊ |
80 | void writeDetailedDescription(OutputList &ol,const QCString &title);␊ |
81 | void writeBriefDescription(OutputList &ol);␊ |
82 | void writeDirectoryGraph(OutputList &ol);␊ |
83 | void writeSubDirList(OutputList &ol);␊ |
84 | void writeFileList(OutputList &ol);␊ |
85 | void startMemberDeclarations(OutputList &ol);␊ |
86 | void endMemberDeclarations(OutputList &ol);␊ |
87 | ␊ |
88 | void setLevel();␊ |
89 | static DirDef *createNewDir(const char *path);␊ |
90 | static bool matchPath(const QCString &path,QStrList &l);␊ |
91 | void addUsesDependency(DirDef *usedDir,FileDef *srcFd,␊ |
92 | FileDef *dstFd,bool inherited);␊ |
93 | void computeDependencies();␊ |
94 | ␊ |
95 | DirList m_subdirs;␊ |
96 | QCString m_dispName;␊ |
97 | QCString m_shortName;␊ |
98 | FileList *m_fileList; // list of files in the group␊ |
99 | int m_dirCount;␊ |
100 | int m_level;␊ |
101 | DirDef *m_parent;␊ |
102 | QDict<UsedDir> *m_usedDirs;␊ |
103 | };␊ |
104 | ␊ |
105 | class FilePair ␊ |
106 | {␊ |
107 | public:␊ |
108 | FilePair(FileDef *src,FileDef *dst) : m_src(src), m_dst(dst) {}␊ |
109 | const FileDef *source() const { return m_src; }␊ |
110 | const FileDef *destination() const { return m_dst; }␊ |
111 | private:␊ |
112 | FileDef *m_src;␊ |
113 | FileDef *m_dst;␊ |
114 | };␊ |
115 | ␊ |
116 | class FilePairDict : public SDict<FilePair>␊ |
117 | {␊ |
118 | public:␊ |
119 | FilePairDict(int size) : SDict<FilePair>(size) {}␊ |
120 | int compareItems(GCI item1,GCI item2);␊ |
121 | };␊ |
122 | ␊ |
123 | /** Usage information of a directory . */␊ |
124 | class UsedDir␊ |
125 | {␊ |
126 | public:␊ |
127 | UsedDir(DirDef *dir,bool inherited);␊ |
128 | virtual ~UsedDir();␊ |
129 | void addFileDep(FileDef *srcFd,FileDef *dstFd);␊ |
130 | FilePair *findFilePair(const char *name);␊ |
131 | const FilePairDict &filePairs() const { return m_filePairs; }␊ |
132 | const DirDef *dir() const { return m_dir; }␊ |
133 | bool inherited() const { return m_inherited; }␊ |
134 | ␊ |
135 | private:␊ |
136 | DirDef *m_dir;␊ |
137 | FilePairDict m_filePairs;␊ |
138 | bool m_inherited;␊ |
139 | };␊ |
140 | ␊ |
141 | /** A usage relation between two direction. */␊ |
142 | class DirRelation␊ |
143 | {␊ |
144 | public:␊ |
145 | DirRelation(const QCString &name,DirDef *src,UsedDir *dst) ␊ |
146 | : m_name(name), m_src(src), m_dst(dst) {}␊ |
147 | DirDef *source() const { return m_src; }␊ |
148 | UsedDir *destination() const { return m_dst; }␊ |
149 | void writeDocumentation(OutputList &ol);␊ |
150 | QCString getOutputFileBase() const { return m_name; }␊ |
151 | ␊ |
152 | private:␊ |
153 | QCString m_name;␊ |
154 | DirDef *m_src;␊ |
155 | UsedDir *m_dst;␊ |
156 | };␊ |
157 | ␊ |
158 | inline int DirList::compareItems(GCI item1,GCI item2)␊ |
159 | {␊ |
160 | return stricmp(((DirDef *)item1)->shortName(),((DirDef *)item2)->shortName());␊ |
161 | }␊ |
162 | ␊ |
163 | class DirSDict : public SDict<DirDef>␊ |
164 | {␊ |
165 | public:␊ |
166 | DirSDict(int size) : SDict<DirDef>(size) {}␊ |
167 | int compareItems(GCI item1,GCI item2)␊ |
168 | {␊ |
169 | return stricmp(((DirDef *)item1)->shortName(),((DirDef *)item2)->shortName());␊ |
170 | }␊ |
171 | };␊ |
172 | ␊ |
173 | ␊ |
174 | void buildDirectories();␊ |
175 | void generateDirDocs(OutputList &ol);␊ |
176 | void computeDirDependencies();␊ |
177 | void writeDirDependencyGraph(const char *file);␊ |
178 | ␊ |
179 | #endif␊ |
180 |