Audacity 3.2.0
Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
WaveTrack::AllClipsIterator Class Reference

#include <WaveTrack.h>

Inheritance diagram for WaveTrack::AllClipsIterator:
[legend]
Collaboration diagram for WaveTrack::AllClipsIterator:
[legend]

Public Member Functions

 AllClipsIterator ()
 
 AllClipsIterator (WaveTrack &track)
 
WaveClipoperator* () const
 
AllClipsIteratoroperator++ ()
 

Private Types

using Iterator = WaveClipHolders::iterator
 
using Pair = std::pair< Iterator, Iterator >
 
using Stack = std::vector< Pair >
 

Private Member Functions

void push (WaveClipHolders &clips)
 

Private Attributes

Stack mStack
 

Friends

bool operator== (const AllClipsIterator &a, const AllClipsIterator &b)
 
bool operator!= (const AllClipsIterator &a, const AllClipsIterator &b)
 

Additional Inherited Members

- Public Types inherited from ValueIterator< WaveClip * >
using iterator_category = std::forward_iterator_tag
 
using value_type = WaveClip *
 
using difference_type = ptrdiff_t
 
using pointer = void
 
using reference = const WaveClip *
 

Detailed Description

Definition at line 718 of file WaveTrack.h.

Member Typedef Documentation

◆ Iterator

using WaveTrack::AllClipsIterator::Iterator = WaveClipHolders::iterator
private

Definition at line 754 of file WaveTrack.h.

◆ Pair

using WaveTrack::AllClipsIterator::Pair = std::pair< Iterator, Iterator >
private

Definition at line 755 of file WaveTrack.h.

◆ Stack

using WaveTrack::AllClipsIterator::Stack = std::vector< Pair >
private

Definition at line 756 of file WaveTrack.h.

Constructor & Destructor Documentation

◆ AllClipsIterator() [1/2]

WaveTrack::AllClipsIterator::AllClipsIterator ( )
inline

Definition at line 723 of file WaveTrack.h.

723{}

◆ AllClipsIterator() [2/2]

WaveTrack::AllClipsIterator::AllClipsIterator ( WaveTrack track)
inlineexplicit

Definition at line 726 of file WaveTrack.h.

727 {
728 push( track.mClips );
729 }
void push(WaveClipHolders &clips)
Definition: WaveTrack.cpp:4480
WaveClipHolders mClips
Definition: WaveTrack.h:1124

References WaveTrack::mClips.

Member Function Documentation

◆ operator*()

WaveClip * WaveTrack::AllClipsIterator::operator* ( ) const
inline

Definition at line 731 of file WaveTrack.h.

732 {
733 if (mStack.empty())
734 return nullptr;
735 else
736 return mStack.back().first->get();
737 }

◆ operator++()

auto WaveTrack::AllClipsIterator::operator++ ( )

Definition at line 4464 of file WaveTrack.cpp.

4465{
4466 // The unspecified sequence is a post-order, but there is no
4467 // promise whether sister nodes are ordered in time.
4468 if ( !mStack.empty() ) {
4469 auto &pair = mStack.back();
4470 if ( ++pair.first == pair.second ) {
4471 mStack.pop_back();
4472 }
4473 else
4474 push( (*pair.first)->GetCutLines() );
4475 }
4476
4477 return *this;
4478}

◆ push()

void WaveTrack::AllClipsIterator::push ( WaveClipHolders clips)
private

Definition at line 4480 of file WaveTrack.cpp.

4481{
4482 auto pClips = &clips;
4483 while (!pClips->empty()) {
4484 auto first = pClips->begin();
4485 mStack.push_back( Pair( first, pClips->end() ) );
4486 pClips = &(*first)->GetCutLines();
4487 }
4488}
std::pair< Iterator, Iterator > Pair
Definition: WaveTrack.h:755

References mStack.

Friends And Related Function Documentation

◆ operator!=

bool operator!= ( const AllClipsIterator a,
const AllClipsIterator b 
)
friend

Definition at line 746 of file WaveTrack.h.

748 { return !( a == b ); }

◆ operator==

bool operator== ( const AllClipsIterator a,
const AllClipsIterator b 
)
friend

Definition at line 742 of file WaveTrack.h.

744 { return a.mStack.empty() == b.mStack.empty(); }

Member Data Documentation

◆ mStack

Stack WaveTrack::AllClipsIterator::mStack
private

Definition at line 758 of file WaveTrack.h.

Referenced by push().


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