6#include "definitions_cxx.hpp"
13#include "model/clip/clip.h"
14#include "model/clip/clip_array.h"
15#include "model/song/song.h"
20class ClipIteratorBase {
22 [[gnu::noinline]] ClipIteratorBase(
ClipArray* array_, uint32_t index_,
ClipArray* nextArray_,
23 std::optional<ClipType> clipType_);
24 [[gnu::noinline]] ClipIteratorBase& operator++();
25 [[gnu::noinline]] ClipIteratorBase operator++(
int);
27 [[gnu::noinline]]
void deleteClip(InstrumentRemoval instrumentRemoval);
28 [[gnu::noinline]]
friend bool operator==(
const ClipIteratorBase& a,
const ClipIteratorBase& b) {
29 return (a.array == b.array) && (a.index == b.index) && (a.clipType == b.clipType);
31 [[gnu::noinline]]
friend bool operator!=(
const ClipIteratorBase& a,
const ClipIteratorBase& b) {
32 return (a.array != b.array) || (a.index != b.index) || (a.clipType != b.clipType);
36 [[gnu::noinline]]
void next();
42 std::optional<ClipType> clipType;
45template <
typename ClipClass>
48 using ClipIteratorBase::ClipIteratorBase;
49 ClipClass*& operator*() {
return *(ClipClass**)array->getElementAddress(index); }
50 ClipClass** operator->() {
return (ClipClass**)array->getElementAddress(index); }
72 using ClipSet::ClipSet;
83 using ClipSet::ClipSet;
94 using ClipSet::ClipSet;
Definition clip_iterators.h:60
static AllClips inArrangementOnly(Song *song)
Definition clip_iterators.cpp:61
static AllClips inSession(Song *song)
Definition clip_iterators.cpp:57
static AllClips everywhere(Song *song)
Definition clip_iterators.cpp:53
Definition clip_iterators.h:86
static AudioClips everywhere(Song *song)
Definition clip_iterators.cpp:88
Definition clip_array.h:25
void deleteClip(InstrumentRemoval instrumentRemoval)
Definition clip_iterators.cpp:22
Definition clip_iterators.h:46
Definition clip_iterators.h:75
static InstrumentClips everywhere(Song *song)
Definition clip_iterators.cpp:75