Fix for UBSan build
[platform/upstream/doxygen.git] / src / membername.h
1 /******************************************************************************
2  *
3  * $Id: membername.h,v 1.17 2001/03/19 19:27:41 root Exp $
4  *
5  * Copyright (C) 1997-2012 by Dimitri van Heesch.
6  *
7  * Permission to use, copy, modify, and distribute this software and its
8  * documentation under the terms of the GNU General Public License is hereby 
9  * granted. No representations are made about the suitability of this software 
10  * for any purpose. It is provided "as is" without express or implied warranty.
11  * See the GNU General Public License for more details.
12  *
13  * Documents produced by Doxygen are derivative works derived from the
14  * input used in their production; they are not affected by this license.
15  *
16  */
17
18 #ifndef MEMBERNAME_H
19 #define MEMBERNAME_H
20
21 #include <qlist.h>
22 #include "memberdef.h"
23 #include "sortdict.h"
24
25 /** Class representing all MemberDef objects with the same name */
26 class MemberName : public QList<MemberDef>
27
28   public:
29     MemberName(const char *name);
30    ~MemberName();
31     const char *memberName() const { return name; }
32    
33     int compareItems(GCI item1,GCI item2);
34   private:
35     QCString name;
36 };
37
38 /** Iterator for MemberDef objects in a MemberName list. */
39 class MemberNameIterator : public QListIterator<MemberDef>
40 {
41   public:
42     MemberNameIterator( const MemberName &list);
43 };
44
45 /** Sorted dictionary of MemberName objects. */
46 class MemberNameSDict : public SDict<MemberName>
47 {
48   public:
49     MemberNameSDict(int size) : SDict<MemberName>(size) {}
50    ~MemberNameSDict() {}
51
52    int compareItems(GCI item1,GCI item2);
53 };
54
55 /** Data associated with a MemberDef in an inheritance relation. */
56 struct MemberInfo
57 {
58   MemberInfo(MemberDef *md,Protection p,Specifier v,bool inh) :
59         memberDef(md), prot(p), virt(v), inherited(inh), ambigClass(0) {}
60  ~MemberInfo() {}
61   MemberDef *memberDef;
62   Protection prot;
63   Specifier  virt;
64   bool       inherited;
65   QCString   scopePath;
66   QCString   ambiguityResolutionScope; 
67   ClassDef  *ambigClass;
68 };
69
70 /** Class representing all MemberInfo objects with the same name */
71 class MemberNameInfo : public QList<MemberInfo>
72 {
73   public:
74     MemberNameInfo(const char *name);  
75    ~MemberNameInfo() {}
76     const char *memberName() const { return name; }
77     int compareItems(GCI item1,GCI item2);
78   private:
79     QCString name;
80 };
81
82 /** Iterator for MemberInfo objects in a MemberNameInfo list. */
83 class MemberNameInfoIterator : public QListIterator<MemberInfo>
84 {
85   public:
86     MemberNameInfoIterator(const MemberNameInfo &mnii) 
87       : QListIterator<MemberInfo>(mnii) {}
88 };
89
90 /** Sorted dictionary of MemberNameInfo objects. */
91 class MemberNameInfoSDict : public SDict<MemberNameInfo>
92 {
93   public:
94     MemberNameInfoSDict(int size) : SDict<MemberNameInfo>(size) {}
95    ~MemberNameInfoSDict() {}
96     int compareItems(GCI item1,GCI item2) 
97     { return stricmp(
98                     ((MemberNameInfo *)item1)->memberName(),
99                     ((MemberNameInfo *)item2)->memberName()
100                    );
101     }
102 };
103
104 #endif