summaryrefslogtreecommitdiffstats
path: root/src/dirdef.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/dirdef.h')
-rw-r--r--src/dirdef.h139
1 files changed, 76 insertions, 63 deletions
diff --git a/src/dirdef.h b/src/dirdef.h
index 2ea54af..b3f2a30 100644
--- a/src/dirdef.h
+++ b/src/dirdef.h
@@ -1,12 +1,10 @@
/******************************************************************************
*
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van Heesch.
+ * Copyright (C) 1997-2020 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
- * documentation under the terms of the GNU General Public License is hereby
- * granted. No representations are made about the suitability of this software
+ * documentation under the terms of the GNU General Public License is hereby
+ * granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
@@ -18,34 +16,85 @@
#ifndef DIRDEF_H
#define DIRDEF_H
+#include "linkedmap.h"
#include "sortdict.h"
#include "definition.h"
-#include <qlist.h>
+#include <vector>
+#include <map>
+#include <qglobal.h>
+#include <qcstring.h>
+
class FileList;
-class ClassSDict;
class QStrList;
class FileDef;
class OutputList;
class UsedDir;
class FTextStream;
-
+class FilePair;
+class FilePairDict;
class DirDef;
+class DirList;
-/** A list of directories. */
-class DirList : public QList<DirDef>
+bool compareDirDefs(const DirDef *item1, const DirDef *item2);
+
+// ------------------
+
+/** Class representing a pair of FileDef objects */
+class FilePair
{
public:
- int compareValues(const DirDef *item1,const DirDef *item2) const;
+ FilePair(FileDef *src,FileDef *dst) : m_src(src), m_dst(dst) {}
+ const FileDef *source() const { return m_src; }
+ const FileDef *destination() const { return m_dst; }
+ private:
+ FileDef *m_src;
+ FileDef *m_dst;
};
+// ------------------
+
+/** A sorted dictionary of FilePair objects. */
+class FilePairDict : public SDict<FilePair>
+{
+ public:
+ FilePairDict(uint size) : SDict<FilePair>(size) {}
+ private:
+ int compareValues(const FilePair *item1,const FilePair *item2) const;
+};
+
+// ------------------
+
+/** Usage information of a directory. */
+class UsedDir
+{
+ public:
+ UsedDir(const DirDef *dir,bool inherited);
+ virtual ~UsedDir();
+ void addFileDep(FileDef *srcFd,FileDef *dstFd);
+ FilePair *findFilePair(const char *name);
+ const FilePairDict &filePairs() const { return m_filePairs; }
+ const DirDef *dir() const { return m_dir; }
+ bool inherited() const { return m_inherited; }
+ void sort();
+
+ private:
+ const DirDef *m_dir;
+ FilePairDict m_filePairs;
+ bool m_inherited;
+};
+
+// ------------------
+
/** A model of a directory symbol. */
-class DirDef : virtual public Definition
+class DirDef : public DefinitionMutable, public Definition
{
public:
virtual ~DirDef() {}
+ class UsedDirLinkedMap : public LinkedMap<UsedDir> {};
+
// accessors
virtual DefType definitionType() const = 0;
virtual QCString getOutputFileBase() const = 0;
@@ -62,7 +111,7 @@ class DirDef : virtual public Definition
virtual int level() const = 0;
virtual DirDef *parent() const = 0;
virtual int dirCount() const = 0;
- virtual const QDict<UsedDir> *usedDirs() const = 0;
+ virtual const UsedDirLinkedMap &usedDirs() const = 0;
virtual bool isParentOf(const DirDef *dir) const = 0;
virtual bool depGraphIsTrivial() const = 0;
virtual QCString shortTitle() const = 0;
@@ -81,51 +130,16 @@ class DirDef : virtual public Definition
virtual void computeDependencies() = 0;
};
-/** Class representing a pair of FileDef objects */
-class FilePair
-{
- public:
- FilePair(FileDef *src,FileDef *dst) : m_src(src), m_dst(dst) {}
- const FileDef *source() const { return m_src; }
- const FileDef *destination() const { return m_dst; }
- private:
- FileDef *m_src;
- FileDef *m_dst;
-};
+// --- Cast functions
-/** A sorted dictionary of FilePair objects. */
-class FilePairDict : public SDict<FilePair>
-{
- public:
- FilePairDict(int size) : SDict<FilePair>(size) {}
- private:
- int compareValues(const FilePair *item1,const FilePair *item2) const;
-};
-
-/** Usage information of a directory. */
-class UsedDir
-{
- public:
- UsedDir(DirDef *dir,bool inherited);
- virtual ~UsedDir();
- void addFileDep(FileDef *srcFd,FileDef *dstFd);
- FilePair *findFilePair(const char *name);
- const FilePairDict &filePairs() const { return m_filePairs; }
- const DirDef *dir() const { return m_dir; }
- bool inherited() const { return m_inherited; }
- void sort();
-
- private:
- DirDef *m_dir;
- FilePairDict m_filePairs;
- bool m_inherited;
-};
+DirDef *toDirDef(Definition *d);
+const DirDef *toDirDef(const Definition *d);
/** A usage relation between two directories. */
class DirRelation
{
public:
- DirRelation(const QCString &name,const DirDef *src,UsedDir *dst)
+ DirRelation(const QCString &name,const DirDef *src,UsedDir *dst)
: m_name(name), m_src(src), m_dst(dst) {}
const DirDef *source() const { return m_src; }
UsedDir *destination() const { return m_dst; }
@@ -138,22 +152,21 @@ class DirRelation
UsedDir *m_dst;
};
-inline int DirList::compareValues(const DirDef *item1,const DirDef *item2) const
+/** A linked map of directories */
+class DirLinkedMap : public LinkedMap<DirDef>
+{
+};
+
+/** A list of directories. */
+class DirList : public std::vector<const DirDef*>
{
- return qstricmp(item1->shortName(),item2->shortName());
-}
+};
-/** A sorted dictionary of DirDef objects. */
-class DirSDict : public SDict<DirDef>
+class DirRelationLinkedMap : public LinkedMap<DirRelation>
{
- public:
- DirSDict(int size) : SDict<DirDef>(size) {}
- int compareValues(const DirDef *item1,const DirDef *item2) const
- {
- return qstricmp(item1->shortName(),item2->shortName());
- }
};
+// ------------------
void buildDirectories();
void generateDirDocs(OutputList &ol);