1 /****************************************************************************
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
7 ** This file is part of the Qt3Support module of the Qt Toolkit.
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
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.
40 ****************************************************************************/
42 #ifndef Q3ASCIICACHE_H
43 #define Q3ASCIICACHE_H
45 #include <Qt3Support/q3gcache.h>
51 QT_MODULE(Qt3SupportLight
)
56 : public Q3PtrCollection
62 Q3AsciiCache(const Q3AsciiCache
<type
> &c
) : Q3GCache(c
) {}
63 Q3AsciiCache(int maxCost
=100, int size
=17, bool caseSensitive
=true,
65 : Q3GCache(maxCost
, size
, AsciiKey
, caseSensitive
, copyKeys
) {}
66 ~Q3AsciiCache() { clear(); }
67 Q3AsciiCache
<type
> &operator=(const Q3AsciiCache
<type
> &c
)
68 { return (Q3AsciiCache
<type
>&)Q3GCache::operator=(c
); }
69 int maxCost() const { return Q3GCache::maxCost(); }
70 int totalCost() const { return Q3GCache::totalCost(); }
71 void setMaxCost(int m
) { Q3GCache::setMaxCost(m
); }
72 uint
count() const { return Q3GCache::count(); }
73 uint
size() const { return Q3GCache::size(); }
74 bool isEmpty() const { return Q3GCache::count() == 0; }
75 void clear() { Q3GCache::clear(); }
76 bool insert(const char *k
, const type
*d
, int c
=1, int p
=0)
77 { return Q3GCache::insert_other(k
,(Item
)d
,c
,p
);}
78 bool remove(const char *k
)
79 { return Q3GCache::remove_other(k
); }
80 type
*take(const char *k
)
81 { return (type
*)Q3GCache::take_other(k
); }
82 type
*find(const char *k
, bool ref
=true) const
83 { return (type
*)Q3GCache::find_other(k
,ref
);}
84 type
*operator[](const char *k
) const
85 { return (type
*)Q3GCache::find_other(k
);}
86 void statistics() const { Q3GCache::statistics(); }
88 void deleteItem(Item d
);
91 #if !defined(Q_BROKEN_TEMPLATE_SPECIALIZATION)
92 template<> inline void Q3AsciiCache
<void>::deleteItem(Q3PtrCollection::Item
)
97 template<class type
> inline void Q3AsciiCache
<type
>::deleteItem(Q3PtrCollection::Item d
)
99 if (del_item
) delete (type
*)d
;
104 class Q3AsciiCacheIterator
: public Q3GCacheIterator
107 Q3AsciiCacheIterator(const Q3AsciiCache
<type
> &c
):Q3GCacheIterator((Q3GCache
&)c
) {}
108 Q3AsciiCacheIterator(const Q3AsciiCacheIterator
<type
> &ci
)
109 : Q3GCacheIterator((Q3GCacheIterator
&)ci
) {}
110 Q3AsciiCacheIterator
<type
> &operator=(const Q3AsciiCacheIterator
<type
>&ci
)
111 { return (Q3AsciiCacheIterator
<type
>&)Q3GCacheIterator::operator=(ci
); }
112 uint
count() const { return Q3GCacheIterator::count(); }
113 bool isEmpty() const { return Q3GCacheIterator::count() == 0; }
114 bool atFirst() const { return Q3GCacheIterator::atFirst(); }
115 bool atLast() const { return Q3GCacheIterator::atLast(); }
116 type
*toFirst() { return (type
*)Q3GCacheIterator::toFirst(); }
117 type
*toLast() { return (type
*)Q3GCacheIterator::toLast(); }
118 operator type
*() const { return (type
*)Q3GCacheIterator::get(); }
119 type
*current() const { return (type
*)Q3GCacheIterator::get(); }
120 const char *currentKey() const { return Q3GCacheIterator::getKeyAscii(); }
121 type
*operator()() { return (type
*)Q3GCacheIterator::operator()();}
122 type
*operator++() { return (type
*)Q3GCacheIterator::operator++(); }
123 type
*operator+=(uint j
) { return (type
*)Q3GCacheIterator::operator+=(j
);}
124 type
*operator--() { return (type
*)Q3GCacheIterator::operator--(); }
125 type
*operator-=(uint j
) { return (type
*)Q3GCacheIterator::operator-=(j
);}
132 #endif // Q3ASCIICACHE_H