⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 q3valuelist.h

📁 奇趣公司比较新的qt/emd版本
💻 H
字号:
/******************************************************************************** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.**** This file is part of the Qt3Support module of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://trolltech.com/products/qt/licenses/licensing/opensource/**** If you are unsure which license is appropriate for your use, please** review the following information:** http://trolltech.com/products/qt/licenses/licensing/licensingoverview** or contact the sales department at sales@trolltech.com.**** In addition, as a special exception, Trolltech gives you certain** additional rights. These rights are described in the Trolltech GPL** Exception version 1.0, which can be found at** http://www.trolltech.com/products/qt/gplexception/ and in the file** GPL_EXCEPTION.txt in this package.**** In addition, as a special exception, Trolltech, as the sole copyright** holder for Qt Designer, grants users of the Qt/Eclipse Integration** plug-in the right for the Qt/Eclipse Integration to link to** functionality provided by Qt Designer and its related libraries.**** Trolltech reserves all rights not expressly granted herein.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#ifndef Q3VALUELIST_H#define Q3VALUELIST_H#include <QtCore/qalgorithms.h>#include <QtCore/qdatastream.h>#include <QtCore/qlinkedlist.h>#include <QtCore/qlist.h>#ifndef QT_NO_STL#include <iterator>#include <list>#endifQT_BEGIN_HEADERQT_MODULE(Qt3SupportLight)template <typename T>class Q3ValueListIterator : public QLinkedList<T>::iterator{public:    inline Q3ValueListIterator() :        QLinkedList<T>::iterator() {}    inline Q3ValueListIterator(const Q3ValueListIterator &o) :        QLinkedList<T>::iterator(o) {}    inline Q3ValueListIterator(const typename QLinkedList<T>::iterator &o) :        QLinkedList<T>::iterator(o) {}};template <typename T>class Q3ValueListConstIterator : public QLinkedList<T>::const_iterator{public:    inline Q3ValueListConstIterator() {}    inline Q3ValueListConstIterator(const Q3ValueListConstIterator &o) :        QLinkedList<T>::const_iterator(o) {}    inline Q3ValueListConstIterator(const typename QLinkedList<T>::const_iterator &o) :        QLinkedList<T>::const_iterator(o) {}    inline Q3ValueListConstIterator(const typename QLinkedList<T>::iterator &o) :        QLinkedList<T>::const_iterator(o) {}};template <typename T>class Q3ValueList : public QLinkedList<T>{public:    typedef T value_type;    typedef value_type* pointer;    typedef const value_type* const_pointer;    typedef value_type& reference;    typedef const value_type& const_reference;#ifndef QT_NO_STL    typedef ptrdiff_t  difference_type;#else    typedef int difference_type;#endif    typedef Q3ValueListIterator<T> Iterator;    typedef Q3ValueListConstIterator<T> ConstIterator;    typedef Q3ValueListIterator<T> iterator;    typedef Q3ValueListConstIterator<T> const_iterator;    typedef typename QLinkedList<T>::size_type size_type;    /**     * API     */    Q3ValueList() {}    Q3ValueList(const Q3ValueList<T>& l) : QLinkedList<T>(l) {}    Q3ValueList(const QLinkedList<T>& l) : QLinkedList<T>(l) {}    Q3ValueList(const QList<T>& l)    {        for (int i = 0; i < l.size(); ++i) append(l.at(i));    }#ifndef QT_NO_STL    Q3ValueList(const std::list<T>& l)    {        qCopy(l.begin(), l.end(), std::back_inserter(*this));    }#endif    ~Q3ValueList() {}    Q3ValueList<T>& operator= (const Q3ValueList<T>& l)    {        QLinkedList<T>::operator=(l);        return *this;    }    Q3ValueList<T>& operator= (const QList<T>& l)    {        this->clear();        for (int i = 0; i < l.size(); ++i) append(l.at(i));        return *this;    }#ifndef QT_NO_STL    Q3ValueList<T>& operator= (const std::list<T>& l)    {        this->detach();        qCopy(l.begin(), l.end(), std::back_inserter(*this));        return *this;    }    bool operator== (const std::list<T>& l) const    {        if (this->size() != l.size())            return false;        typename Q3ValueList<T>::const_iterator it2 = this->begin();#if !defined(Q_CC_MIPS)        typename#endif            std::list<T>::const_iterator it = l.begin();        for (; it2 != this->end(); ++it2, ++it)        if (!((*it2) == (*it)))            return false;        return true;    }#endif    bool operator== (const Q3ValueList<T>& l) const { return QLinkedList<T>::operator==(l); }    bool operator!= (const Q3ValueList<T>& l) const { return QLinkedList<T>::operator!=(l); }    operator QList<T>() const {        QList<T> list;        for (typename Q3ValueList<T>::const_iterator it = QLinkedList<T>::constBegin();             it != QLinkedList<T>::constEnd(); ++it)            list.append(*it);        return list;    }    inline Q3ValueList<T>& operator<< (const T& x) { append(x); return *this; }    void insert(typename Q3ValueList<T>::Iterator pos,                 typename Q3ValueList<T>::size_type n,                 const T& x);    typename Q3ValueList<T>::Iterator insert(typename Q3ValueList<T>::Iterator pos,                                             const T& x)        { return QLinkedList<T>::insert(pos, x); }    typename Q3ValueList<T>::Iterator remove(typename Q3ValueList<T>::Iterator pos)        { return QLinkedList<T>::erase(pos); }    int remove(const T &value)        { return QLinkedList<T>::removeAll(value); }    inline Q3ValueList<T> operator+ (const Q3ValueList<T>& l) const        { return static_cast<Q3ValueList<T> >(QLinkedList<T>::operator+(l)); }    inline Q3ValueList<T>& operator+= (const Q3ValueList<T>& l)        { QLinkedList<T>::operator+=(l); return *this; }    typename Q3ValueList<T>::Iterator fromLast()        { return (this->isEmpty() ? this->end() : --this->end()); }    typename Q3ValueList<T>::ConstIterator fromLast() const        { return (this->isEmpty() ? this->end() : --this->end()); }    typename Q3ValueList<T>::Iterator append(const T& x)        { QLinkedList<T>::append(x); return --this->end(); }    typename Q3ValueList<T>::Iterator prepend(const T& x)        { QLinkedList<T>::prepend(x); return this->begin(); }    typename Q3ValueList<T>::Iterator at(typename Q3ValueList<T>::size_type i)        { Q_ASSERT(i < this->size()); this->detach(); return this->begin()+i; }    typename Q3ValueList<T>::ConstIterator at(typename Q3ValueList<T>::size_type i) const        { Q_ASSERT(i < this->size()); return this->begin()+i; }    typename Q3ValueList<T>::size_type contains(const T& x) const        { return QLinkedList<T>::count(x); }    Q3ValueList<T>& operator+= (const T& x) { append(x); return *this; }    T& operator[] (typename Q3ValueList<T>::size_type i) { return *at(i); }    const T& operator[] (typename Q3ValueList<T>::size_type i) const { return *at(i); }};template <typename T>Q_OUTOFLINE_TEMPLATE void Q3ValueList<T>::insert(typename Q3ValueList<T>::Iterator pos,                           typename Q3ValueList<T>::size_type n, const T& x){    for (; n > 0; --n)        this->insert(pos, x);}#ifndef QT_NO_DATASTREAMtemplate <typename T>Q_OUTOFLINE_TEMPLATE QDataStream& operator>>(QDataStream& s, Q3ValueList<T>& l){    return operator>>(s, static_cast<QLinkedList<T> &>(l));}template <typename T>Q_OUTOFLINE_TEMPLATE QDataStream& operator<<(QDataStream& s, const Q3ValueList<T>& l){    return operator<<(s, static_cast<const QLinkedList<T> &>(l));}#endifQT_END_HEADER#endif // Q3VALUELIST_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -