summaryrefslogtreecommitdiff
path: root/src/groupdef.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/groupdef.h')
-rw-r--r--src/groupdef.h197
1 files changed, 197 insertions, 0 deletions
diff --git a/src/groupdef.h b/src/groupdef.h
new file mode 100644
index 0000000..dfd9599
--- /dev/null
+++ b/src/groupdef.h
@@ -0,0 +1,197 @@
+/******************************************************************************
+ *
+ * $Id: groupdef.h,v 1.18 2001/03/19 19:27:40 root Exp $
+ *
+ * Copyright (C) 1997-2012 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
+ * for any purpose. It is provided "as is" without express or implied warranty.
+ * See the GNU General Public License for more details.
+ *
+ * Documents produced by Doxygen are derivative works derived from the
+ * input used in their production; they are not affected by this license.
+ *
+ */
+
+#ifndef GROUPDEF_H
+#define GROUPDEF_H
+
+#include "qtbc.h"
+#include "sortdict.h"
+#include "definition.h"
+#include "memberlist.h"
+#include "memberdef.h"
+#include "htmlhelp.h"
+
+class FileList;
+class ClassSDict;
+class FileDef;
+class ClassDef;
+class NamespaceDef;
+class GroupList;
+class OutputList;
+class NamespaceSDict;
+class MemberGroupSDict;
+class MemberNameInfoSDict;
+class PageSDict;
+class PageDef;
+class DirDef;
+class DirList;
+class FTVHelp;
+class Entry;
+
+/** A model of a group of symbols. */
+class GroupDef : public Definition
+{
+ public:
+ GroupDef(const char *fileName,int line,const char *name,const char *title,const char *refFileName=0);
+ ~GroupDef();
+ DefType definitionType() const { return TypeGroup; }
+ QCString getOutputFileBase() const;
+ QCString anchor() const { return QCString(); }
+ QCString displayName(bool=TRUE) const { return hasGroupTitle() ? title : Definition::name(); }
+ const char *groupTitle() const { return title; }
+ void setGroupTitle( const char *newtitle );
+ bool hasGroupTitle( ) const { return titleSet; }
+ void addFile(const FileDef *def);
+ bool addClass(const ClassDef *def);
+ bool addNamespace(const NamespaceDef *def);
+ void addGroup(const GroupDef *def);
+ void addParentGroup(const GroupDef *def);
+ void addPage(PageDef *def);
+ void addExample(const PageDef *def);
+ void addDir(const DirDef *dd);
+ bool insertMember(MemberDef *def,bool docOnly=FALSE);
+ void removeMember(MemberDef *md);
+ bool containsGroup(const GroupDef *def); // true if def is already a subgroup
+ void writeDocumentation(OutputList &ol);
+ void writeMemberPages(OutputList &ol);
+ void writeQuickMemberLinks(OutputList &ol,MemberDef *currentMd) const;
+ int countMembers() const;
+ bool isLinkableInProject() const;
+ bool isLinkable() const;
+ bool isASubGroup() const;
+ void computeAnchors();
+
+ void addMembersToMemberGroup();
+ void distributeMemberGroupDocumentation();
+ void findSectionsInDocumentation();
+
+ void addListReferences();
+ void sortMemberLists();
+
+ bool visited; // number of times accessed for output - KPW
+
+ //friend void writeGroupTreeNode(OutputList&, GroupDef*, int, FTVHelp*);
+ // make accessible for writing tree view of group in index.cpp - KPW
+
+ void setGroupScope(Definition *d) { groupScope = d; }
+ Definition *getGroupScope() const { return groupScope; }
+
+ MemberList *getMemberList(MemberList::ListType lt) const;
+ const QList<MemberList> &getMemberLists() const { return m_memberLists; }
+
+ /* user defined member groups */
+ MemberGroupSDict *getMemberGroupSDict() const { return memberGroupSDict; }
+
+ FileList * getFiles() const { return fileList; }
+ ClassSDict * getClasses() const { return classSDict; }
+ NamespaceSDict * getNamespaces() const { return namespaceSDict; }
+ GroupList * getSubGroups() const { return groupList; }
+ PageSDict * getPages() const { return pageDict; }
+ DirList * getDirs() const { return dirList; }
+ PageSDict * getExamples() const { return exampleDict; }
+ //MemberList* getMembers() const { return allMemberList; }
+ void sortSubGroups();
+
+ protected:
+ void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const);
+
+ private:
+ MemberList *createMemberList(MemberList::ListType lt);
+ void addMemberToList(MemberList::ListType lt,MemberDef *md);
+ void writeMemberDeclarations(OutputList &ol,MemberList::ListType lt,const QCString &title);
+ void writeMemberDocumentation(OutputList &ol,MemberList::ListType lt,const QCString &title);
+ void removeMemberFromList(MemberList::ListType lt,MemberDef *md);
+ void writeGroupGraph(OutputList &ol);
+ void writeFiles(OutputList &ol,const QCString &title);
+ void writeNamespaces(OutputList &ol,const QCString &title);
+ void writeNestedGroups(OutputList &ol,const QCString &title);
+ void writeDirs(OutputList &ol,const QCString &title);
+ void writeClasses(OutputList &ol,const QCString &title);
+ void writeInlineClasses(OutputList &ol);
+ void writePageDocumentation(OutputList &ol);
+ void writeDetailedDescription(OutputList &ol,const QCString &title);
+ void writeBriefDescription(OutputList &ol);
+ void writeMemberGroups(OutputList &ol);
+ void startMemberDeclarations(OutputList &ol);
+ void endMemberDeclarations(OutputList &ol);
+ void startMemberDocumentation(OutputList &ol);
+ void endMemberDocumentation(OutputList &ol);
+ void writeAuthorSection(OutputList &ol);
+ void writeSummaryLinks(OutputList &ol);
+ void updateLanguage(const Definition *);
+
+ QCString title; // title of the group
+ bool titleSet; // true if title is not the same as the name
+ QCString fileName; // base name of the generated file
+ FileList *fileList; // list of files in the group
+ ClassSDict *classSDict; // list of classes in the group
+ NamespaceSDict *namespaceSDict; // list of namespaces in the group
+ GroupList *groupList; // list of sub groups.
+ PageSDict *pageDict; // list of pages in the group
+ PageSDict *exampleDict; // list of examples in the group
+ DirList *dirList; // list of directories in the group
+
+ MemberList *allMemberList;
+ MemberNameInfoSDict *allMemberNameInfoSDict;
+
+ Definition *groupScope;
+
+ QList<MemberList> m_memberLists;
+ MemberGroupSDict *memberGroupSDict;
+
+};
+
+/** A sorted dictionary of GroupDef objects. */
+class GroupSDict : public SDict<GroupDef>
+{
+ public:
+ GroupSDict(uint size) : SDict<GroupDef>(size) {}
+ virtual ~GroupSDict() {}
+ int compareItems(GCI item1,GCI item2)
+ {
+ return strcmp(((GroupDef*)item1)->groupTitle(),((GroupDef*)item2)->groupTitle());
+ }
+};
+
+/** A list of GroupDef objects. */
+class GroupList : public QList<GroupDef>
+{
+ public:
+ int compareItems(GCI item1,GCI item2)
+ {
+ return strcmp(((GroupDef*)item1)->groupTitle(),((GroupDef*)item2)->groupTitle());
+ }
+};
+
+/** An iterator for GroupDef objects in a GroupList. */
+class GroupListIterator : public QListIterator<GroupDef>
+{
+ public:
+ GroupListIterator(const GroupList &l) : QListIterator<GroupDef>(l) {}
+ virtual ~GroupListIterator() {}
+};
+
+void addClassToGroups(Entry *root,ClassDef *cd);
+void addNamespaceToGroups(Entry *root,NamespaceDef *nd);
+void addGroupToGroups(Entry *root,GroupDef *subGroup);
+void addMemberToGroups(Entry *root,MemberDef *md);
+void addPageToGroups(Entry *root,PageDef *pd);
+void addExampleToGroups(Entry *root,PageDef *eg);
+void addDirToGroups(Entry *root,DirDef *dd);
+
+#endif
+