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 354 of file KisResourceStorage.h.

Constructor & Destructor Documentation

◆ KisVersionedStorageIterator() [1/2]

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

Definition at line 536 of file KisResourceStorage.cpp.

537 : q(_q)
538 , m_entries(entries)
539 , m_begin(m_entries.constBegin())
540 , m_end(m_entries.constEnd())
541
542{
543 // ENTER_FUNCTION() << ppVar(std::distance(m_begin, m_end));
544 // for (auto it = m_begin; it != m_end; ++it) {
545 // qDebug() << ppVar(it->filename) << ppVar(it->guessedVersion);
546 // }
547}
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 549 of file KisResourceStorage.cpp.

553 : q(_q)
554 , m_entries(entries)
555 , m_begin(begin)
556 , m_end(end)
557{
558// ENTER_FUNCTION() << ppVar(std::distance(m_begin, m_end));
559// for (auto it = m_begin; it != m_end; ++it) {
560// qDebug() << ppVar(it->filename) << ppVar(it->guessedVersion);
561// }
562}

Member Function Documentation

◆ guessedVersion()

int KisVersionedStorageIterator::guessedVersion ( ) const
overridevirtual

Reimplemented from KisResourceStorage::ResourceIterator.

Definition at line 607 of file KisResourceStorage.cpp.

608{
609 return m_it->guessedVersion;
610}
QVector< VersionedResourceEntry >::const_iterator m_it

References m_it.

◆ hasNext()

bool KisVersionedStorageIterator::hasNext ( ) const
overridevirtual

Implements KisResourceStorage::ResourceIterator.

Definition at line 564 of file KisResourceStorage.cpp.

565{
566 return (!m_isStarted && m_begin != m_end) ||
567 (m_isStarted && std::next(m_it) != m_end);
568}

References m_begin, m_end, m_isStarted, and m_it.

◆ lastModified()

QDateTime KisVersionedStorageIterator::lastModified ( ) const
overridevirtual

Implements KisResourceStorage::ResourceIterator.

Definition at line 597 of file KisResourceStorage.cpp.

598{
599 return m_it->lastModified;
600}

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 570 of file KisResourceStorage.cpp.

571{
572
573 if (!m_isStarted) {
574 m_isStarted = true;
575 m_it = m_begin;
576 } else {
577 ++m_it;
578 }
579
581
582 auto nextChunk = std::upper_bound(m_it, m_end, *m_it, VersionedResourceEntry::KeyLess());
584 m_it = std::prev(nextChunk);
585}
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 602 of file KisResourceStorage.cpp.

603{
604 return q->resource(url());
605}
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 592 of file KisResourceStorage.cpp.

593{
594 return m_it->resourceType;
595}

References m_it.

◆ url()

QString KisVersionedStorageIterator::url ( ) const
overridevirtual

Implements KisResourceStorage::ResourceIterator.

Definition at line 587 of file KisResourceStorage.cpp.

588{
589 return m_it->resourceType + "/" + m_it->filename;
590}

References m_it.

◆ versions()

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

Reimplemented from KisResourceStorage::ResourceIterator.

Definition at line 612 of file KisResourceStorage.cpp.

613{
614 struct VersionsIterator : public KisVersionedStorageIterator
615 {
616 VersionsIterator(const QVector<VersionedResourceEntry> &entries,
620 : KisVersionedStorageIterator(entries, begin, end, _q)
621 {
622 }
623
624 void next() override {
625 if (!m_isStarted) {
626 m_isStarted = true;
627 m_it = m_begin;
628 } else {
629 ++m_it;
630 }
631 }
632
634 return toQShared(new VersionsIterator(m_entries, m_it, std::next(m_it), q));
635 }
636 };
637
638 return toQShared(new VersionsIterator(m_entries, m_chunkStart, std::next(m_it), q));
639}
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 381 of file KisResourceStorage.h.

◆ m_chunkStart

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

Definition at line 380 of file KisResourceStorage.h.

◆ m_end

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

Definition at line 382 of file KisResourceStorage.h.

◆ m_entries

const QVector<VersionedResourceEntry> KisVersionedStorageIterator::m_entries
protected

Definition at line 378 of file KisResourceStorage.h.

◆ m_isStarted

bool KisVersionedStorageIterator::m_isStarted = false
protected

Definition at line 383 of file KisResourceStorage.h.

◆ m_it

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

Definition at line 379 of file KisResourceStorage.h.

◆ q

KisStoragePlugin* KisVersionedStorageIterator::q = 0
protected

Definition at line 377 of file KisResourceStorage.h.


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