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 328 of file WaveTrack.h.

Member Typedef Documentation

◆ Iterator

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

Definition at line 364 of file WaveTrack.h.

◆ Pair

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

Definition at line 365 of file WaveTrack.h.

◆ Stack

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

Definition at line 366 of file WaveTrack.h.

Constructor & Destructor Documentation

◆ AllClipsIterator() [1/2]

WaveTrack::AllClipsIterator::AllClipsIterator ( )
inline

Definition at line 333 of file WaveTrack.h.

333{}

◆ AllClipsIterator() [2/2]

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

Definition at line 336 of file WaveTrack.h.

337 {
338 push( track.mClips );
339 }
void push(WaveClipHolders &clips)
Definition: WaveTrack.cpp:2485
WaveClipHolders mClips
Definition: WaveTrack.h:517

References WaveTrack::mClips.

Member Function Documentation

◆ operator*()

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

Definition at line 341 of file WaveTrack.h.

342 {
343 if (mStack.empty())
344 return nullptr;
345 else
346 return mStack.back().first->get();
347 }

◆ operator++()

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

Definition at line 2469 of file WaveTrack.cpp.

2470{
2471 // The unspecified sequence is a post-order, but there is no
2472 // promise whether sister nodes are ordered in time.
2473 if ( !mStack.empty() ) {
2474 auto &pair = mStack.back();
2475 if ( ++pair.first == pair.second ) {
2476 mStack.pop_back();
2477 }
2478 else
2479 push( (*pair.first)->GetCutLines() );
2480 }
2481
2482 return *this;
2483}

◆ push()

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

Definition at line 2485 of file WaveTrack.cpp.

2486{
2487 auto pClips = &clips;
2488 while (!pClips->empty()) {
2489 auto first = pClips->begin();
2490 mStack.push_back( Pair( first, pClips->end() ) );
2491 pClips = &(*first)->GetCutLines();
2492 }
2493}
std::pair< Iterator, Iterator > Pair
Definition: WaveTrack.h:365

References mStack.

Friends And Related Function Documentation

◆ operator!=

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

Definition at line 356 of file WaveTrack.h.

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

◆ operator==

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

Definition at line 352 of file WaveTrack.h.

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

Member Data Documentation

◆ mStack

Stack WaveTrack::AllClipsIterator::mStack
private

Definition at line 368 of file WaveTrack.h.

Referenced by push().


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