mirror of
https://github.com/cookiengineer/audacity
synced 2025-07-19 22:27:43 +02:00
More stl idiom for TrackList and its iterators
This commit is contained in:
parent
ba61e30cb2
commit
0265b8792d
@ -2912,7 +2912,7 @@ void AudacityProject::SortTracks(int flags)
|
||||
// This one place outside of TrackList where we must use undisguised
|
||||
// std::list iterators! Avoid this elsewhere!
|
||||
std::vector<ListOfTracks::iterator> arr;
|
||||
arr.reserve(mTracks->GetCount());
|
||||
arr.reserve(mTracks->size());
|
||||
bool lastTrackLinked = false;
|
||||
//sort by linked tracks. Assumes linked track follows owner in list.
|
||||
|
||||
@ -4332,7 +4332,7 @@ bool AudacityProject::DoEffect(const PluginID & ID, int flags)
|
||||
|
||||
wxGetApp().SetMissingAliasedFileWarningShouldShow(true);
|
||||
|
||||
int nTracksOriginally = GetTrackCount();
|
||||
auto nTracksOriginally = GetTrackCount();
|
||||
TrackListIterator iter(GetTracks());
|
||||
Track *t = iter.First();
|
||||
WaveTrack *newTrack{};
|
||||
|
@ -1484,7 +1484,7 @@ void AudacityProject::SetProjectTitle( int number)
|
||||
|
||||
bool AudacityProject::GetIsEmpty()
|
||||
{
|
||||
return mTracks->IsEmpty();
|
||||
return mTracks->empty();
|
||||
}
|
||||
|
||||
bool AudacityProject::SnapSelection()
|
||||
@ -2896,7 +2896,7 @@ void AudacityProject::OpenFiles(AudacityProject *proj)
|
||||
// there are no tracks, but there's an Undo history, etc, then
|
||||
// bad things can happen, including data files moving to the NEW
|
||||
// project directory, etc.
|
||||
if ( proj && ( proj->mDirty || !proj->mTracks->IsEmpty() ) )
|
||||
if ( proj && ( proj->mDirty || !proj->mTracks->empty() ) )
|
||||
proj = nullptr;
|
||||
|
||||
// This project is clean; it's never been touched. Therefore
|
||||
@ -4145,7 +4145,7 @@ AudacityProject::AddImportedTracks(const wxString &fileName,
|
||||
const auto numTracks = newTracks.size();
|
||||
SelectNone();
|
||||
|
||||
bool initiallyEmpty = mTracks->IsEmpty();
|
||||
bool initiallyEmpty = mTracks->empty();
|
||||
double newRate = 0;
|
||||
wxString trackNameBase = fileName.AfterLast(wxFILE_SEP_PATH).BeforeLast('.');
|
||||
bool isLinked = false;
|
||||
|
@ -176,7 +176,7 @@ class AUDACITY_DLL_API AudacityProject final : public wxFrame,
|
||||
|
||||
TrackList *GetTracks() { return mTracks.get(); }
|
||||
const TrackList *GetTracks() const { return mTracks.get(); }
|
||||
const int GetTrackCount(){ return GetTracks()->GetCount(); }
|
||||
size_t GetTrackCount() const { return GetTracks()->size(); }
|
||||
UndoManager *GetUndoManager() { return mUndoManager.get(); }
|
||||
|
||||
sampleFormat GetDefaultFormat() { return mDefaultFormat; }
|
||||
|
@ -1142,18 +1142,17 @@ bool TrackList::Contains(const Track * t) const
|
||||
return make_iterator_range( *this ).contains( t );
|
||||
}
|
||||
|
||||
bool TrackList::IsEmpty() const
|
||||
bool TrackList::empty() const
|
||||
{
|
||||
return empty();
|
||||
return begin() == end();
|
||||
}
|
||||
|
||||
int TrackList::GetCount() const
|
||||
size_t TrackList::size() const
|
||||
{
|
||||
int cnt = 0;
|
||||
|
||||
if (!empty()) {
|
||||
if (!empty())
|
||||
cnt = back()->GetIndex() + 1;
|
||||
}
|
||||
|
||||
return cnt;
|
||||
}
|
||||
@ -1303,7 +1302,7 @@ namespace {
|
||||
double doubleMin(double a, double b) { return std::min(a, b); }
|
||||
double doubleMax(double a, double b) { return std::max(a, b); }
|
||||
inline double Accumulate
|
||||
(const ListOfTracks &list,
|
||||
(const TrackList &list,
|
||||
double (Track::*memfn)() const,
|
||||
double (*combine)(double, double))
|
||||
{
|
||||
@ -1316,8 +1315,8 @@ namespace {
|
||||
auto iter = list.begin();
|
||||
double acc = (**iter++.*memfn)();
|
||||
return std::accumulate(iter, list.end(), acc,
|
||||
[=](double acc, const ListOfTracks::value_type &pTrack) {
|
||||
return combine(acc, (*pTrack.*memfn)());
|
||||
[=](double acc, const Track *pTrack) {
|
||||
return combine(acc, (*pTrack.*memfn)());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -365,6 +365,8 @@ class AUDACITY_DLL_API TrackListIterator /* not final */
|
||||
Track *operator * () const;
|
||||
|
||||
TrackListIterator &operator++ () { (void) Next(); return *this; }
|
||||
TrackListIterator operator++ (int)
|
||||
{ auto copy = *this; operator++(); return copy; }
|
||||
|
||||
bool operator == (const TrackListIterator &other) const;
|
||||
bool operator != (const TrackListIterator &other) const
|
||||
@ -415,6 +417,8 @@ public:
|
||||
const Track *operator * () const { return *mIter; }
|
||||
|
||||
TrackListConstIterator &operator++ () { (void) Next(); return *this; }
|
||||
TrackListConstIterator operator++ (int)
|
||||
{ auto copy = *this; operator++(); return copy; }
|
||||
|
||||
bool operator == (const TrackListConstIterator &other) const
|
||||
{ return mIter == other.mIter; }
|
||||
@ -666,8 +670,8 @@ class TrackList final : public wxEvtHandler, public ListOfTracks
|
||||
return {};
|
||||
}
|
||||
|
||||
bool IsEmpty() const;
|
||||
int GetCount() const;
|
||||
bool empty() const;
|
||||
size_t size() const;
|
||||
|
||||
double GetStartTime() const;
|
||||
double GetEndTime() const;
|
||||
|
@ -1088,7 +1088,7 @@ bool TrackPanel::IsMouseCaptured()
|
||||
|
||||
void TrackPanel::UpdateViewIfNoTracks()
|
||||
{
|
||||
if (mTracks->IsEmpty())
|
||||
if (mTracks->empty())
|
||||
{
|
||||
// BG: There are no more tracks on screen
|
||||
//BG: Set zoom to normal
|
||||
|
@ -108,7 +108,7 @@ bool SelectCommand::Apply(CommandExecutionContext context)
|
||||
Error(wxT("Trying to select a negatively numbered track!"));
|
||||
return false;
|
||||
}
|
||||
if (lastTrack >= tracks->GetCount())
|
||||
if (lastTrack >= (long)tracks->size())
|
||||
{
|
||||
Error(wxT("Trying to select higher number track than exists!"));
|
||||
return false;
|
||||
|
@ -29,7 +29,7 @@ unsigned CommonTrackPanelCell::HandleWheelRotation
|
||||
{
|
||||
using namespace RefreshCode;
|
||||
|
||||
if (pProject->GetTracks()->IsEmpty())
|
||||
if (pProject->GetTracks()->empty())
|
||||
// Scrolling and Zoom in and out commands are disabled when there are no tracks.
|
||||
// This should be disabled too for consistency. Otherwise
|
||||
// you do see changes in the time ruler.
|
||||
|
Loading…
x
Reference in New Issue
Block a user