/**************************************************************************** ** ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the QtDeclarative module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** GNU Lesser General Public License Usage ** This file may be used under the terms of the GNU Lesser General Public ** License version 2.1 as published by the Free Software Foundation and ** appearing in the file LICENSE.LGPL included in the packaging of this ** file. Please review the following information to ensure the GNU Lesser ** General Public License version 2.1 requirements will be met: ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights. These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU General ** Public License version 3.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 the GNU General ** Public License version 3.0 requirements will be met: ** http://www.gnu.org/copyleft/gpl.html. ** ** Other Usage ** Alternatively, this file may be used in accordance with the terms and ** conditions contained in a signed written agreement between you and Nokia. ** ** ** ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef QDECLARATIVECHANGESET_P_H #define QDECLARATIVECHANGESET_P_H // // W A R N I N G // ------------- // // This file is not part of the Qt API. It exists purely as an // implementation detail. This header file may change from version to // version without notice, or even be removed. // // We mean it. // #include #include QT_BEGIN_NAMESPACE class Q_AUTOTEST_EXPORT QDeclarativeChangeSet { public: struct Insert { Insert() {} Insert(int start, int end) : start(start), end(end) {} int count() const { return end - start; } int start; int end; }; struct Remove { Remove() {} Remove(int start, int end) : start(start), end(end) {} int count() const { return end - start; } int start; int end; }; struct Move { Move() {} Move(int start, int end, int to) : fstart(start), fend(end), tstart(to), tend(to + end - start) {} int minimum() const { return qMin(fstart, tstart); } int maximum() const { return qMax(fend, tend); } int count() const { return fend - fstart; } union { int start; int fstart; }; union { int end; int fend; }; union { int to; int tstart; }; int tend; }; struct Change { Change() {} Change(int start, int end) : start(start), end(end) {} int count() const { return end - start; } int start; int end; }; const QVector &removes() const { return m_removes; } const QVector &inserts() const { return m_inserts; } const QVector &moves() const { return m_moves; } const QVector &changes() const {return m_changes; } void insertInsert(int start, int end); void insertRemove(int start, int end); void insertMove(int start, int end, int to); void insertChange(int start, int end); void appendInsert(int start, int end) { m_inserts.append(Insert(start, end)); } void appendRemove(int start, int end) { m_removes.append(Remove(start, end)); } void appendMove(int start, int end, int to) { m_moves.append(Move(start, end, to)); } void appendChange(int start, int end) { m_changes.append(Change(start, end)); } void append(const QVector &inserts) { m_inserts += inserts; } void append(const QVector &removes) { m_removes += removes; } void append(const QVector &moves) { m_moves += moves; } void append(const QVector &changes) { m_changes += changes; } void clear() { m_removes.clear(); m_inserts.clear(); m_moves.clear(); m_changes.clear(); } private: QVector m_removes; QVector m_inserts; QVector m_moves; QVector m_changes; }; Q_AUTOTEST_EXPORT QDebug operator <<(QDebug debug, const QDeclarativeChangeSet &change); QT_END_NAMESPACE #endif