Fix for UBSan build
[platform/upstream/doxygen.git] / src / classlist.h
1 /******************************************************************************
2  *
3  * $Id: classlist.h,v 1.8 2001/03/19 19:27:39 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 CLASSLIST_H
19 #define CLASSLIST_H
20
21 #include <qlist.h>
22 #include <qdict.h>
23
24 #include "classdef.h"
25 #include "sortdict.h"
26
27 class Definition;
28
29 /** A list of ClassDef objects. */
30 class ClassList : public QList<ClassDef>
31
32   public:
33     ClassList();
34    ~ClassList();
35    
36    int compareItems(GCI item1,GCI item2);
37 };
38
39 /** An iterator for ClassDef objects in a ClassList. */
40 class ClassListIterator : public QListIterator<ClassDef>
41 {
42   public:
43     ClassListIterator(const ClassList &list);
44 };
45
46 /** An unsorted dictionary of ClassDef objects. */
47 class ClassDict : public QDict<ClassDef>
48 {
49   public:
50     ClassDict(int size) : QDict<ClassDef>(size) {}
51    ~ClassDict() {}
52 };
53
54 /** A sorted dictionary of ClassDef objects. */
55 class ClassSDict : public SDict<ClassDef>
56 {
57   public:
58     ClassSDict(int size=17) : SDict<ClassDef>(size) {}
59    ~ClassSDict() {}
60    int compareItems(GCI item1,GCI item2);
61    void writeDeclaration(OutputList &ol,const ClassDef::CompoundType *filter=0,
62                          const char *header=0,bool localNames=FALSE);
63    void writeDocumentation(OutputList &ol,Definition *container=0);
64    bool declVisible(const ClassDef::CompoundType *filter=0) const;
65 };
66
67 class GenericsCollection : public QIntDict<ClassDef>
68 {
69   public:
70     GenericsCollection() : QIntDict<ClassDef>(17) {}
71    ~GenericsCollection() {}
72 };
73
74 class GenericsSDict 
75 {
76   public:
77    GenericsSDict() : m_dict(17) { m_dict.setAutoDelete(TRUE); }
78   ~GenericsSDict() {}
79    void insert(const QCString &key,ClassDef *cd);
80    ClassDef *find(const QCString &key);
81   private:
82    SDict<GenericsCollection> m_dict;
83 };
84
85 #endif