#ifndef QLIST_H
#define QLIST_H
#include <QtCore/qiterator.h>
#ifndef QATOMIC_H
#define QATOMIC_H
#if defined(QT_MOC) || defined(QT_BUILD_QMAKE) || defined(QT_RCC) || defined(QT_UIC)
#else
#include <QtCore/qatomic_arch.h>
#endif
#include <QtCore/qglobal.h>
#ifndef Q_SPECIALIZED_QATOMIC
struct QBasicAtomic{
public: int volatile atomic;
public: inline void init(int x = 0);
public: inline bool ref();
public: inline bool deref();
public: inline bool operator ==(int x) const
public: inline bool operator !=(int x) const
public: inline bool operator !() const
public: inline operator int () const
public: inline struct QBasicAtomic& operator =(int x);
public: inline bool testAndSet(int expected, int newval);
public: inline bool testAndSetAcquire(int expected, int newval);
public: inline bool testAndSetRelease(int expected, int newval);
public: inline int exchange(int newval);
};
template < typename T > struct QBasicAtomicPointer{
public: T volatile * pointer;
public: inline void init(T* t = 0);
public: inline bool operator ==(T* t) const
public: inline bool operator !=(T* t) const
public: inline bool operator !() const
public: inline operator T* () const
public: inline T* operator ->() const
public: inline struct QBasicAtomicPointer& operator =(T* t);
public: inline bool testAndSet(T* expected, T* newval);
public: inline T* exchange(T* newval);
};
#define Q_ATOMIC_INIT(a) { (a) }
#endif // Q_SPECIALIZED_QATOMIC
inline struct QListData::Data* qAtomicSetPtr(struct QListData::Data* volatile * ptr, struct QListData::Data* newval);
template < typename T > inline T qAtomicSetPtr(T volatile * ptr, T newval);
class QAtomic: public QBasicAtomic{
public: inline QAtomic(int x = 0);
public: inline QAtomic(class QAtomic const & copy);
public: inline class QAtomic& operator =(int x);
public: inline class QAtomic& operator =(class QAtomic const & copy);
};
template < typename T > class QAtomicPointer: public QBasicAtomicPointer < T >{
public: inline QAtomicPointer(T* t = 0);
public: inline QAtomicPointer(class QAtomicPointer const & copy);
public: inline class QAtomicPointer& operator =(T* t);
public: inline class QAtomicPointer& operator =(class QAtomicPointer const & copy);
};
template < typename T > inline void qAtomicAssign(T* & d, T* x);
template < typename T > inline void qAtomicAssign(class QBasicAtomicPointer < T >& d, T* x);
template < typename T > inline void qAtomicAssign(class QBasicAtomicPointer < T >& d, class QBasicAtomicPointer < T > const & x);
template < typename T > inline void qAtomicDetach(T* & d);
template < typename T > inline void qAtomicDetach(class QBasicAtomicPointer < T >& d);
#endif // QATOMIC_H
#include <QtCore/qalgorithms.h>
#ifndef QT_NO_STL
#include <iterator>
#include <list>
#endif
#include <new>
typedef enum QtValidLicenseForCoreModule QtCoreModule;
template < typename T > struct QVector;
template < typename T > struct QSet;
struct QListData{
public: struct Data{
public: struct QBasicAtomic ref;
public: int alloc;
public: int begin;
public: int end;
public: unsigned int sharable:1;
public: void* array[1];
};
public: enum /*anonymous*/{
DataHeaderSize = 24,
};
public: struct QListData::Data* detach();
public: void realloc(int alloc);
public: static struct QListData::Data shared_null;
public: struct QListData::Data* d;
public: void* * erase(void* * xi);
public: void* * append();
public: void* * append(struct QListData const & l);
public: void* * prepend();
public: void* * insert(int i);
public: void remove(int i);
public: void remove(int i, int n);
public: void move(int from, int to);
public: inline int size() const
public: inline bool isEmpty() const
public: inline void* * at(int i) const
public: inline void* * begin() const
public: inline void* * end() const
};
template < typename T > class QList{
private: struct Node{
public: void* v;
#if defined(Q_CC_BOR)
#else
public: inline T& t();
#endif
};
private: union /*anonymous*/{
struct QListData p;
struct QListData::Data* d;
};
public: inline QList();
public: inline QList(class QList const & l);
public: inline bool operator !=(class QList const & l) const
public: inline int size() const
public: inline void detach();
public: inline bool isDetached() const
public: inline void setSharable(bool sharable);
public: inline bool isEmpty() const
public: class iterator{
public: struct QList::Node* i;
public: typedef struct std::random_access_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 iterator();
public: inline iterator(struct QList::Node* n);
public: inline iterator(class QList::iterator const & o);
public: inline T& operator *() const
public: inline T* operator ->() const
public: inline T& operator [](int j) const
public: inline bool operator ==(class QList::iterator const & o) const
public: inline bool operator !=(class QList::iterator const & o) const
public: inline bool operator <(class QList::iterator const & other) const
public: inline bool operator <=(class QList::iterator const & other) const
public: inline bool operator >(class QList::iterator const & other) const
public: inline bool operator >=(class QList::iterator const & other) const
#ifndef QT_STRICT_ITERATORS
public: inline bool operator ==(class QList::const_iterator const & o) const
public: inline bool operator !=(class QList::const_iterator const & o) const
public: inline bool operator <(class QList::const_iterator const & other) const
public: inline bool operator <=(class QList::const_iterator const & other) const
public: inline bool operator >(class QList::const_iterator const & other) const
public: inline bool operator >=(class QList::const_iterator const & other) const
#endif
public: inline class QList::iterator& operator ++();
public: inline class QList::iterator operator ++(int);
public: inline class QList::iterator& operator --();
public: inline class QList::iterator operator --(int);
public: inline class QList::iterator& operator +=(int j);
public: inline class QList::iterator& operator -=(int j);
public: inline class QList::iterator operator +(int j) const
public: inline class QList::iterator operator -(int j) const
public: inline int operator -(class QList::iterator j) const
};
public: class const_iterator{
public: struct QList::Node* i;
public: typedef struct std::random_access_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 const_iterator();
public: inline const_iterator(struct QList::Node* n);
public: inline const_iterator(class QList::const_iterator const & o);
#ifdef QT_STRICT_ITERATORS
#else
public: inline const_iterator(class QList::iterator const & o);
#endif
public: inline T& operator *() const
public: inline T const * operator ->() const
public: inline T& operator [](int j) const
public: inline bool operator ==(class QList::const_iterator const & o) const
public: inline bool operator !=(class QList::const_iterator const & o) const
public: inline bool operator <(class QList::const_iterator const & other) const
public: inline bool operator <=(class QList::const_iterator const & other) const
public: inline bool operator >(class QList::const_iterator const & other) const
public: inline bool operator >=(class QList::const_iterator const & other) const
public: inline class QList::const_iterator& operator ++();
public: inline class QList::const_iterator operator ++(int);
public: inline class QList::const_iterator& operator --();
public: inline class QList::const_iterator operator --(int);
public: inline class QList::const_iterator& operator +=(int j);
public: inline class QList::const_iterator& operator -=(int j);
public: inline class QList::const_iterator operator +(int j) const
public: inline class QList::const_iterator operator -(int j) const
public: inline int operator -(class QList::const_iterator j) const
};
public: inline class QList::iterator begin();
public: inline class QList::const_iterator begin() const
public: inline class QList::const_iterator constBegin() const
public: inline class QList::iterator end();
public: inline class QList::const_iterator end() const
public: inline class QList::const_iterator constEnd() const
public: typedef class QList::iterator Iterator;
public: typedef class QList::const_iterator ConstIterator;
public: inline int count() const
public: inline T& first();
public: inline T& first() const
public: inline T& last();
public: inline T& last() const
public: inline void removeFirst();
public: inline void removeLast();
public: inline void push_back(T& t);
public: inline void push_front(T& t);
public: inline T& front();
public: inline T& front() const
public: inline T& back();
public: inline T& back() const
public: inline void pop_front();
public: inline void pop_back();
public: inline bool empty() const
public: typedef int size_type;
public: typedef T value_type;
public: typedef T* pointer;
public: typedef T const * const_pointer;
public: typedef T& reference;
public: typedef T& const_reference;
public: typedef ptrdiff_t difference_type;
public: inline class QList operator +(class QList const & l) const
public: inline class QList& operator +=(T& t);
public: inline class QList& operator <<(T& t);
public: inline class QList& operator <<(class QList const & l);
public: class QVector < T > toVector() const
public: class QSet < T > toSet() const
public: static class QList fromVector(class QVector < T > const & vector);
public: static class QList fromSet(class QSet < T > const & set);
#ifndef QT_NO_STL
public: static inline class QList fromStdList(class std::list < T, class std::allocator < _CharT > > const & list);
public: inline class std::list < T, class std::allocator < _CharT > > toStdList() const
#endif
private: inline void node_construct(struct QList::Node* n, T const & t);
private: inline void node_destruct(struct QList::Node* n);
private: inline void node_copy(struct QList::Node* from, struct QList::Node* to, struct QList::Node* src);
private: inline void node_destruct(struct QList::Node* from, struct QList::Node* to);
public: inline class QList < T >& operator =(class QList const & l);
public: inline typename QList::iterator insert(class QList::iterator before, T const & t);
public: inline typename QList::iterator erase(class QList::iterator it);
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 removeAt(int i);
public: inline T takeAt(int i);
public: inline T takeFirst();
public: inline T takeLast();
public: void append(T const & t);
public: inline void prepend(T const & t);
public: inline void insert(int i, T const & t);
public: inline void replace(int i, T const & t);
public: inline void swap(int i, int j);
public: inline void move(int from, int to);
public: class QList < T > mid(int pos, int length) const
public: T value(int i) const
public: T value(int i, T const & defaultValue) const
private: void detach_helper();
public: ~QList();
public: bool operator ==(class QList const & l) const
private: void free(struct QListData::Data* data);
public: void clear();
public: int removeAll(T const & _t);
public: typename QList::iterator erase(typename QList::iterator afirst, typename QList::iterator alast);
public: class QList < T >& operator +=(class QList const & l);
public: int indexOf(T const & t, int from = 0) const
public: int lastIndexOf(T const & t, int from) const
public: class QBool contains(T const & t) const
public: int count(T const & t) const
friend class iterator;
friend class const_iterator;
};
template < typename T > class QListIterator{
private: class QList < T > c;
public: inline QListIterator(class QList < T > const & container);
private: typename QList < T >::const_iterator i;
public: inline class QListIterator& operator =(class QList < T > const & container);
public: inline void toFront();
private: typedef typename QList < 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 QMutableListIterator{
private: QList < T >* c;
private: inline bool item_exists() const
private: typename QList < T >::iterator i;
public: inline QMutableListIterator(class QList < T >& container);
private: typename QList < T >::iterator n;
public: inline ~QMutableListIterator();
public: inline class QMutableListIterator& operator =(class QList < T >& container);
private: typedef typename QList < T >::iterator iterator;
public: inline void toFront();
private: typedef typename QList < 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 // QLIST_H