00001 /****************************************************************************** 00002 * 00003 * $Id: membername.h,v 1.17 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 MEMBERNAME_H 00019 #define MEMBERNAME_H 00020 00021 #include <qlist.h> 00022 #include "memberdef.h" 00023 #include "sortdict.h" 00024 00025 class MemberName : public QList<MemberDef> 00026 { 00027 public: 00028 MemberName(const char *name); 00029 ~MemberName(); 00030 const char *memberName() const { return name; } 00031 00032 int compareItems(GCI item1,GCI item2); 00033 private: 00034 QCString name; 00035 }; 00036 00037 class MemberNameIterator : public QListIterator<MemberDef> 00038 { 00039 public: 00040 MemberNameIterator( const MemberName &list); 00041 }; 00042 00043 class MemberNameSDict : public SDict<MemberName> 00044 { 00045 public: 00046 MemberNameSDict(int size) : SDict<MemberName>(size) {} 00047 ~MemberNameSDict() {} 00048 00049 int compareItems(GCI item1,GCI item2); 00050 }; 00051 00052 struct MemberInfo 00053 { 00054 MemberInfo(MemberDef *md,Protection p,Specifier v,bool inh) : 00055 memberDef(md), prot(p), virt(v), inherited(inh), ambigClass(0) {} 00056 ~MemberInfo() {} 00057 MemberDef *memberDef; 00058 Protection prot; 00059 Specifier virt; 00060 bool inherited; 00061 QCString scopePath; 00062 QCString ambiguityResolutionScope; 00063 ClassDef *ambigClass; 00064 }; 00065 00066 class MemberNameInfo : public QList<MemberInfo> 00067 { 00068 public: 00069 MemberNameInfo(const char *name); 00070 ~MemberNameInfo() {} 00071 const char *memberName() const { return name; } 00072 int compareItems(GCI item1,GCI item2); 00073 private: 00074 QCString name; 00075 }; 00076 00077 class MemberNameInfoIterator : public QListIterator<MemberInfo> 00078 { 00079 public: 00080 MemberNameInfoIterator(const MemberNameInfo &mnii) 00081 : QListIterator<MemberInfo>(mnii) {} 00082 }; 00083 00084 00085 class MemberNameInfoSDict : public SDict<MemberNameInfo> 00086 { 00087 public: 00088 MemberNameInfoSDict(int size) : SDict<MemberNameInfo>(size) {} 00089 ~MemberNameInfoSDict() {} 00090 int compareItems(GCI item1,GCI item2) 00091 { return stricmp( 00092 ((MemberNameInfo *)item1)->memberName(), 00093 ((MemberNameInfo *)item2)->memberName() 00094 ); 00095 } 00096 }; 00097 00098 #endif