#include <QtCore/qhash.h>
#ifndef QHASH_H
template < typename Key, typename T > class QHash{
   private: typedef class QHashDummyNode < Key, T > DummyNode;
   private: typedef class QHashNode < Key, T > Node;
   private: union /*anonymous*/{
      struct QHashData* d;
      class QHashNode < Key, T >* e;
   };
   private: static inline class QHashNode < Key, T >* concrete(struct QHashData::Node* node);
   public: inline QHash();
   public: inline QHash(class QHash const & other);
   public: inline ~QHash();
   public: inline bool operator !=(class QHash const & other) const
   public: inline int size() const
   public: inline bool isEmpty() const
   public: inline int capacity() const
   public: inline void squeeze();
   public: inline void detach();
   public: inline bool isDetached() const
   public: inline void setSharable(bool sharable);
   public: class iterator{
      private: struct QHashData::Node* i;
      public: typedef struct std::bidirectional_iterator_tag iterator_category;
      public: typedef ptrdiff_t difference_type;
      public: typedef T value_type;
      public: typedef T* pointer;
      public: typedef T& reference;
      public: inline operator class QHashNode < Key, T >* () const
      public: inline iterator();
      public: explicit inline iterator(void* node);
      public: inline Key const & key() const
      public: inline T& value() const
      public: inline T& operator *() const
      public: inline T* operator ->() const
      public: inline bool operator ==(class QHash::iterator const & o) const
      public: inline bool operator !=(class QHash::iterator const & o) const
      public: inline class QHash::iterator& operator ++();
      public: inline class QHash::iterator operator ++(int);
      public: inline class QHash::iterator& operator --();
      public: inline class QHash::iterator operator --(int);
      public: inline class QHash::iterator operator +(int j) const
      public: inline class QHash::iterator operator -(int j) const
      public: inline class QHash::iterator& operator +=(int j);
      public: inline class QHash::iterator& operator -=(int j);
      public: inline bool operator ==(class QHash::const_iterator const & o) const
      public: inline bool operator !=(class QHash::const_iterator const & o) const
      private: inline operator bool () const
   };
   public: class const_iterator{
      private: struct QHashData::Node* i;
      public: typedef struct std::bidirectional_iterator_tag iterator_category;
      public: typedef ptrdiff_t difference_type;
      public: typedef T value_type;
      public: typedef T const * pointer;
      public: typedef T& reference;
      public: inline operator class QHashNode < Key, T >* () const
      public: inline const_iterator();
      public: explicit inline const_iterator(void* node);
#ifdef QT_STRICT_ITERATORS
#else
      public: inline const_iterator(class QHash::iterator const & o);
#endif
      public: inline Key const & key() const
      public: inline T& value() const
      public: inline T& operator *() const
      public: inline T const * operator ->() const
      public: inline bool operator ==(class QHash::const_iterator const & o) const
      public: inline bool operator !=(class QHash::const_iterator const & o) const
      public: inline class QHash::const_iterator& operator ++();
      public: inline class QHash::const_iterator operator ++(int);
      public: inline class QHash::const_iterator& operator --();
      public: inline class QHash::const_iterator operator --(int);
      public: inline class QHash::const_iterator operator +(int j) const
      public: inline class QHash::const_iterator operator -(int j) const
      public: inline class QHash::const_iterator& operator +=(int j);
      public: inline class QHash::const_iterator& operator -=(int j);
      private: inline operator bool () const
   };
   public: inline class QHash::iterator begin();
   public: inline class QHash::const_iterator begin() const
   public: inline class QHash::const_iterator constBegin() const
   public: inline class QHash::iterator end();
   public: inline class QHash::const_iterator end() const
   public: inline class QHash::const_iterator constEnd() const
   public: typedef class QHash::iterator Iterator;
   public: typedef class QHash::const_iterator ConstIterator;
   public: inline int count() const
   public: typedef T mapped_type;
   public: typedef Key key_type;
   public: typedef ptrdiff_t difference_type;
   public: typedef int size_type;
   public: inline bool empty() const
   private: inline void deleteNode(class QHashNode < Key, T >* node);
   private: static inline void duplicateNode(struct QHashData::Node* node, void* newNode);
   private: inline typename QHash::Node* createNode(uint ah, Key const & akey, T const & avalue, class QHashNode < Key, T >* * anextNode);
   public: inline class QHash < Key, T >& unite(class QHash const & other);
   private: void freeData(struct QHashData* x);
   public: inline void clear();
   private: void detach_helper();
   public: inline class QHash < Key, T >& operator =(class QHash const & other);
   public: inline T const value(Key const & akey) const
   public: inline T const value(Key const & akey, T& adefaultValue) const
   public: class QList < T > uniqueKeys() const
   public: class QList < T > keys() const
   public: class QList < T > keys(T const & avalue) const
   public: Key const key(T const & avalue) const
   public: class QList < T > values() const
   public: class QList < T > values(Key const & akey) const
   public: int count(Key const & akey) const
   public: inline T const operator [](Key const & akey) const
   public: inline T& operator [](Key const & akey);
   public: inline typename QHash::iterator insert(Key const & akey, T const & avalue);
   public: inline typename QHash::iterator insertMulti(Key const & akey, T const & avalue);
   public: int remove(Key const & akey);
   public: T take(Key const & akey);
   public: typename QHash::iterator erase(class QHash::iterator it);
   public: inline void reserve(int asize);
   public: inline typename QHash::const_iterator find(Key const & akey) const
   public: inline typename QHash::const_iterator constFind(Key const & akey) const
   public: inline typename QHash::iterator find(Key const & akey);
   public: inline bool contains(Key const & akey) const
   private: typename QHash::Node* * findNode(Key const & akey, uint* ahp = 0) const
   public: bool operator ==(class QHash const & other) const
   friend class iterator;
   friend class const_iterator;
};
#endif // QHASH_H