Krita Source Code Documentation
Loading...
Searching...
No Matches
KisVersionedStorageIterator Class Reference

#include <KisResourceStorage.h>

+ Inheritance diagram for KisVersionedStorageIterator:

Public Member Functions

int guessedVersion () const override
 
bool hasNext () const override
 
 KisVersionedStorageIterator (const QVector< VersionedResourceEntry > &entries, KisStoragePlugin *_q)
 
QDateTime lastModified () const override
 
void next () override
 The iterator is only valid if next() has been called at least once.
 
KoResourceSP resourceImpl () const override
 This only loads the resource when called.
 
QString type () const override
 
QString url () const override
 
QSharedPointer< KisResourceStorage::ResourceIteratorversions () const override
 
- Public Member Functions inherited from KisResourceStorage::ResourceIterator
KoResourceSP resource () const
 
virtual ~ResourceIterator ()
 

Protected Member Functions

 KisVersionedStorageIterator (const QVector< VersionedResourceEntry > &entries, QVector< VersionedResourceEntry >::const_iterator begin, QVector< VersionedResourceEntry >::const_iterator end, KisStoragePlugin *_q)
 

Protected Attributes

QVector< VersionedResourceEntry >::const_iterator m_begin
 
QVector< VersionedResourceEntry >::const_iterator m_chunkStart
 
QVector< VersionedResourceEntry >::const_iterator m_end
 
const QVector< VersionedResourceEntrym_entries
 
bool m_isStarted = false
 
QVector< VersionedResourceEntry >::const_iterator m_it
 
KisStoragePluginq = 0
 

Detailed Description

Definition at line 355 of file KisResourceStorage.h.

Constructor & Destructor Documentation

◆ KisVersionedStorageIterator() [1/2]

KisVersionedStorageIterator::KisVersionedStorageIterator ( const QVector< VersionedResourceEntry > & entries,
KisStoragePlugin * _q )

Definition at line 579 of file KisResourceStorage.cpp.

580 : q(_q)
581 , m_entries(entries)
582 , m_begin(m_entries.constBegin())
583 , m_end(m_entries.constEnd())
584
585{
586 // ENTER_FUNCTION() << ppVar(std::distance(m_begin, m_end));
587 // for (auto it = m_begin; it != m_end; ++it) {
588 // qDebug() << ppVar(it->filename) << ppVar(it->guessedVersion);
589 // }
590}
const QVector< VersionedResourceEntry > m_entries
QVector< VersionedResourceEntry >::const_iterator m_begin
QVector< VersionedResourceEntry >::const_iterator m_end

◆ KisVersionedStorageIterator() [2/2]

KisVersionedStorageIterator::KisVersionedStorageIterator ( const QVector< VersionedResourceEntry > & entries,
QVector< VersionedResourceEntry >::const_iterator begin,
QVector< VersionedResourceEntry >::const_iterator end,
KisStoragePlugin * _q )
protected

Definition at line 592 of file KisResourceStorage.cpp.

596 : q(_q)
597 , m_entries(entries)
598 , m_begin(begin)
599 , m_end(end)
600{
601// ENTER_FUNCTION() << ppVar(std::distance(m_begin, m_end));
602// for (auto it = m_begin; it != m_end; ++it) {
603// qDebug() << ppVar(it->filename) << ppVar(it->guessedVersion);
604// }
605}

Member Function Documentation

◆ guessedVersion()

int KisVersionedStorageIterator::guessedVersion ( ) const
overridevirtual

Reimplemented from KisResourceStorage::ResourceIterator.

Definition at line 650 of file KisResourceStorage.cpp.

651{
652 return m_it->guessedVersion;
653}
QVector< VersionedResourceEntry >::const_iterator m_it

References m_it.

◆ hasNext()

bool KisVersionedStorageIterator::hasNext ( ) const
overridevirtual

Implements KisResourceStorage::ResourceIterator.

Definition at line 607 of file KisResourceStorage.cpp.

608{
609 return (!m_isStarted && m_begin != m_end) ||
610 (m_isStarted && std::next(m_it) != m_end);
611}

References m_begin, m_end, m_isStarted, and m_it.

◆ lastModified()

QDateTime KisVersionedStorageIterator::lastModified ( ) const
overridevirtual

Implements KisResourceStorage::ResourceIterator.

Definition at line 640 of file KisResourceStorage.cpp.

641{
642 return m_it->lastModified;
643}

References m_it.

◆ next()

void KisVersionedStorageIterator::next ( )
overridevirtual

The iterator is only valid if next() has been called at least once.

Implements KisResourceStorage::ResourceIterator.

Definition at line 613 of file KisResourceStorage.cpp.

614{
615
616 if (!m_isStarted) {
617 m_isStarted = true;
618 m_it = m_begin;
619 } else {
620 ++m_it;
621 }
622
624
625 auto nextChunk = std::upper_bound(m_it, m_end, *m_it, VersionedResourceEntry::KeyLess());
627 m_it = std::prev(nextChunk);
628}
QVector< VersionedResourceEntry >::const_iterator m_chunkStart
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128

References KIS_SAFE_ASSERT_RECOVER_RETURN, m_begin, m_chunkStart, m_end, m_isStarted, and m_it.

◆ resourceImpl()

KoResourceSP KisVersionedStorageIterator::resourceImpl ( ) const
overridevirtual

This only loads the resource when called.

Implements KisResourceStorage::ResourceIterator.

Definition at line 645 of file KisResourceStorage.cpp.

646{
647 return q->resource(url());
648}
virtual KoResourceSP resource(const QString &url)
QString url() const override

References q, KisStoragePlugin::resource(), and url().

◆ type()

QString KisVersionedStorageIterator::type ( ) const
overridevirtual

Implements KisResourceStorage::ResourceIterator.

Definition at line 635 of file KisResourceStorage.cpp.

636{
637 return m_it->resourceType;
638}

References m_it.

◆ url()

QString KisVersionedStorageIterator::url ( ) const
overridevirtual

Implements KisResourceStorage::ResourceIterator.

Definition at line 630 of file KisResourceStorage.cpp.

631{
632 return m_it->resourceType + "/" + m_it->filename;
633}

References m_it.

◆ versions()

QSharedPointer< KisResourceStorage::ResourceIterator > KisVersionedStorageIterator::versions ( ) const
overridevirtual

Reimplemented from KisResourceStorage::ResourceIterator.

Definition at line 655 of file KisResourceStorage.cpp.

656{
657 struct VersionsIterator : public KisVersionedStorageIterator
658 {
659 VersionsIterator(const QVector<VersionedResourceEntry> &entries,
663 : KisVersionedStorageIterator(entries, begin, end, _q)
664 {
665 }
666
667 void next() override {
668 if (!m_isStarted) {
669 m_isStarted = true;
670 m_it = m_begin;
671 } else {
672 ++m_it;
673 }
674 }
675
677 return toQShared(new VersionsIterator(m_entries, m_it, std::next(m_it), q));
678 }
679 };
680
681 return toQShared(new VersionsIterator(m_entries, m_chunkStart, std::next(m_it), q));
682}
QSharedPointer< T > toQShared(T *ptr)
QAction * next(const QObject *recvr, const char *slot, QObject *parent)

References m_chunkStart, m_entries, m_it, q, and toQShared().

Member Data Documentation

◆ m_begin

QVector<VersionedResourceEntry>::const_iterator KisVersionedStorageIterator::m_begin
protected

Definition at line 382 of file KisResourceStorage.h.

◆ m_chunkStart

QVector<VersionedResourceEntry>::const_iterator KisVersionedStorageIterator::m_chunkStart
protected

Definition at line 381 of file KisResourceStorage.h.

◆ m_end

QVector<VersionedResourceEntry>::const_iterator KisVersionedStorageIterator::m_end
protected

Definition at line 383 of file KisResourceStorage.h.

◆ m_entries

const QVector<VersionedResourceEntry> KisVersionedStorageIterator::m_entries
protected

Definition at line 379 of file KisResourceStorage.h.

◆ m_isStarted

bool KisVersionedStorageIterator::m_isStarted = false
protected

Definition at line 384 of file KisResourceStorage.h.

◆ m_it

QVector<VersionedResourceEntry>::const_iterator KisVersionedStorageIterator::m_it
protected

Definition at line 380 of file KisResourceStorage.h.

◆ q

KisStoragePlugin* KisVersionedStorageIterator::q = 0
protected

Definition at line 378 of file KisResourceStorage.h.


The documentation for this class was generated from the following files: