00001 /****************************************************************************** 00002 * 00003 * $Id: membergroup.h,v 1.13 2001/03/19 19:27:41 root Exp $ 00004 * 00005 * Copyright (C) 1997-2008 by Dimitri van Heesch. 00006 * 00007 * Permission to use, copy, modify, and distribute this software and its 00008 * documentation under the terms of the GNU General Public License is hereby 00009 * granted. No representations are made about the suitability of this software 00010 * for any purpose. It is provided "as is" without express or implied warranty. 00011 * See the GNU General Public License for more details. 00012 * 00013 * Documents produced by Doxygen are derivative works derived from the 00014 * input used in their production; they are not affected by this license. 00015 * 00016 */ 00017 00018 #ifndef MEMBERGROUP_H 00019 #define MEMBERGROUP_H 00020 00021 #include "qtbc.h" 00022 #include <qlist.h> 00023 #include <qfile.h> 00024 #include "sortdict.h" 00025 00026 #define DOX_NOGROUP -1 00027 00028 class MemberDef; 00029 class ClassDef; 00030 class NamespaceDef; 00031 class FileDef; 00032 class MemberList; 00033 class GroupDef; 00034 class OutputList; 00035 class Definition; 00036 class StorageIntf; 00037 00038 class MemberGroup 00039 { 00040 public: 00041 MemberGroup(); 00042 MemberGroup(Definition *parent,int id,const char *header, 00043 const char *docs,const char *docFile); 00044 ~MemberGroup(); 00045 QCString header() const { return grpHeader; } 00046 int groupId() const { return grpId; } 00047 void insertMember(MemberDef *md); 00048 void setAnchors(ClassDef *); 00049 void writePlainDeclarations(OutputList &ol, 00050 ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd); 00051 void writeDeclarations(OutputList &ol, 00052 ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd); 00053 00054 void writeDocumentation(OutputList &ol,const char *scopeName, 00055 Definition *container); 00056 void writeDocumentationPage(OutputList &ol,const char *scopeName, 00057 Definition *container); 00058 QCString documentation() { return doc; } 00059 bool allMembersInSameSection() { return inSameSection; } 00060 void addToDeclarationSection(); 00061 int countDecMembers(); 00062 int countDocMembers(); 00063 void distributeMemberGroupDocumentation(); 00064 void findSectionsInDocumentation(); 00065 int varCount() const; 00066 int funcCount() const; 00067 int enumCount() const; 00068 int enumValueCount() const; 00069 int typedefCount() const; 00070 int protoCount() const; 00071 int defineCount() const; 00072 int friendCount() const; 00073 int numDecMembers() const; 00074 int numDocMembers() const; 00075 void setInGroup(bool b); 00076 void addListReferences(Definition *d); 00077 MemberList *members() const { return memberList; } 00078 Definition *parent() const { return m_parent; } 00079 00080 void marshal(StorageIntf *s); 00081 void unmarshal(StorageIntf *s); 00082 00083 private: 00084 MemberList *memberList; // list of all members in the group 00085 MemberList *inDeclSection; 00086 int grpId; 00087 QCString grpHeader; 00088 QCString fileName; // base name of the generated file 00089 Definition *scope; 00090 QCString doc; 00091 bool inSameSection; 00092 int m_numDecMembers; 00093 int m_numDocMembers; 00094 Definition *m_parent; 00095 QCString m_docFile; 00096 }; 00097 00098 class MemberGroupList : public QList<MemberGroup> 00099 { 00100 }; 00101 00102 class MemberGroupListIterator : public QListIterator<MemberGroup> 00103 { 00104 public: 00105 MemberGroupListIterator(const MemberGroupList &l) : 00106 QListIterator<MemberGroup>(l) {} 00107 }; 00108 00109 class MemberGroupSDict : public SIntDict<MemberGroup> 00110 { 00111 public: 00112 MemberGroupSDict(int size=17) : SIntDict<MemberGroup>(size) {} 00113 ~MemberGroupSDict() {} 00114 }; 00115 00116 struct MemberGroupInfo 00117 { 00118 QCString header; 00119 QCString doc; 00120 QCString docFile; 00121 }; 00122 00123 //class MemberGroupDict : public QIntDict<MemberGroup> 00124 //{ 00125 // public: 00126 // MemberGroupDict(int size) : QIntDict<MemberGroup>(size) {} 00127 // ~MemberGroupDict() {} 00128 //}; 00129 00130 //class MemberGroupDictIterator : public QIntDictIterator<MemberGroup> 00131 //{ 00132 // public: 00133 // MemberGroupDictIterator(const MemberGroupDict &d) : 00134 // QIntDictIterator<MemberGroup>(d) {} 00135 // ~MemberGroupDictIterator() {} 00136 //}; 00137 00138 #endif