diff options
Diffstat (limited to 'src/dirdef.h')
-rw-r--r-- | src/dirdef.h | 139 |
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); |