Bug #: 3830
authoreseidel <eseidel@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 3 Jul 2005 09:38:03 +0000 (09:38 +0000)
committereseidel <eseidel@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 3 Jul 2005 09:38:03 +0000 (09:38 +0000)
Submitted by: eseidel
Reviewed by: mjs
        * ForwardingHeaders/qintdict.h: maps to KWQIntDict.h
        * kwq/KWQIntDict.h: copy of KWQPtrDict.h replacing T * with int.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@9576 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog-2005-08-23
WebCore/ForwardingHeaders/qintdict.h
WebCore/kwq/KWQIntDict.h

index f4f9a497d7487729818a022ffe3a439996a23be2..e1a3432ea113f5eb2f0d10b58c529202d1713b92 100644 (file)
@@ -1,3 +1,10 @@
+2005-07-03  Eric Seidel  <eseidel@apple.com>
+
+        Reviewed by mjs.
+
+        * ForwardingHeaders/qintdict.h: maps to KWQIntDict.h
+        * kwq/KWQIntDict.h: copy of KWQPtrDict.h replacing T * with int.
+
 2005-07-03  Eric Seidel  <eseidel@apple.com>
 
         * kwq/KWQPair.h: added newline, per mjs's request.
index 0bf40f947a45054350b93224ac48be3604734703..3bd66e8a7bc64e0b6374dc68a6b3efab537b5334 100644 (file)
@@ -1,3 +1 @@
-#import <KWQIntDict.h>
-
 #import "KWQIntDict.h"
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2475b2a13d378d021a7eb735b4ce2ae6271fba5e 100644 (file)
@@ -0,0 +1,63 @@
+#ifndef QINTDICT_H_
+#define QINTDICT_H_
+
+#include "KWQDef.h"
+#include "KWQCollection.h"
+
+#include "KWQPtrDictImpl.h"
+
+#include <qptrcollection.h>
+
+template <class T> class QIntDictIterator;
+
+template <class T> class QIntDict : public QPtrCollection{
+public:
+    QIntDict(int size=17) : impl(size, deleteFunc) {}
+    virtual ~QIntDict() { impl.clear(del_item); }
+
+    virtual void clear() { impl.clear(del_item); }
+    virtual uint count() const { return impl.count(); }
+
+    T *take(int key) { return (T *)impl.take((void *)key); }
+    void insert(int key, T *value) { impl.insert((void *)key, value); }
+    bool remove(int key) { return impl.remove((void *)key, del_item); }
+    void replace(int key, T *value) {
+      if (find((void *)key)) remove((void *)key);
+      insert((void *)key, value);
+    }
+    T* find(int key) { return (T*)impl.find((void *)key); }
+
+    bool isEmpty() const { return count() == 0; }
+
+    QIntDict<T> &operator=(const QIntDict<T> &pd) { impl.assign(pd.impl,del_item); QPtrCollection::operator=(pd); return *this; }
+    T *operator[](int key) const { return (T *)impl.find((void *)key); } 
+
+ private:
+    static void deleteFunc(void *item) { delete (T *)item; }
+
+    KWQPtrDictImpl impl;
+    
+    friend class QIntDictIterator<T>;
+};
+
+template <class T> class QIntDictIterator {
+public:
+    QIntDictIterator(const QIntDict<T> &pd) : impl(pd.impl) { }
+    uint count() { return impl.count(); }
+    T *current() const { return (T *)impl.current(); }
+    int currentKey() const { return (int)impl.currentKey(); }
+
+    T* toFirst() { return (T*)(impl.toFirst()); }
+
+    T *operator++() { return (T *)++impl; }
+
+private:
+    KWQPtrDictIteratorImpl impl;
+
+    QIntDictIterator(const QIntDictIterator &);
+    QIntDictIterator &operator=(const QIntDictIterator &);
+};
+
+
+#endif
+