Merge branch 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into master-integration
[qt-netbsd.git] / src / qt3support / tools / q3intdict.h
blob0ba14c2e4f7c82668be5e26ca278bbda1ac3ae37
1 /****************************************************************************
2 **
3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
6 **
7 ** This file is part of the Qt3Support module of the Qt Toolkit.
8 **
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** No Commercial Usage
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
14 ** this package.
16 ** GNU Lesser General Public License Usage
17 ** Alternatively, this file may be used under the terms of the GNU Lesser
18 ** General Public License version 2.1 as published by the Free Software
19 ** Foundation and appearing in the file LICENSE.LGPL included in the
20 ** packaging of this file. Please review the following information to
21 ** ensure the GNU Lesser General Public License version 2.1 requirements
22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 ** In addition, as a special exception, Nokia gives you certain additional
25 ** rights. These rights are described in the Nokia Qt LGPL Exception
26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 ** If you have questions regarding the use of this file, please contact
29 ** Nokia at qt-info@nokia.com.
38 ** $QT_END_LICENSE$
40 ****************************************************************************/
42 #ifndef Q3INTDICT_H
43 #define Q3INTDICT_H
45 #include <Qt3Support/q3gdict.h>
47 QT_BEGIN_HEADER
49 QT_BEGIN_NAMESPACE
51 QT_MODULE(Qt3SupportLight)
53 template<class type>
54 class Q3IntDict
55 #ifdef qdoc
56 : public Q3PtrCollection
57 #else
58 : public Q3GDict
59 #endif
61 public:
62 Q3IntDict(int size=17) : Q3GDict(size,IntKey,0,0) {}
63 Q3IntDict( const Q3IntDict<type> &d ) : Q3GDict(d) {}
64 ~Q3IntDict() { clear(); }
65 Q3IntDict<type> &operator=(const Q3IntDict<type> &d)
66 { return (Q3IntDict<type>&)Q3GDict::operator=(d); }
67 uint count() const { return Q3GDict::count(); }
68 uint size() const { return Q3GDict::size(); }
69 bool isEmpty() const { return Q3GDict::count() == 0; }
70 void insert( long k, const type *d )
71 { Q3GDict::look_int(k,(Item)d,1); }
72 void replace( long k, const type *d )
73 { Q3GDict::look_int(k,(Item)d,2); }
74 bool remove( long k ) { return Q3GDict::remove_int(k); }
75 type *take( long k ) { return (type*)Q3GDict::take_int(k); }
76 type *find( long k ) const
77 { return (type *)((Q3GDict*)this)->Q3GDict::look_int(k,0,0); }
78 type *operator[]( long k ) const
79 { return (type *)((Q3GDict*)this)->Q3GDict::look_int(k,0,0); }
80 void clear() { Q3GDict::clear(); }
81 void resize( uint n ) { Q3GDict::resize(n); }
82 void statistics() const { Q3GDict::statistics(); }
84 #ifdef qdoc
85 protected:
86 virtual QDataStream& read( QDataStream &, Q3PtrCollection::Item & );
87 virtual QDataStream& write( QDataStream &, Q3PtrCollection::Item ) const;
88 #endif
90 private:
91 void deleteItem( Item d );
94 #if !defined(Q_BROKEN_TEMPLATE_SPECIALIZATION)
95 template<> inline void Q3IntDict<void>::deleteItem( Q3PtrCollection::Item )
98 #endif
100 template<class type> inline void Q3IntDict<type>::deleteItem( Q3PtrCollection::Item d )
102 if ( del_item ) delete (type*)d;
105 template<class type>
106 class Q3IntDictIterator : public Q3GDictIterator
108 public:
109 Q3IntDictIterator(const Q3IntDict<type> &d) :Q3GDictIterator((Q3GDict &)d) {}
110 ~Q3IntDictIterator() {}
111 uint count() const { return dict->count(); }
112 bool isEmpty() const { return dict->count() == 0; }
113 type *toFirst() { return (type *)Q3GDictIterator::toFirst(); }
114 operator type *() const { return (type *)Q3GDictIterator::get(); }
115 type *current() const { return (type *)Q3GDictIterator::get(); }
116 long currentKey() const { return Q3GDictIterator::getKeyInt(); }
117 type *operator()() { return (type *)Q3GDictIterator::operator()(); }
118 type *operator++() { return (type *)Q3GDictIterator::operator++(); }
119 type *operator+=(uint j) { return (type *)Q3GDictIterator::operator+=(j);}
122 QT_END_NAMESPACE
124 QT_END_HEADER
126 #endif // Q3INTDICT_H