summaryrefslogtreecommitdiffstats
path: root/src/groupdef.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/groupdef.h')
-rw-r--r--src/groupdef.h75
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);