#ifndef QVECTOR_H
#define QVECTOR_H 
#include <QtCore/qiterator.h>
#include <QtCore/qatomic.h>
#include <QtCore/qalgorithms.h>
#include <QtCore/qlist.h>
#ifndef QT_NO_STL
#include <iterator>
#include <vector>
#endif
#include <stdlib.h>
#include <string.h>
typedef enum QtValidLicenseForCoreModule QtCoreModule;
struct QVectorData{
   public: struct QBasicAtomic ref;
   public: int alloc;
   public: int size;
   public: unsigned int sharable:1;
   public: static struct QVectorData shared_null;
   public: static struct QVectorData* malloc(int sizeofTypedData, int size, int sizeofT, struct QVectorData* init);
   public: static int grow(int sizeofTypedData, int size, int sizeofT, bool excessive);
};
template < typename T > struct QVectorTypedData{
   public: struct QBasicAtomic ref;
   public: int alloc;
   public: int size;
   public: unsigned int sharable;
   public: T array[1];
};
template < typename T > class QVector{
   private: typedef class QVectorTypedData < T > Data;
   private: union /*anonymous*/{
      struct QVectorData* p;
      class QVectorTypedData < T >* d;
   };
   public: inline QVector();
   public: inline QVector(class QVector const & v);
   public: inline ~QVector();
   public: inline bool operator !=(class QVector const & v) 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: inline T* data();
   public: inline T const * data() const
   public: inline T const * constData() const
#ifdef QT_STRICT_ITERATORS
#else
   public: typedef T* iterator;
   public: typedef T const * const_iterator;
#endif
   public: inline T* begin();
   public: inline T const * begin() const
   public: inline T const * constBegin() const
   public: inline T* end();
   public: inline T const * end() const
   public: inline T const * constEnd() const
   public: inline T* insert(T* before, T& x);
   public: inline T* erase(T* pos);
   public: inline int count() const
   public: inline T& first();
   public: inline T& first() const
   public: inline T& last();
   public: inline T& last() const
   public: typedef T value_type;
   public: typedef T* pointer;
   public: typedef T const * const_pointer;
   public: typedef T& reference;
   public: typedef T& const_reference;
#ifndef QT_NO_STL
   public: typedef ptrdiff_t difference_type;
#else
#endif
   public: typedef T* Iterator;
   public: typedef T const * ConstIterator;
   public: typedef int size_type;
   public: inline void push_back(T& t);
   public: inline void push_front(T& t);
   public: inline void pop_back();
   public: inline void pop_front();
   public: inline bool empty() const
   public: inline T& front();
   public: inline T& front() const
   public: inline T& back();
   public: inline T& back() const
   public: inline class QVector operator +(class QVector const & l) const
   public: inline class QVector& operator +=(T& t);
   public: inline class QVector& operator <<(T& t);
   public: inline class QVector& operator <<(class QVector const & l);
#ifndef QT_NO_STL
   public: static inline class QVector fromStdVector(class std::vector < T, class std::allocator < _CharT > > const & vector);
   public: inline class std::vector < T, class std::allocator < _CharT > > toStdVector() const
#endif
   private: void detach_helper();
   public: void reserve(int asize);
   public: void resize(int asize);
   public: inline void clear();
   public: inline T const & at(int i) const
   public: inline T const & operator [](int i) const
   public: inline T& operator [](int i);
   public: inline void insert(int i, T const & t);
   public: inline void insert(int i, int n, T const & t);
   public: inline void remove(int i, int n);
   public: inline void remove(int i);
   public: inline void prepend(T const & t);
   public: inline void replace(int i, T const & t);
   public: class QVector < T >& operator =(class QVector const & v);
   private: inline struct QVectorData* malloc(int aalloc);
   public: explicit QVector(int asize);
   public: QVector(int asize, T const & t);
   private: void free(class QVectorTypedData < T >* x);
   private: void realloc(int asize, int aalloc);
   public: T value(int i) const
   public: T value(int i, T const & defaultValue) const
   public: void append(T const & t);
   public: typename QVector::iterator insert(T* before, int n, T const & t);
   public: typename QVector::iterator erase(T* abegin, T* aend);
   public: bool operator ==(class QVector const & v) const
   public: class QVector < T >& fill(T const & from, int asize);
   public: class QVector < T >& operator +=(class QVector const & l);
   public: int indexOf(T const & t, int from = 0) const
   public: int lastIndexOf(T const & t, int from) const
   public: bool contains(T const & t) const
   public: int count(T const & t) const
   public: class QVector < T > mid(int pos, int length) const
   public: class QList < T > toList() const
   public: static class QVector < T > fromList(class QList < T > const & list);
};
template < typename T > class QVectorIterator{
   private: class QVector < T > c;
   public: inline QVectorIterator(class QVector < T > const & container);
   private: typename QVector < T >::const_iterator i;
   public: inline class QVectorIterator& operator =(class QVector < T > const & container);
   public: inline void toFront();
   private: typedef typename QVector < T >::const_iterator const_iterator;
   public: inline void toBack();
   public: inline bool hasNext() const
   public: inline T const & next();
   public: inline T const & peekNext() const
   public: inline bool hasPrevious() const
   public: inline T const & previous();
   public: inline T const & peekPrevious() const
   public: inline bool findNext(T const & t);
   public: inline bool findPrevious(T const & t);
};
template < typename T > class QMutableVectorIterator{
   private: QVector < T >* c;
   private: inline bool item_exists() const
   private: typename QVector < T >::iterator i;
   public: inline QMutableVectorIterator(class QVector < T >& container);
   private: typename QVector < T >::iterator n;
   public: inline ~QMutableVectorIterator();
   public: inline class QMutableVectorIterator& operator =(class QVector < T >& container);
   private: typedef typename QVector < T >::iterator iterator;
   public: inline void toFront();
   private: typedef typename QVector < T >::const_iterator const_iterator;
   public: inline void toBack();
   public: inline bool hasNext() const
   public: inline T& next();
   public: inline T& peekNext() const
   public: inline bool hasPrevious() const
   public: inline T& previous();
   public: inline T& peekPrevious() const
   public: inline void remove();
   public: inline void setValue(T const & t) const
   public: inline T& value();
   public: inline T const & value() const
   public: inline void insert(T const & t);
   public: inline bool findNext(T const & t);
   public: inline bool findPrevious(T const & t);
};
#endif // QVECTOR_H