diff options
Diffstat (limited to 'src/groupdef.h')
-rw-r--r-- | src/groupdef.h | 75 |
1 files changed, 31 insertions, 44 deletions
diff --git a/src/groupdef.h b/src/groupdef.h index 8a84a98..624a680 100644 --- a/src/groupdef.h +++ b/src/groupdef.h @@ -1,12 +1,12 @@ /****************************************************************************** * - * + * * * Copyright (C) 1997-2015 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. * @@ -22,29 +22,32 @@ #include "sortdict.h" #include "definition.h" +#include "dirdef.h" +#include "layout.h" +#include "membergroup.h" +#include "linkedmap.h" class MemberList; +class MemberLists; class FileList; -class ClassSDict; +class ClassLinkedRefMap; +class NamespaceLinkedRefMap; class FileDef; class ClassDef; class NamespaceDef; class GroupList; class OutputList; class NamespaceSDict; -class MemberGroupSDict; -class MemberNameInfoSDict; -class PageSDict; +class PageLinkedRefMap; class PageDef; class DirDef; -class DirList; class FTVHelp; class Entry; class MemberDef; class FTextStream; /** A model of a group of symbols. */ -class GroupDef : virtual public Definition +class GroupDef : public DefinitionMutable, public Definition { public: ~GroupDef() {} @@ -60,9 +63,9 @@ class GroupDef : virtual public Definition virtual bool addClass(const ClassDef *def) = 0; virtual bool addNamespace(const NamespaceDef *def) = 0; virtual void addGroup(const GroupDef *def) = 0; - virtual void addPage(PageDef *def) = 0; + virtual void addPage(const PageDef *def) = 0; virtual void addExample(const PageDef *def) = 0; - virtual void addDir(const DirDef *dd) = 0; + virtual void addDir(DirDef *dd) = 0; virtual bool insertMember(MemberDef *def,bool docOnly=FALSE) = 0; virtual void removeMember(MemberDef *md) = 0; virtual bool findGroup(const GroupDef *def) const = 0; @@ -70,7 +73,7 @@ class GroupDef : virtual public Definition virtual void writeMemberPages(OutputList &ol) = 0; virtual void writeQuickMemberLinks(OutputList &ol,const MemberDef *currentMd) const = 0; virtual void writeTagFile(FTextStream &) = 0; - virtual int numDocMembers() const = 0; + virtual size_t numDocMembers() const = 0; virtual bool isLinkableInProject() const = 0; virtual bool isLinkable() const = 0; virtual bool isASubGroup() const = 0; @@ -89,18 +92,18 @@ class GroupDef : virtual public Definition virtual Definition *getGroupScope() const = 0; virtual MemberList *getMemberList(MemberListType lt) const = 0; - virtual const QList<MemberList> &getMemberLists() const = 0; + virtual const MemberLists &getMemberLists() const = 0; /* user defined member groups */ - virtual MemberGroupSDict *getMemberGroupSDict() const = 0; + virtual const MemberGroupList &getMemberGroups() const = 0; virtual FileList * getFiles() const = 0; - virtual ClassSDict * getClasses() const = 0; - virtual NamespaceSDict * getNamespaces() const = 0; - virtual GroupList * getSubGroups() const = 0; - virtual PageSDict * getPages() const = 0; - virtual DirList * getDirs() const = 0; - virtual PageSDict * getExamples() const = 0; + virtual const ClassLinkedRefMap &getClasses() const = 0; + virtual const NamespaceLinkedRefMap &getNamespaces() const = 0; + virtual const GroupList &getSubGroups() const = 0; + virtual const PageLinkedRefMap &getPages() const = 0; + virtual const DirList & getDirs() const = 0; + virtual const PageLinkedRefMap &getExamples() const = 0; virtual bool hasDetailedDescription() const = 0; virtual void sortSubGroups() = 0; @@ -109,35 +112,19 @@ class GroupDef : virtual public Definition GroupDef *createGroupDef(const char *fileName,int line,const char *name, const char *title,const char *refFileName=0); -/** A sorted dictionary of GroupDef objects. */ -class GroupSDict : public SDict<GroupDef> -{ - public: - GroupSDict(uint size) : SDict<GroupDef>(size) {} - virtual ~GroupSDict() {} - private: - int compareValues(const GroupDef *item1,const GroupDef *item2) const - { - return qstrcmp(item1->groupTitle(),item2->groupTitle()); - } -}; +// --- Cast functions -/** A list of GroupDef objects. */ -class GroupList : public QList<GroupDef> +GroupDef *toGroupDef(Definition *d); +const GroupDef *toGroupDef(const Definition *d); + +// ------------------ + +class GroupLinkedMap : public LinkedMap<GroupDef> { - public: - int compareValues(const GroupDef *item1,const GroupDef *item2) const - { - return qstrcmp(item1->groupTitle(),item2->groupTitle()); - } }; -/** An iterator for GroupDef objects in a GroupList. */ -class GroupListIterator : public QListIterator<GroupDef> +class GroupList : public std::vector<const GroupDef *> { - public: - GroupListIterator(const GroupList &l) : QListIterator<GroupDef>(l) {} - virtual ~GroupListIterator() {} }; void addClassToGroups (const Entry *root,ClassDef *cd); |