summaryrefslogtreecommitdiffstats
path: root/qtools/qgcache.h
diff options
context:
space:
mode:
authordimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7>2003-12-15 18:58:39 (GMT)
committerdimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7>2003-12-15 18:58:39 (GMT)
commit104be290eb99ab3277906a57fb4673dfa1850bc6 (patch)
tree1cb1b44f09351116c7ebe409fef462341fac2ff3 /qtools/qgcache.h
parent4d3dea2f08f3bed73db5c3b8dc3772e46decb479 (diff)
downloadDoxygen-104be290eb99ab3277906a57fb4673dfa1850bc6.zip
Doxygen-104be290eb99ab3277906a57fb4673dfa1850bc6.tar.gz
Doxygen-104be290eb99ab3277906a57fb4673dfa1850bc6.tar.bz2
Release-1.3.5-20031215
Diffstat (limited to 'qtools/qgcache.h')
-rw-r--r--qtools/qgcache.h128
1 files changed, 128 insertions, 0 deletions
diff --git a/qtools/qgcache.h b/qtools/qgcache.h
new file mode 100644
index 0000000..5c3e126
--- /dev/null
+++ b/qtools/qgcache.h
@@ -0,0 +1,128 @@
+/****************************************************************************
+**
+**
+** Definition of QGCache and QGCacheIterator classes
+**
+** Created : 950208
+**
+** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
+**
+** This file is part of the tools module of the Qt GUI Toolkit.
+**
+** This file may be distributed under the terms of the Q Public License
+** as defined by Trolltech AS of Norway and appearing in the file
+** LICENSE.QPL included in the packaging of this file.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
+** licenses may use this file in accordance with the Qt Commercial License
+** Agreement provided with the Software.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
+** information about Qt Commercial License Agreements.
+** See http://www.trolltech.com/qpl/ for QPL licensing information.
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#ifndef QGCACHE_H
+#define QGCACHE_H
+
+#ifndef QT_H
+#include "qcollection.h"
+#include "qglist.h"
+#include "qgdict.h"
+#endif // QT_H
+
+
+class QCList; // internal classes
+class QCListIt;
+class QCDict;
+
+
+class Q_EXPORT QGCache : public QCollection // generic LRU cache
+{
+friend class QGCacheIterator;
+protected:
+ enum KeyType { StringKey, AsciiKey, IntKey, PtrKey };
+ // identical to QGDict's, but PtrKey is not used at the moment
+
+ QGCache( int maxCost, uint size, KeyType kt, bool caseSensitive,
+ bool copyKeys );
+ QGCache( const QGCache & ); // not allowed, calls fatal()
+ ~QGCache();
+ QGCache &operator=( const QGCache & ); // not allowed, calls fatal()
+
+ uint count() const { return ((QGDict*)dict)->count(); }
+ uint size() const { return ((QGDict*)dict)->size(); }
+ int maxCost() const { return mCost; }
+ int totalCost() const { return tCost; }
+ void setMaxCost( int maxCost );
+ void clear();
+
+ bool insert_string( const QString &key, QCollection::Item,
+ int cost, int priority );
+ bool insert_other( const char *key, QCollection::Item,
+ int cost, int priority );
+ bool remove_string( const QString &key );
+ bool remove_other( const char *key );
+ QCollection::Item take_string( const QString &key );
+ QCollection::Item take_other( const char *key );
+
+ QCollection::Item find_string( const QString &key, bool ref=TRUE ) const;
+ QCollection::Item find_other( const char *key, bool ref=TRUE ) const;
+
+ void statistics() const;
+
+private:
+ bool makeRoomFor( int cost, int priority = -1 );
+ KeyType keytype;
+ QCList *lruList;
+ QCDict *dict;
+ int mCost;
+ int tCost;
+ bool copyk;
+};
+
+
+class Q_EXPORT QGCacheIterator // generic cache iterator
+{
+protected:
+ QGCacheIterator( const QGCache & );
+ QGCacheIterator( const QGCacheIterator & );
+ ~QGCacheIterator();
+ QGCacheIterator &operator=( const QGCacheIterator & );
+
+ uint count() const;
+ bool atFirst() const;
+ bool atLast() const;
+ QCollection::Item toFirst();
+ QCollection::Item toLast();
+
+ QCollection::Item get() const;
+ QString getKeyString() const;
+ const char *getKeyAscii() const;
+ long getKeyInt() const;
+
+ QCollection::Item operator()();
+ QCollection::Item operator++();
+ QCollection::Item operator+=( uint );
+ QCollection::Item operator--();
+ QCollection::Item operator-=( uint );
+
+protected:
+ QCListIt *it; // iterator on cache list
+};
+
+
+#endif // QGCACHE_H