From 256a595d0fcc160a28105269876afae3684bc129 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Wed, 10 Aug 2016 19:26:57 -0400 Subject: [PATCH 1/6] Use const --- src/prefs/ExtImportPrefs.cpp | 2 +- src/prefs/ExtImportPrefs.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/prefs/ExtImportPrefs.cpp b/src/prefs/ExtImportPrefs.cpp index f5b04f28e..2ae02d0a3 100644 --- a/src/prefs/ExtImportPrefs.cpp +++ b/src/prefs/ExtImportPrefs.cpp @@ -534,7 +534,7 @@ Audacity to trim spaces for you?" RuleTable->AutoSizeColumns (); } -void ExtImportPrefs::AddItemToTable (int index, ExtImportItem *item) +void ExtImportPrefs::AddItemToTable (int index, const ExtImportItem *item) { wxString extensions, mime_types; if (item->extensions.Count() > 0) diff --git a/src/prefs/ExtImportPrefs.h b/src/prefs/ExtImportPrefs.h index 77e1ea689..7d27d0fb1 100644 --- a/src/prefs/ExtImportPrefs.h +++ b/src/prefs/ExtImportPrefs.h @@ -100,7 +100,7 @@ class ExtImportPrefs final : public PrefsPanel void DoOnRuleTableKeyDown (int keycode); bool DoOnPluginKeyDown (int code); void DoOnRuleTableSelect (int toprow); - void AddItemToTable (int index, ExtImportItem *item); + void AddItemToTable (int index, const ExtImportItem *item); void Populate(); void PopulateOrExchange(ShuttleGui & S); DECLARE_EVENT_TABLE() From 924df495ffe879c2bdb65c40c8a4a2b592ef22ef Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Wed, 10 Aug 2016 12:06:11 -0400 Subject: [PATCH 2/6] Make headers in import directory self-contained --- mac/Audacity.xcodeproj/project.pbxproj | 16 ++++++++++---- src/Makefile.am | 1 + src/import/FormatClassifier.cpp | 4 ++-- src/import/FormatClassifier.h | 7 +++++++ src/import/Import.cpp | 1 + src/import/ImportFFmpeg.cpp | 5 +++-- src/import/ImportFFmpeg.h | 5 +---- src/import/ImportFLAC.cpp | 5 +++-- src/import/ImportFLAC.h | 3 +-- src/import/ImportForwards.h | 21 +++++++++++++++++++ src/import/ImportLOF.h | 3 +-- src/import/ImportMIDI.cpp | 6 +++--- src/import/ImportMIDI.h | 1 + src/import/ImportMP3.cpp | 5 +++-- src/import/ImportMP3.h | 3 +-- src/import/ImportOGG.cpp | 5 +++-- src/import/ImportOGG.h | 3 +-- src/import/ImportPCM.cpp | 2 +- src/import/ImportPCM.h | 3 +-- src/import/ImportPlugin.h | 4 ---- src/import/ImportQT.cpp | 2 +- src/import/ImportQT.h | 3 +-- src/import/ImportRaw.cpp | 2 +- src/import/MultiFormatReader.cpp | 15 ++++++++++++- src/import/MultiFormatReader.h | 15 ++++--------- src/import/RawAudioGuess.cpp | 3 ++- src/import/SpecPowerMeter.cpp | 3 ++- win/Projects/Audacity/Audacity.vcxproj | 1 + .../Audacity/Audacity.vcxproj.filters | 3 +++ 29 files changed, 96 insertions(+), 54 deletions(-) create mode 100644 src/import/ImportForwards.h diff --git a/mac/Audacity.xcodeproj/project.pbxproj b/mac/Audacity.xcodeproj/project.pbxproj index fb98a3d9c..04b00e020 100644 --- a/mac/Audacity.xcodeproj/project.pbxproj +++ b/mac/Audacity.xcodeproj/project.pbxproj @@ -1213,6 +1213,7 @@ 5E74D2E31CC4429700D88B0B /* EditCursorOverlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E74D2DD1CC4429700D88B0B /* EditCursorOverlay.cpp */; }; 5E74D2E41CC4429700D88B0B /* PlayIndicatorOverlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E74D2DF1CC4429700D88B0B /* PlayIndicatorOverlay.cpp */; }; 5E74D2E51CC4429700D88B0B /* Scrubbing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E74D2E11CC4429700D88B0B /* Scrubbing.cpp */; }; + 5E79B3411D5CC38D001D677D /* ImportGStreamer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E79B33F1D5CC38D001D677D /* ImportGStreamer.cpp */; }; 5E94A1BA1D1F1C8400A8713A /* wxPanelWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E94A1B81D1F1C8400A8713A /* wxPanelWrapper.cpp */; }; 5ED1D0AD1CDE55BD00471E3C /* Overlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5ED1D0A91CDE55BD00471E3C /* Overlay.cpp */; }; 5ED1D0AE1CDE55BD00471E3C /* OverlayPanel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5ED1D0AB1CDE55BD00471E3C /* OverlayPanel.cpp */; }; @@ -2990,8 +2991,11 @@ 5E74D2E01CC4429700D88B0B /* PlayIndicatorOverlay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlayIndicatorOverlay.h; sourceTree = ""; }; 5E74D2E11CC4429700D88B0B /* Scrubbing.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Scrubbing.cpp; sourceTree = ""; }; 5E74D2E21CC4429700D88B0B /* Scrubbing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Scrubbing.h; sourceTree = ""; }; + 5E79B33F1D5CC38D001D677D /* ImportGStreamer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImportGStreamer.cpp; sourceTree = ""; }; + 5E79B3401D5CC38D001D677D /* ImportGStreamer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImportGStreamer.h; sourceTree = ""; }; 5E94A1B81D1F1C8400A8713A /* wxPanelWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wxPanelWrapper.cpp; sourceTree = ""; }; 5E94A1B91D1F1C8400A8713A /* wxPanelWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wxPanelWrapper.h; sourceTree = ""; }; + 5EB9EA281D5B81270050AF40 /* ImportForwards.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImportForwards.h; sourceTree = ""; }; 5ED18DB61CC16B1E00FAFE95 /* Reverb_libSoX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reverb_libSoX.h; sourceTree = ""; }; 5ED18DB71CC290AB00FAFE95 /* wxFileNameWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wxFileNameWrapper.h; sourceTree = ""; }; 5ED1D0A91CDE55BD00471E3C /* Overlay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Overlay.cpp; sourceTree = ""; }; @@ -4216,16 +4220,15 @@ children = ( 28F67173197DFA1C00075C32 /* FormatClassifier.cpp */, 28F67174197DFA1C00075C32 /* FormatClassifier.h */, - 28F67175197DFA1C00075C32 /* MultiFormatReader.cpp */, - 28F67176197DFA1C00075C32 /* MultiFormatReader.h */, - 28F67177197DFA1C00075C32 /* SpecPowerMeter.cpp */, - 28F67178197DFA1C00075C32 /* SpecPowerMeter.h */, 1790B07F09883BFD008A330A /* Import.cpp */, 1790B08009883BFD008A330A /* Import.h */, 283135EA0DFB9D110076D551 /* ImportFFmpeg.cpp */, 283135EB0DFB9D110076D551 /* ImportFFmpeg.h */, 1790B08109883BFD008A330A /* ImportFLAC.cpp */, 1790B08209883BFD008A330A /* ImportFLAC.h */, + 5EB9EA281D5B81270050AF40 /* ImportForwards.h */, + 5E79B33F1D5CC38D001D677D /* ImportGStreamer.cpp */, + 5E79B3401D5CC38D001D677D /* ImportGStreamer.h */, 1790B08309883BFD008A330A /* ImportLOF.cpp */, 1790B08409883BFD008A330A /* ImportLOF.h */, 1790B08509883BFD008A330A /* ImportMIDI.cpp */, @@ -4241,8 +4244,12 @@ 2801A6440BF9268700648258 /* ImportQT.h */, 1790B08E09883BFD008A330A /* ImportRaw.cpp */, 1790B08F09883BFD008A330A /* ImportRaw.h */, + 28F67175197DFA1C00075C32 /* MultiFormatReader.cpp */, + 28F67176197DFA1C00075C32 /* MultiFormatReader.h */, 1790B09009883BFD008A330A /* RawAudioGuess.cpp */, 1790B09109883BFD008A330A /* RawAudioGuess.h */, + 28F67177197DFA1C00075C32 /* SpecPowerMeter.cpp */, + 28F67178197DFA1C00075C32 /* SpecPowerMeter.h */, ); path = import; sourceTree = ""; @@ -7378,6 +7385,7 @@ 1790B16309883BFD008A330A /* FreqWindow.cpp in Sources */, 1790B16509883BFD008A330A /* HistoryWindow.cpp in Sources */, 1790B16609883BFD008A330A /* ImageManipulation.cpp in Sources */, + 5E79B3411D5CC38D001D677D /* ImportGStreamer.cpp in Sources */, 1790B16709883BFD008A330A /* Import.cpp in Sources */, 1790B16809883BFD008A330A /* ImportFLAC.cpp in Sources */, 1790B16909883BFD008A330A /* ImportLOF.cpp in Sources */, diff --git a/src/Makefile.am b/src/Makefile.am index e312ba7d0..9cc89aff1 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -418,6 +418,7 @@ audacity_SOURCES = \ import/Import.h \ import/ImportFLAC.cpp \ import/ImportFLAC.h \ + import/ImportForwards.h \ import/ImportLOF.cpp \ import/ImportLOF.h \ import/ImportMP3.cpp \ diff --git a/src/import/FormatClassifier.cpp b/src/import/FormatClassifier.cpp index ab7225744..462ac34e8 100644 --- a/src/import/FormatClassifier.cpp +++ b/src/import/FormatClassifier.cpp @@ -17,6 +17,8 @@ the low-pass-like spectral behaviour of natural audio signals for classification of the sample format and the used endianness. *//*******************************************************************/ +#include "FormatClassifier.h" + #include #include #include @@ -29,8 +31,6 @@ for classification of the sample format and the used endianness. #include "SpecPowerMeter.h" #include "sndfile.h" -#include "FormatClassifier.h" - FormatClassifier::FormatClassifier(const char* filename) : mReader(filename), mMeter(cSiglen) diff --git a/src/import/FormatClassifier.h b/src/import/FormatClassifier.h index 6041fd927..2fac44856 100644 --- a/src/import/FormatClassifier.h +++ b/src/import/FormatClassifier.h @@ -11,6 +11,13 @@ #ifndef __AUDACITY_FORMATCLASSIFIER_H_ #define __AUDACITY_FORMATCLASSIFIER_H_ +#include +#include "../SampleFormat.h" +#include "MultiFormatReader.h" +#include "SpecPowerMeter.h" + +#include + #ifndef SNDFILE_1 #error Requires libsndfile 1.0.3 or higher #endif diff --git a/src/import/Import.cpp b/src/import/Import.cpp index 0d8aba2b6..a52b893d1 100644 --- a/src/import/Import.cpp +++ b/src/import/Import.cpp @@ -37,6 +37,7 @@ and ImportLOF.cpp. #include "../Audacity.h" #include "Import.h" + #include "ImportPlugin.h" #include diff --git a/src/import/ImportFFmpeg.cpp b/src/import/ImportFFmpeg.cpp index b5c9bb390..beff6bdb4 100644 --- a/src/import/ImportFFmpeg.cpp +++ b/src/import/ImportFFmpeg.cpp @@ -20,10 +20,12 @@ Licensed under the GNU General Public License v2 or later *//*******************************************************************/ +#include "../Audacity.h" // needed before FFmpeg.h +#include "ImportFFmpeg.h" + // For compilers that support precompilation, includes "wx/wx.h". #include -#include "../Audacity.h" // needed before FFmpeg.h #include "../FFmpeg.h" // which brings in avcodec.h, avformat.h #include "../ondemand/ODManager.h" #ifndef WX_PRECOMP @@ -151,7 +153,6 @@ static const wxChar *exts[] = // all the includes live here by default #include "Import.h" -#include "ImportFFmpeg.h" #include "../Tags.h" #include "../Internat.h" #include "../WaveTrack.h" diff --git a/src/import/ImportFFmpeg.h b/src/import/ImportFFmpeg.h index a4649d952..41395ce18 100644 --- a/src/import/ImportFFmpeg.h +++ b/src/import/ImportFFmpeg.h @@ -11,10 +11,7 @@ LRN #ifndef __AUDACITY_IMPORT_FFMPEG__ #define __AUDACITY_IMPORT_FFMPEG__ -#include "ImportPlugin.h" - -class ImportPluginList; -class UnusableImportPluginList; +#include "ImportForwards.h" void GetFFmpegImportPlugin(ImportPluginList *importPluginList, UnusableImportPluginList *unusableImportPluginList); diff --git a/src/import/ImportFLAC.cpp b/src/import/ImportFLAC.cpp index a3e9ebb23..7c11a0d66 100644 --- a/src/import/ImportFLAC.cpp +++ b/src/import/ImportFLAC.cpp @@ -22,6 +22,9 @@ *//*******************************************************************/ +#include "../Audacity.h" +#include "ImportFLAC.h" + // For compilers that support precompilation, includes "wx/wx.h". #include @@ -33,7 +36,6 @@ #include #include // needed for _("translated stings") even if we // don't have libflac available -#include "../Audacity.h" #include "Import.h" #include "ImportPlugin.h" @@ -66,7 +68,6 @@ void GetFLACImportPlugin(ImportPluginList *importPluginList, #else /* USE_LIBFLAC */ #include "../Internat.h" -#include "ImportFLAC.h" #include #include diff --git a/src/import/ImportFLAC.h b/src/import/ImportFLAC.h index cf5456497..0dc38ca8b 100644 --- a/src/import/ImportFLAC.h +++ b/src/import/ImportFLAC.h @@ -11,8 +11,7 @@ #ifndef __AUDACITY_IMPORT_FLAC__ #define __AUDACITY_IMPORT_FLAC__ -class ImportPluginList; -class UnusableImportPluginList; +#include "ImportForwards.h" void GetFLACImportPlugin(ImportPluginList *importPluginList, UnusableImportPluginList *unusableImportPluginList); diff --git a/src/import/ImportForwards.h b/src/import/ImportForwards.h new file mode 100644 index 000000000..79f266b3a --- /dev/null +++ b/src/import/ImportForwards.h @@ -0,0 +1,21 @@ +// +// ImportForwards.h +// Audacity +// +// Created by Paul Licameli on 8/10/16. +// +// + +#ifndef __AUDACITY_IMPORT_FORWARDS__ +#define __AUDACITY_IMPORT_FORWARDS__ + +#include +#include "../MemoryX.h" + +class ImportPlugin; +class UnusableImportPlugin; + +WX_DECLARE_LIST(ImportPlugin, ImportPluginList); +WX_DECLARE_LIST(UnusableImportPlugin, UnusableImportPluginList); + +#endif diff --git a/src/import/ImportLOF.h b/src/import/ImportLOF.h index df89b9ec5..af2a51e1c 100644 --- a/src/import/ImportLOF.h +++ b/src/import/ImportLOF.h @@ -54,8 +54,7 @@ #ifndef __AUDACITY_IMPORT_LOF__ #define __AUDACITY_IMPORT_LOF__ -class ImportPluginList; -class UnusableImportPluginList; +#include "ImportForwards.h" void GetLOFImportPlugin(ImportPluginList *importPluginList, UnusableImportPluginList *unusableImportPluginList); diff --git a/src/import/ImportMIDI.cpp b/src/import/ImportMIDI.cpp index 2667a27ee..49126e79d 100644 --- a/src/import/ImportMIDI.cpp +++ b/src/import/ImportMIDI.cpp @@ -8,13 +8,14 @@ **********************************************************************/ +#include "../Audacity.h" +#include "ImportMIDI.h" + #include #include #include #include -#include "../Audacity.h" - #if defined(USE_MIDI) //#include "allegro.h" @@ -23,7 +24,6 @@ #include "../Internat.h" #include "../NoteTrack.h" -#include "ImportMIDI.h" bool ImportMIDI(const wxString &fName, NoteTrack * dest) { diff --git a/src/import/ImportMIDI.h b/src/import/ImportMIDI.h index 1c596d2ce..e16bc720a 100644 --- a/src/import/ImportMIDI.h +++ b/src/import/ImportMIDI.h @@ -22,6 +22,7 @@ into a NoteTrack. #if defined(USE_MIDI) +class wxString; class NoteTrack; bool ImportMIDI(const wxString &fName, NoteTrack * dest); diff --git a/src/import/ImportMP3.cpp b/src/import/ImportMP3.cpp index 5a6ef2031..30daf344b 100644 --- a/src/import/ImportMP3.cpp +++ b/src/import/ImportMP3.cpp @@ -26,6 +26,9 @@ *//*******************************************************************/ +#include "../Audacity.h" +#include "ImportMP3.h" + // For compilers that support precompilation, includes "wx/wx.h". #include @@ -35,11 +38,9 @@ #include #include -#include "../Audacity.h" #include "../Prefs.h" #include "Import.h" -#include "ImportMP3.h" #include "ImportPlugin.h" #include "../Internat.h" #include "../Tags.h" diff --git a/src/import/ImportMP3.h b/src/import/ImportMP3.h index 9c055b896..bebd28c34 100644 --- a/src/import/ImportMP3.h +++ b/src/import/ImportMP3.h @@ -11,8 +11,7 @@ #ifndef __AUDACITY_IMPORT_MP3__ #define __AUDACITY_IMPORT_MP3__ -class ImportPluginList; -class UnusableImportPluginList; +#include "ImportForwards.h" void GetMP3ImportPlugin(ImportPluginList *importPluginList, UnusableImportPluginList *unusableImportPluginList); diff --git a/src/import/ImportOGG.cpp b/src/import/ImportOGG.cpp index 05bc618ae..e81cc8e42 100644 --- a/src/import/ImportOGG.cpp +++ b/src/import/ImportOGG.cpp @@ -28,6 +28,9 @@ *//*******************************************************************/ +#include "../Audacity.h" +#include "ImportOGG.h" + // For compilers that support precompilation, includes "wx/wx.h". #include @@ -36,12 +39,10 @@ #endif #include -#include "../Audacity.h" #include "../Prefs.h" #include "../Internat.h" #include "../Tags.h" -#include "ImportOGG.h" #define DESC _("Ogg Vorbis files") diff --git a/src/import/ImportOGG.h b/src/import/ImportOGG.h index e460e0c8f..946384188 100644 --- a/src/import/ImportOGG.h +++ b/src/import/ImportOGG.h @@ -11,8 +11,7 @@ #ifndef __AUDACITY_IMPORT_OGG__ #define __AUDACITY_IMPORT_OGG__ -class ImportPluginList; -class UnusableImportPluginList; +#include "ImportForwards.h" void GetOGGImportPlugin(ImportPluginList *importPluginList, UnusableImportPluginList *unusableImportPluginList); diff --git a/src/import/ImportPCM.cpp b/src/import/ImportPCM.cpp index 816295bdf..cce787a00 100644 --- a/src/import/ImportPCM.cpp +++ b/src/import/ImportPCM.cpp @@ -20,10 +20,10 @@ *//*******************************************************************/ #include "../Audacity.h" +#include "ImportPCM.h" #include "../AudacityApp.h" #include "../Internat.h" #include "../Tags.h" -#include "ImportPCM.h" #include #include diff --git a/src/import/ImportPCM.h b/src/import/ImportPCM.h index ccccca161..ead1e4bf7 100644 --- a/src/import/ImportPCM.h +++ b/src/import/ImportPCM.h @@ -11,8 +11,7 @@ #ifndef __AUDACITY_IMPORT_PCM__ #define __AUDACITY_IMPORT_PCM__ -class ImportPluginList; -class UnusableImportPluginList; +#include "ImportForwards.h" void GetPCMImportPlugin(ImportPluginList *importPluginList, UnusableImportPluginList *unusableImportPluginList); diff --git a/src/import/ImportPlugin.h b/src/import/ImportPlugin.h index c8baf758c..5d9189088 100644 --- a/src/import/ImportPlugin.h +++ b/src/import/ImportPlugin.h @@ -59,7 +59,6 @@ but little else. #include #include #include -#include #include "../MemoryX.h" #include "../widgets/ProgressDialog.h" @@ -197,7 +196,4 @@ private: wxArrayString mExtensions; }; -WX_DECLARE_LIST(ImportPlugin, ImportPluginList); -WX_DECLARE_LIST(UnusableImportPlugin, UnusableImportPluginList); - #endif diff --git a/src/import/ImportQT.cpp b/src/import/ImportQT.cpp index 97d808ca9..c7438392d 100644 --- a/src/import/ImportQT.cpp +++ b/src/import/ImportQT.cpp @@ -13,6 +13,7 @@ **********************************************************************/ #include "../Audacity.h" +#include "ImportQT.h" #include "ImportPlugin.h" #define DESC _("QuickTime files") @@ -66,7 +67,6 @@ void GetQTImportPlugin(ImportPluginList *importPluginList, #include "../Internat.h" #include "../Tags.h" #include "../WaveTrack.h" -#include "ImportQT.h" #define kQTAudioPropertyID_MaxAudioSampleSize 'mssz' diff --git a/src/import/ImportQT.h b/src/import/ImportQT.h index 5442a4c8d..c4c374285 100644 --- a/src/import/ImportQT.h +++ b/src/import/ImportQT.h @@ -11,8 +11,7 @@ #ifndef __AUDACITY_IMPORT_QT__ #define __AUDACITY_IMPORT_QT__ -class ImportPluginList; -class UnusableImportPluginList; +#include "ImportForwards.h" void GetQTImportPlugin(ImportPluginList *importPluginList, UnusableImportPluginList *unusableImportPluginList); diff --git a/src/import/ImportRaw.cpp b/src/import/ImportRaw.cpp index 183b12001..6380cacd8 100644 --- a/src/import/ImportRaw.cpp +++ b/src/import/ImportRaw.cpp @@ -22,8 +22,8 @@ and sample size to help you importing data of an unknown format. #include "../Audacity.h" - #include "ImportRaw.h" + #include "Import.h" #include "../DirManager.h" diff --git a/src/import/MultiFormatReader.cpp b/src/import/MultiFormatReader.cpp index 7dc574766..890673bff 100644 --- a/src/import/MultiFormatReader.cpp +++ b/src/import/MultiFormatReader.cpp @@ -14,6 +14,8 @@ machine endianness representations. *//*******************************************************************/ +#include "MultiFormatReader.h" + #include #include #include @@ -22,7 +24,18 @@ machine endianness representations. #include -#include "MultiFormatReader.h" +MachineEndianness::MachineEndianness() +{ + if (wxBYTE_ORDER == wxLITTLE_ENDIAN) + { + mFlag = MachineEndianness::Little; + } + else + { + mFlag = MachineEndianness::Big; + } +} + MultiFormatReader::MultiFormatReader(const char* filename) : mpFid(NULL) diff --git a/src/import/MultiFormatReader.h b/src/import/MultiFormatReader.h index 3026d09d5..73d1f4722 100644 --- a/src/import/MultiFormatReader.h +++ b/src/import/MultiFormatReader.h @@ -11,6 +11,9 @@ #ifndef __AUDACITY_MULTIFORMATREADER_H__ #define __AUDACITY_MULTIFORMATREADER_H__ +#include +#include + class MachineEndianness { public: @@ -20,17 +23,7 @@ public: Big } EndiannessT; - MachineEndianness() - { - if (wxBYTE_ORDER == wxLITTLE_ENDIAN) - { - mFlag = MachineEndianness::Little; - } - else - { - mFlag = MachineEndianness::Big; - } - } + MachineEndianness(); ~MachineEndianness() {} diff --git a/src/import/RawAudioGuess.cpp b/src/import/RawAudioGuess.cpp index 16e0e3b99..56d01e3c0 100644 --- a/src/import/RawAudioGuess.cpp +++ b/src/import/RawAudioGuess.cpp @@ -13,6 +13,8 @@ **********************************************************************/ +#include "RawAudioGuess.h" + #include #include #include @@ -22,7 +24,6 @@ #include #include "../Internat.h" -#include "RawAudioGuess.h" #define RAW_GUESS_DEBUG 0 diff --git a/src/import/SpecPowerMeter.cpp b/src/import/SpecPowerMeter.cpp index 546525be8..b1394731a 100644 --- a/src/import/SpecPowerMeter.cpp +++ b/src/import/SpecPowerMeter.cpp @@ -16,12 +16,13 @@ measurements in subbands or in the entire signal band. *//*******************************************************************/ +#include "SpecPowerMeter.h" + #include #include #include #include "../FFT.h" -#include "SpecPowerMeter.h" SpecPowerMeter::SpecPowerMeter(int sigLen) { diff --git a/win/Projects/Audacity/Audacity.vcxproj b/win/Projects/Audacity/Audacity.vcxproj index aca7d4511..f878a9e7c 100755 --- a/win/Projects/Audacity/Audacity.vcxproj +++ b/win/Projects/Audacity/Audacity.vcxproj @@ -432,6 +432,7 @@ + diff --git a/win/Projects/Audacity/Audacity.vcxproj.filters b/win/Projects/Audacity/Audacity.vcxproj.filters index ee1232677..93c340e56 100755 --- a/win/Projects/Audacity/Audacity.vcxproj.filters +++ b/win/Projects/Audacity/Audacity.vcxproj.filters @@ -1795,6 +1795,9 @@ src\widgets + + src\import + From 7d89e5ff6887f0a1c070a62eab3e51c4bed8c85c Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Wed, 10 Aug 2016 22:17:17 -0400 Subject: [PATCH 3/6] Pass containers by ref to import plugin factories, use STL idiom --- src/import/Import.cpp | 16 ++++++++-------- src/import/ImportFFmpeg.cpp | 6 +++--- src/import/ImportFFmpeg.h | 4 ++-- src/import/ImportFLAC.cpp | 12 ++++++------ src/import/ImportFLAC.h | 4 ++-- src/import/ImportGStreamer.cpp | 6 +++--- src/import/ImportGStreamer.h | 4 ++-- src/import/ImportLOF.cpp | 6 +++--- src/import/ImportLOF.h | 4 ++-- src/import/ImportMP3.cpp | 12 ++++++------ src/import/ImportMP3.h | 4 ++-- src/import/ImportOGG.cpp | 12 ++++++------ src/import/ImportOGG.h | 4 ++-- src/import/ImportPCM.cpp | 6 +++--- src/import/ImportPCM.h | 4 ++-- src/import/ImportQT.cpp | 12 ++++++------ src/import/ImportQT.h | 4 ++-- 17 files changed, 60 insertions(+), 60 deletions(-) diff --git a/src/import/Import.cpp b/src/import/Import.cpp index a52b893d1..9f2537868 100644 --- a/src/import/Import.cpp +++ b/src/import/Import.cpp @@ -101,20 +101,20 @@ bool Importer::Initialize() // build the list of import plugin and/or unusableImporters. // order is significant. If none match, they will all be tried // in the order defined here. - GetPCMImportPlugin(mImportPluginList, mUnusableImportPluginList); - GetOGGImportPlugin(mImportPluginList, mUnusableImportPluginList); - GetFLACImportPlugin(mImportPluginList, mUnusableImportPluginList); - GetMP3ImportPlugin(mImportPluginList, mUnusableImportPluginList); - GetLOFImportPlugin(mImportPluginList, mUnusableImportPluginList); + GetPCMImportPlugin(*mImportPluginList, *mUnusableImportPluginList); + GetOGGImportPlugin(*mImportPluginList, *mUnusableImportPluginList); + GetFLACImportPlugin(*mImportPluginList, *mUnusableImportPluginList); + GetMP3ImportPlugin(*mImportPluginList, *mUnusableImportPluginList); + GetLOFImportPlugin(*mImportPluginList, *mUnusableImportPluginList); #if defined(USE_FFMPEG) - GetFFmpegImportPlugin(mImportPluginList, mUnusableImportPluginList); + GetFFmpegImportPlugin(*mImportPluginList, *mUnusableImportPluginList); #endif #ifdef USE_QUICKTIME - GetQTImportPlugin(mImportPluginList, mUnusableImportPluginList); + GetQTImportPlugin(*mImportPluginList, *mUnusableImportPluginList); #endif #if defined(USE_GSTREAMER) - GetGStreamerImportPlugin(mImportPluginList, mUnusableImportPluginList); + GetGStreamerImportPlugin(*mImportPluginList, *mUnusableImportPluginList); #endif ReadImportItems(); diff --git a/src/import/ImportFFmpeg.cpp b/src/import/ImportFFmpeg.cpp index beff6bdb4..07b2118f2 100644 --- a/src/import/ImportFFmpeg.cpp +++ b/src/import/ImportFFmpeg.cpp @@ -283,10 +283,10 @@ private: }; -void GetFFmpegImportPlugin(ImportPluginList *importPluginList, - UnusableImportPluginList *WXUNUSED(unusableImportPluginList)) +void GetFFmpegImportPlugin(ImportPluginList &importPluginList, + UnusableImportPluginList &WXUNUSED(unusableImportPluginList)) { - importPluginList->Append(new FFmpegImportPlugin); + importPluginList.push_back( new FFmpegImportPlugin ); } diff --git a/src/import/ImportFFmpeg.h b/src/import/ImportFFmpeg.h index 41395ce18..e5a48699f 100644 --- a/src/import/ImportFFmpeg.h +++ b/src/import/ImportFFmpeg.h @@ -13,7 +13,7 @@ LRN #include "ImportForwards.h" -void GetFFmpegImportPlugin(ImportPluginList *importPluginList, - UnusableImportPluginList *unusableImportPluginList); +void GetFFmpegImportPlugin(ImportPluginList &importPluginList, + UnusableImportPluginList &unusableImportPluginList); #endif diff --git a/src/import/ImportFLAC.cpp b/src/import/ImportFLAC.cpp index 7c11a0d66..51ae08f74 100644 --- a/src/import/ImportFLAC.cpp +++ b/src/import/ImportFLAC.cpp @@ -56,13 +56,13 @@ static const wxChar *exts[] = #ifndef USE_LIBFLAC -void GetFLACImportPlugin(ImportPluginList *importPluginList, - UnusableImportPluginList *unusableImportPluginList) +void GetFLACImportPlugin(ImportPluginList &importPluginList, + UnusableImportPluginList &unusableImportPluginList) { UnusableImportPlugin* flacIsUnsupported = new UnusableImportPlugin(DESC, wxArrayString(WXSIZEOF(exts), exts)); - unusableImportPluginList->Append(flacIsUnsupported); + unusableImportPluginList.push_back( flacIsUnsupported ); } #else /* USE_LIBFLAC */ @@ -282,10 +282,10 @@ FLAC__StreamDecoderWriteStatus MyFLACFile::write_callback(const FLAC__Frame *fra } -void GetFLACImportPlugin(ImportPluginList *importPluginList, - UnusableImportPluginList *WXUNUSED(unusableImportPluginList)) +void GetFLACImportPlugin(ImportPluginList &importPluginList, + UnusableImportPluginList &WXUNUSED(unusableImportPluginList)) { - importPluginList->Append(new FLACImportPlugin); + importPluginList.push_back( new FLACImportPlugin ); } diff --git a/src/import/ImportFLAC.h b/src/import/ImportFLAC.h index 0dc38ca8b..75c158e23 100644 --- a/src/import/ImportFLAC.h +++ b/src/import/ImportFLAC.h @@ -13,8 +13,8 @@ #include "ImportForwards.h" -void GetFLACImportPlugin(ImportPluginList *importPluginList, - UnusableImportPluginList *unusableImportPluginList); +void GetFLACImportPlugin(ImportPluginList &importPluginList, + UnusableImportPluginList &unusableImportPluginList); #endif diff --git a/src/import/ImportGStreamer.cpp b/src/import/ImportGStreamer.cpp index 4c54dd54d..e760feadb 100644 --- a/src/import/ImportGStreamer.cpp +++ b/src/import/ImportGStreamer.cpp @@ -261,8 +261,8 @@ public: // ---------------------------------------------------------------------------- // Instantiate GStreamerImportPlugin and add to the list of known importers void -GetGStreamerImportPlugin(ImportPluginList *importPluginList, - UnusableImportPluginList * WXUNUSED(unusableImportPluginList)) +GetGStreamerImportPlugin(ImportPluginList &importPluginList, + UnusableImportPluginList & WXUNUSED(unusableImportPluginList)) { wxLogMessage(wxT("Audacity is built against GStreamer version %d.%d.%d-%d"), GST_VERSION_MAJOR, @@ -300,7 +300,7 @@ GetGStreamerImportPlugin(ImportPluginList *importPluginList, return; // Add to list of importers - importPluginList->push_back(std::move(plug)); + importPluginList.push_back( plug.release() ); } // ============================================================================ diff --git a/src/import/ImportGStreamer.h b/src/import/ImportGStreamer.h index 5923820f3..373a352b0 100644 --- a/src/import/ImportGStreamer.h +++ b/src/import/ImportGStreamer.h @@ -13,7 +13,7 @@ LRN #include "ImportPlugin.h" -void GetGStreamerImportPlugin(ImportPluginList *importPluginList, - UnusableImportPluginList *unusableImportPluginList); +void GetGStreamerImportPlugin(ImportPluginList &importPluginList, + UnusableImportPluginList &unusableImportPluginList); #endif diff --git a/src/import/ImportLOF.cpp b/src/import/ImportLOF.cpp index a618a73ec..f92c3d0f8 100644 --- a/src/import/ImportLOF.cpp +++ b/src/import/ImportLOF.cpp @@ -175,10 +175,10 @@ LOFImportFileHandle::LOFImportFileHandle scrollOffset = 0; } -void GetLOFImportPlugin(ImportPluginList *importPluginList, - UnusableImportPluginList * WXUNUSED(unusableImportPluginList)) +void GetLOFImportPlugin(ImportPluginList &importPluginList, + UnusableImportPluginList & WXUNUSED(unusableImportPluginList)) { - importPluginList->Append(new LOFImportPlugin); + importPluginList.push_back( new LOFImportPlugin ); } wxString LOFImportPlugin::GetPluginFormatDescription() diff --git a/src/import/ImportLOF.h b/src/import/ImportLOF.h index af2a51e1c..48843382d 100644 --- a/src/import/ImportLOF.h +++ b/src/import/ImportLOF.h @@ -56,7 +56,7 @@ #include "ImportForwards.h" -void GetLOFImportPlugin(ImportPluginList *importPluginList, - UnusableImportPluginList *unusableImportPluginList); +void GetLOFImportPlugin(ImportPluginList &importPluginList, + UnusableImportPluginList &unusableImportPluginList); #endif diff --git a/src/import/ImportMP3.cpp b/src/import/ImportMP3.cpp index 30daf344b..cacec2346 100644 --- a/src/import/ImportMP3.cpp +++ b/src/import/ImportMP3.cpp @@ -56,13 +56,13 @@ static const wxChar *exts[] = #ifndef USE_LIBMAD -void GetMP3ImportPlugin(ImportPluginList *importPluginList, - UnusableImportPluginList *unusableImportPluginList) +void GetMP3ImportPlugin(ImportPluginList &importPluginList, + UnusableImportPluginList &unusableImportPluginList) { UnusableImportPlugin* mp3IsUnsupported = new UnusableImportPlugin(DESC, wxArrayString(WXSIZEOF(exts), exts)); - unusableImportPluginList->Append(mp3IsUnsupported); + unusableImportPluginList.push_back( mp3IsUnsupported ); } #else /* USE_LIBMAD */ @@ -153,10 +153,10 @@ private: mad_decoder mDecoder; }; -void GetMP3ImportPlugin(ImportPluginList *importPluginList, - UnusableImportPluginList * WXUNUSED(unusableImportPluginList)) +void GetMP3ImportPlugin(ImportPluginList &importPluginList, + UnusableImportPluginList & WXUNUSED(unusableImportPluginList)) { - importPluginList->Append(new MP3ImportPlugin); + importPluginList.push_back( new MP3ImportPlugin ); } /* The MAD callbacks */ diff --git a/src/import/ImportMP3.h b/src/import/ImportMP3.h index bebd28c34..5a4c9a8bf 100644 --- a/src/import/ImportMP3.h +++ b/src/import/ImportMP3.h @@ -13,7 +13,7 @@ #include "ImportForwards.h" -void GetMP3ImportPlugin(ImportPluginList *importPluginList, - UnusableImportPluginList *unusableImportPluginList); +void GetMP3ImportPlugin(ImportPluginList &importPluginList, + UnusableImportPluginList &unusableImportPluginList); #endif diff --git a/src/import/ImportOGG.cpp b/src/import/ImportOGG.cpp index e81cc8e42..81c13ef03 100644 --- a/src/import/ImportOGG.cpp +++ b/src/import/ImportOGG.cpp @@ -55,13 +55,13 @@ static const wxChar *exts[] = /* BPF There is no real reason to compile without LIBVORBIS, but if you do, you will needs this header */ #include "ImportPlugin.h" -void GetOGGImportPlugin(ImportPluginList *importPluginList, - UnusableImportPluginList *unusableImportPluginList) +void GetOGGImportPlugin(ImportPluginList &importPluginList, + UnusableImportPluginList &unusableImportPluginList) { UnusableImportPlugin* oggIsUnsupported = new UnusableImportPlugin(DESC, wxArrayString(WXSIZEOF(exts), exts)); - unusableImportPluginList->Append(oggIsUnsupported); + unusableImportPluginList.push_back( oggIsUnsupported ); } #else /* USE_LIBVORBIS */ @@ -160,10 +160,10 @@ private: sampleFormat mFormat; }; -void GetOGGImportPlugin(ImportPluginList *importPluginList, - UnusableImportPluginList * WXUNUSED(unusableImportPluginList)) +void GetOGGImportPlugin(ImportPluginList &importPluginList, + UnusableImportPluginList & WXUNUSED(unusableImportPluginList)) { - importPluginList->Append(new OggImportPlugin); + importPluginList.push_back( new OggImportPlugin ); } wxString OggImportPlugin::GetPluginFormatDescription() diff --git a/src/import/ImportOGG.h b/src/import/ImportOGG.h index 946384188..731020762 100644 --- a/src/import/ImportOGG.h +++ b/src/import/ImportOGG.h @@ -13,7 +13,7 @@ #include "ImportForwards.h" -void GetOGGImportPlugin(ImportPluginList *importPluginList, - UnusableImportPluginList *unusableImportPluginList); +void GetOGGImportPlugin(ImportPluginList &importPluginList, + UnusableImportPluginList &unusableImportPluginList); #endif diff --git a/src/import/ImportPCM.cpp b/src/import/ImportPCM.cpp index cce787a00..180a98cbf 100644 --- a/src/import/ImportPCM.cpp +++ b/src/import/ImportPCM.cpp @@ -113,10 +113,10 @@ private: sampleFormat mFormat; }; -void GetPCMImportPlugin(ImportPluginList * importPluginList, - UnusableImportPluginList * WXUNUSED(unusableImportPluginList)) +void GetPCMImportPlugin(ImportPluginList & importPluginList, + UnusableImportPluginList & WXUNUSED(unusableImportPluginList)) { - importPluginList->Append(new PCMImportPlugin); + importPluginList.push_back( new PCMImportPlugin ); } wxString PCMImportPlugin::GetPluginFormatDescription() diff --git a/src/import/ImportPCM.h b/src/import/ImportPCM.h index ead1e4bf7..9d444742c 100644 --- a/src/import/ImportPCM.h +++ b/src/import/ImportPCM.h @@ -13,8 +13,8 @@ #include "ImportForwards.h" -void GetPCMImportPlugin(ImportPluginList *importPluginList, - UnusableImportPluginList *unusableImportPluginList); +void GetPCMImportPlugin(ImportPluginList &importPluginList, + UnusableImportPluginList &unusableImportPluginList); #endif diff --git a/src/import/ImportQT.cpp b/src/import/ImportQT.cpp index c7438392d..3168d039a 100644 --- a/src/import/ImportQT.cpp +++ b/src/import/ImportQT.cpp @@ -27,13 +27,13 @@ static const wxChar *exts[] = #ifndef USE_QUICKTIME -void GetQTImportPlugin(ImportPluginList *importPluginList, - UnusableImportPluginList *unusableImportPluginList) +void GetQTImportPlugin(ImportPluginList &importPluginList, + UnusableImportPluginList &unusableImportPluginList) { UnusableImportPlugin* qtIsUnsupported = new UnusableImportPlugin(DESC, wxArrayString(WXSIZEOF(exts), exts)); - unusableImportPluginList->Append(qtIsUnsupported); + unusableImportPluginList.push_back( qtIsUnsupported ); } #else /* USE_QUICKTIME */ @@ -162,10 +162,10 @@ class QTImportFileHandle final : public ImportFileHandle Movie mMovie; }; -void GetQTImportPlugin(ImportPluginList *importPluginList, - UnusableImportPluginList *unusableImportPluginList) +void GetQTImportPlugin(ImportPluginList &importPluginList, + UnusableImportPluginList &unusableImportPluginList) { - importPluginList->Append(new QTImportPlugin); + importPluginList.push_back( new QTImportPlugin ); } wxString QTImportPlugin::GetPluginFormatDescription() diff --git a/src/import/ImportQT.h b/src/import/ImportQT.h index c4c374285..7ca9ada98 100644 --- a/src/import/ImportQT.h +++ b/src/import/ImportQT.h @@ -13,7 +13,7 @@ #include "ImportForwards.h" -void GetQTImportPlugin(ImportPluginList *importPluginList, - UnusableImportPluginList *unusableImportPluginList); +void GetQTImportPlugin(ImportPluginList &importPluginList, + UnusableImportPluginList &unusableImportPluginList); #endif From 28f0b113769dbfc752a6bb6303afc0b2b11d6a2f Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Wed, 10 Aug 2016 22:21:09 -0400 Subject: [PATCH 4/6] Use arrays of smart pointers to import plugins --- src/import/Import.cpp | 100 ++++++++++++--------------------- src/import/Import.h | 4 +- src/import/ImportFFmpeg.cpp | 2 +- src/import/ImportFLAC.cpp | 10 ++-- src/import/ImportForwards.h | 8 ++- src/import/ImportGStreamer.cpp | 2 +- src/import/ImportLOF.cpp | 2 +- src/import/ImportMP3.cpp | 10 ++-- src/import/ImportOGG.cpp | 10 ++-- src/import/ImportPCM.cpp | 2 +- src/import/ImportQT.cpp | 10 ++-- 11 files changed, 66 insertions(+), 94 deletions(-) diff --git a/src/import/Import.cpp b/src/import/Import.cpp index 9f2537868..216ee21fd 100644 --- a/src/import/Import.cpp +++ b/src/import/Import.cpp @@ -38,6 +38,7 @@ and ImportLOF.cpp. #include "../Audacity.h" #include "Import.h" +#include #include "ImportPlugin.h" #include @@ -62,8 +63,6 @@ and ImportLOF.cpp. #include "ImportGStreamer.h" #include "../Prefs.h" -WX_DEFINE_LIST(ImportPluginList); -WX_DEFINE_LIST(UnusableImportPluginList); WX_DEFINE_OBJARRAY(ExtImportItems); // ============================================================================ @@ -125,9 +124,7 @@ bool Importer::Initialize() bool Importer::Terminate() { WriteImportItems(); - mImportPluginList->DeleteContents(true); delete mImportPluginList; - mUnusableImportPluginList->DeleteContents(true);//JKC delete mUnusableImportPluginList; return true; @@ -135,10 +132,8 @@ bool Importer::Terminate() void Importer::GetSupportedImportFormats(FormatList *formatList) { - ImportPluginList::compatibility_iterator importPluginNode = mImportPluginList->GetFirst(); - while(importPluginNode) + for(const auto &importPlugin : *mImportPluginList) { - ImportPlugin *importPlugin = importPluginNode->GetData(); #ifdef __AUDACITY_OLD_STD__ formatList->push_back(Format{importPlugin->GetPluginFormatDescription(), importPlugin->GetSupportedExtensions()}); @@ -146,7 +141,6 @@ void Importer::GetSupportedImportFormats(FormatList *formatList) formatList->emplace_back(importPlugin->GetPluginFormatDescription(), importPlugin->GetSupportedExtensions()); #endif - importPluginNode = importPluginNode->GetNext(); } } @@ -165,7 +159,6 @@ void Importer::ReadImportItems() wxString item_name; wxString item_value; ExtImportItem *new_item; - ImportPluginList::compatibility_iterator importPluginNode; if (this->mExtImportItems != NULL) delete this->mExtImportItems; @@ -229,29 +222,27 @@ void Importer::ReadImportItems() /* Find corresponding filter object for each filter ID */ for (size_t i = 0; i < new_item->filters.Count(); i++) { - for (importPluginNode = mImportPluginList->GetFirst(); - importPluginNode; importPluginNode = importPluginNode->GetNext()) + bool found = false; + for (const auto &importPlugin : *mImportPluginList) { - ImportPlugin *importPlugin = importPluginNode->GetData(); if (importPlugin->GetPluginStringID().Cmp(new_item->filters[i]) == 0) { - new_item->filter_objects.Add (importPlugin); + new_item->filter_objects.Add (importPlugin.get()); + found = true; break; } } /* IDs that do not have corresponding filters, will be shown as-is */ - if (!importPluginNode) + if (!found) new_item->filter_objects.Add (NULL); } /* Find all filter objects that are not present in the filter list */ - for (importPluginNode = mImportPluginList->GetFirst(); - importPluginNode; importPluginNode = importPluginNode->GetNext()) + for (const auto &importPlugin : *mImportPluginList) { bool found = false; - ImportPlugin *importPlugin = importPluginNode->GetData(); for (size_t i = 0; i < new_item->filter_objects.Count(); i++) { - if (importPlugin == new_item->filter_objects[i]) + if (importPlugin.get() == new_item->filter_objects[i]) { found = true; break; @@ -264,7 +255,7 @@ void Importer::ReadImportItems() if (new_item->divider < 0) index = new_item->filters.Count(); new_item->filters.Insert(importPlugin->GetPluginStringID(),index); - new_item->filter_objects.Insert (importPlugin, index); + new_item->filter_objects.Insert (importPlugin.get(), index); if (new_item->divider >= 0) new_item->divider++; } @@ -337,18 +328,15 @@ void Importer::WriteImportItems() ExtImportItem *Importer::CreateDefaultImportItem() { ExtImportItem *new_item; - ImportPluginList::compatibility_iterator importPluginNode; new_item = new ExtImportItem(); new_item->extensions.Add(wxT("*")); new_item->mime_types.Add(wxT("*")); - for (importPluginNode = mImportPluginList->GetFirst(); - importPluginNode; importPluginNode = importPluginNode->GetNext()) + for (const auto &importPlugin : *mImportPluginList) { - ImportPlugin *importPlugin = importPluginNode->GetData(); new_item->filters.Add (importPlugin->GetPluginStringID()); - new_item->filter_objects.Add (importPlugin); + new_item->filter_objects.Add (importPlugin.get()); } new_item->divider = -1; return new_item; @@ -366,12 +354,13 @@ bool Importer::Import(const wxString &fName, wxString extension = fName.AfterLast(wxT('.')); + using ImportPluginPtrs = std::vector< ImportPlugin* >; + // This list is used to call plugins in correct order - ImportPluginList importPlugins; - ImportPluginList::compatibility_iterator importPluginNode; + ImportPluginPtrs importPlugins; // This list is used to remember plugins that should have been compatible with the file. - ImportPluginList compatiblePlugins; + ImportPluginPtrs compatiblePlugins; // If user explicitly selected a filter, // then we should try importing via corresponding plugin first @@ -389,17 +378,14 @@ bool Importer::Import(const wxString &fName, if (usersSelectionOverrides) { - importPluginNode = mImportPluginList->GetFirst(); - while (importPluginNode) + for (const auto &plugin : *mImportPluginList) { - ImportPlugin *plugin = importPluginNode->GetData(); if (plugin->GetPluginFormatDescription().CompareTo(type) == 0) { // This plugin corresponds to user-selected filter, try it first. wxLogDebug(wxT("Inserting %s"),plugin->GetPluginStringID().c_str()); - importPlugins.Insert(plugin); + importPlugins.insert(importPlugins.begin(), plugin.get()); } - importPluginNode = importPluginNode->GetNext(); } } @@ -455,13 +441,12 @@ bool Importer::Import(const wxString &fName, if (!(item->filter_objects[j])) continue; wxLogDebug(wxT("Inserting %s"),item->filter_objects[j]->GetPluginStringID().c_str()); - importPlugins.Append(item->filter_objects[j]); + importPlugins.push_back(item->filter_objects[j]); } } } // Add all plugins that support the extension - importPluginNode = mImportPluginList->GetFirst(); // Here we rely on the fact that the first plugin in mImportPluginList is libsndfile. // We want to save this for later insertion ahead of libmad, if libmad supports the extension. @@ -469,14 +454,14 @@ bool Importer::Import(const wxString &fName, // is not changed by user selection overrides or any other mechanism, but we include an assert // in case subsequent code revisions to the constructor should break this assumption that // libsndfile is first. - ImportPlugin *libsndfilePlugin = importPluginNode->GetData(); + ImportPlugin *libsndfilePlugin = mImportPluginList->begin()->get(); wxASSERT(libsndfilePlugin->GetPluginStringID().IsSameAs(wxT("libsndfile"))); - while (importPluginNode) + for (const auto &plugin : *mImportPluginList) { - ImportPlugin *plugin = importPluginNode->GetData(); // Make sure its not already in the list - if (importPlugins.Find(plugin) == NULL) + if (importPlugins.end() == + std::find(importPlugins.begin(), importPlugins.end(), plugin.get())) { if (plugin->SupportsExtension(extension)) { @@ -491,45 +476,40 @@ bool Importer::Import(const wxString &fName, if (plugin->GetPluginStringID().IsSameAs(wxT("libmad"))) { // Make sure libsndfile is not already in the list - if (importPlugins.Find(libsndfilePlugin) == NULL) + if (importPlugins.end() == + std::find(importPlugins.begin(), importPlugins.end(), libsndfilePlugin)) { wxLogDebug(wxT("Appending %s"),libsndfilePlugin->GetPluginStringID().c_str()); - importPlugins.Append(libsndfilePlugin); + importPlugins.push_back(libsndfilePlugin); } } wxLogDebug(wxT("Appending %s"),plugin->GetPluginStringID().c_str()); - importPlugins.Append(plugin); + importPlugins.push_back(plugin.get()); } } - - importPluginNode = importPluginNode->GetNext(); } // Add remaining plugins, except for libmad, which should not be used as a fallback for anything. // Otherwise, if FFmpeg (libav) has not been installed, libmad will still be there near the // end of the preference list importPlugins, where it will claim success importing FFmpeg file // formats unsuitable for it, and produce distorted results. - importPluginNode = mImportPluginList->GetFirst(); - while (importPluginNode) + for (const auto &plugin : *mImportPluginList) { - ImportPlugin *plugin = importPluginNode->GetData(); if (!(plugin->GetPluginStringID().IsSameAs(wxT("libmad")))) { // Make sure its not already in the list - if (importPlugins.Find(plugin) == NULL) + if (importPlugins.end() == + std::find(importPlugins.begin(), importPlugins.end(), plugin.get())) { wxLogDebug(wxT("Appending %s"),plugin->GetPluginStringID().c_str()); - importPlugins.Append(plugin); + importPlugins.push_back(plugin.get()); } } - - importPluginNode = importPluginNode->GetNext(); } - importPluginNode = importPlugins.GetFirst(); - while(importPluginNode) + // Try the import plugins, in the permuted sequences just determined + for (const auto plugin : importPlugins) { - ImportPlugin *plugin = importPluginNode->GetData(); // Try to open the file with this plugin (probe it) wxLogMessage(wxT("Opening with %s"),plugin->GetPluginStringID().c_str()); auto inFile = plugin->Open(fName); @@ -583,18 +563,14 @@ bool Importer::Import(const wxString &fName, // that may recognize the extension, so we allow the loop to // continue. } - importPluginNode = importPluginNode->GetNext(); } wxLogError(wxT("Importer::Import: Opening failed.")); // None of our plugins can handle this file. It might be that // Audacity supports this format, but support was not compiled in. // If so, notify the user of this fact - UnusableImportPluginList::compatibility_iterator unusableImporterNode - = mUnusableImportPluginList->GetFirst(); - while(unusableImporterNode) + for (const auto &unusableImportPlugin : *mUnusableImportPluginList) { - UnusableImportPlugin *unusableImportPlugin = unusableImporterNode->GetData(); if( unusableImportPlugin->SupportsExtension(extension) ) { errorMessage.Printf(_("This version of Audacity was not compiled with %s support."), @@ -603,7 +579,6 @@ bool Importer::Import(const wxString &fName, pProj->mbBusyImporting = false; return false; } - unusableImporterNode = unusableImporterNode->GetNext(); } /* warnings for unsupported data types */ @@ -617,7 +592,7 @@ bool Importer::Import(const wxString &fName, } #endif - if (compatiblePlugins.GetCount() <= 0) + if (compatiblePlugins.empty()) { // if someone has sent us a .cda file, send them away if (extension.IsSameAs(wxT("cda"), false)) { @@ -715,15 +690,12 @@ bool Importer::Import(const wxString &fName, // We DO have a plugin for this file, but import failed. wxString pluglist = wxEmptyString; - importPluginNode = compatiblePlugins.GetFirst(); - while(importPluginNode) + for (const auto &plugin : compatiblePlugins) { - ImportPlugin *plugin = importPluginNode->GetData(); if (pluglist == wxEmptyString) pluglist = plugin->GetPluginFormatDescription(); else pluglist = pluglist + wxT(", ") + plugin->GetPluginFormatDescription(); - importPluginNode = importPluginNode->GetNext(); } errorMessage.Printf(_("Audacity recognized the type of the file '%s'.\nImporters supposedly supporting such files are:\n%s,\nbut none of them understood this file format."),fName.c_str(), pluglist.c_str()); diff --git a/src/import/Import.h b/src/import/Import.h index d4cbc3752..310e07cb4 100644 --- a/src/import/Import.h +++ b/src/import/Import.h @@ -12,6 +12,7 @@ #define _IMPORT_ #include "ImportRaw.h" // defines TrackHolders +#include "ImportForwards.h" #include #include #include @@ -85,9 +86,6 @@ class ExtImportItem wxArrayString mime_types; }; -class ImportPluginList; -class UnusableImportPluginList; - class Importer { public: Importer(); diff --git a/src/import/ImportFFmpeg.cpp b/src/import/ImportFFmpeg.cpp index 07b2118f2..1d5641d32 100644 --- a/src/import/ImportFFmpeg.cpp +++ b/src/import/ImportFFmpeg.cpp @@ -286,7 +286,7 @@ private: void GetFFmpegImportPlugin(ImportPluginList &importPluginList, UnusableImportPluginList &WXUNUSED(unusableImportPluginList)) { - importPluginList.push_back( new FFmpegImportPlugin ); + importPluginList.push_back( make_movable() ); } diff --git a/src/import/ImportFLAC.cpp b/src/import/ImportFLAC.cpp index 51ae08f74..3934dda76 100644 --- a/src/import/ImportFLAC.cpp +++ b/src/import/ImportFLAC.cpp @@ -59,10 +59,10 @@ static const wxChar *exts[] = void GetFLACImportPlugin(ImportPluginList &importPluginList, UnusableImportPluginList &unusableImportPluginList) { - UnusableImportPlugin* flacIsUnsupported = - new UnusableImportPlugin(DESC, wxArrayString(WXSIZEOF(exts), exts)); - - unusableImportPluginList.push_back( flacIsUnsupported ); + unusableImportPluginList.push_back( + make_movable + (DESC, wxArrayString(WXSIZEOF(exts), exts)); + ); } #else /* USE_LIBFLAC */ @@ -285,7 +285,7 @@ FLAC__StreamDecoderWriteStatus MyFLACFile::write_callback(const FLAC__Frame *fra void GetFLACImportPlugin(ImportPluginList &importPluginList, UnusableImportPluginList &WXUNUSED(unusableImportPluginList)) { - importPluginList.push_back( new FLACImportPlugin ); + importPluginList.push_back( make_movable() ); } diff --git a/src/import/ImportForwards.h b/src/import/ImportForwards.h index 79f266b3a..f05256761 100644 --- a/src/import/ImportForwards.h +++ b/src/import/ImportForwards.h @@ -9,13 +9,15 @@ #ifndef __AUDACITY_IMPORT_FORWARDS__ #define __AUDACITY_IMPORT_FORWARDS__ -#include +#include #include "../MemoryX.h" class ImportPlugin; class UnusableImportPlugin; -WX_DECLARE_LIST(ImportPlugin, ImportPluginList); -WX_DECLARE_LIST(UnusableImportPlugin, UnusableImportPluginList); +using ImportPluginList = + std::vector< movable_ptr >; +using UnusableImportPluginList = + std::vector< movable_ptr >; #endif diff --git a/src/import/ImportGStreamer.cpp b/src/import/ImportGStreamer.cpp index e760feadb..cd93ba5c6 100644 --- a/src/import/ImportGStreamer.cpp +++ b/src/import/ImportGStreamer.cpp @@ -300,7 +300,7 @@ GetGStreamerImportPlugin(ImportPluginList &importPluginList, return; // Add to list of importers - importPluginList.push_back( plug.release() ); + importPluginList.push_back( std::move(plug) ); } // ============================================================================ diff --git a/src/import/ImportLOF.cpp b/src/import/ImportLOF.cpp index f92c3d0f8..6fc4346e7 100644 --- a/src/import/ImportLOF.cpp +++ b/src/import/ImportLOF.cpp @@ -178,7 +178,7 @@ LOFImportFileHandle::LOFImportFileHandle void GetLOFImportPlugin(ImportPluginList &importPluginList, UnusableImportPluginList & WXUNUSED(unusableImportPluginList)) { - importPluginList.push_back( new LOFImportPlugin ); + importPluginList.push_back( make_movable() ); } wxString LOFImportPlugin::GetPluginFormatDescription() diff --git a/src/import/ImportMP3.cpp b/src/import/ImportMP3.cpp index cacec2346..56bd6b555 100644 --- a/src/import/ImportMP3.cpp +++ b/src/import/ImportMP3.cpp @@ -59,10 +59,10 @@ static const wxChar *exts[] = void GetMP3ImportPlugin(ImportPluginList &importPluginList, UnusableImportPluginList &unusableImportPluginList) { - UnusableImportPlugin* mp3IsUnsupported = - new UnusableImportPlugin(DESC, wxArrayString(WXSIZEOF(exts), exts)); - - unusableImportPluginList.push_back( mp3IsUnsupported ); + unusableImportPluginList.push_back( + make_movable + (DESC, wxArrayString(WXSIZEOF(exts), exts)) + ); } #else /* USE_LIBMAD */ @@ -156,7 +156,7 @@ private: void GetMP3ImportPlugin(ImportPluginList &importPluginList, UnusableImportPluginList & WXUNUSED(unusableImportPluginList)) { - importPluginList.push_back( new MP3ImportPlugin ); + importPluginList.push_back( make_movable() ); } /* The MAD callbacks */ diff --git a/src/import/ImportOGG.cpp b/src/import/ImportOGG.cpp index 81c13ef03..adde0a638 100644 --- a/src/import/ImportOGG.cpp +++ b/src/import/ImportOGG.cpp @@ -58,10 +58,10 @@ static const wxChar *exts[] = void GetOGGImportPlugin(ImportPluginList &importPluginList, UnusableImportPluginList &unusableImportPluginList) { - UnusableImportPlugin* oggIsUnsupported = - new UnusableImportPlugin(DESC, wxArrayString(WXSIZEOF(exts), exts)); - - unusableImportPluginList.push_back( oggIsUnsupported ); + unusableImportPluginList.push_back( + make_movable + (DESC, wxArrayString(WXSIZEOF(exts), exts)) + ); } #else /* USE_LIBVORBIS */ @@ -163,7 +163,7 @@ private: void GetOGGImportPlugin(ImportPluginList &importPluginList, UnusableImportPluginList & WXUNUSED(unusableImportPluginList)) { - importPluginList.push_back( new OggImportPlugin ); + importPluginList.push_back( make_movable() ); } wxString OggImportPlugin::GetPluginFormatDescription() diff --git a/src/import/ImportPCM.cpp b/src/import/ImportPCM.cpp index 180a98cbf..3bd7ebc6e 100644 --- a/src/import/ImportPCM.cpp +++ b/src/import/ImportPCM.cpp @@ -116,7 +116,7 @@ private: void GetPCMImportPlugin(ImportPluginList & importPluginList, UnusableImportPluginList & WXUNUSED(unusableImportPluginList)) { - importPluginList.push_back( new PCMImportPlugin ); + importPluginList.push_back( make_movable() ); } wxString PCMImportPlugin::GetPluginFormatDescription() diff --git a/src/import/ImportQT.cpp b/src/import/ImportQT.cpp index 3168d039a..60732065b 100644 --- a/src/import/ImportQT.cpp +++ b/src/import/ImportQT.cpp @@ -30,10 +30,10 @@ static const wxChar *exts[] = void GetQTImportPlugin(ImportPluginList &importPluginList, UnusableImportPluginList &unusableImportPluginList) { - UnusableImportPlugin* qtIsUnsupported = - new UnusableImportPlugin(DESC, wxArrayString(WXSIZEOF(exts), exts)); - - unusableImportPluginList.push_back( qtIsUnsupported ); + unusableImportPluginList.push_back( + make_movable + (DESC, wxArrayString(WXSIZEOF(exts), exts)) + ); } #else /* USE_QUICKTIME */ @@ -165,7 +165,7 @@ class QTImportFileHandle final : public ImportFileHandle void GetQTImportPlugin(ImportPluginList &importPluginList, UnusableImportPluginList &unusableImportPluginList) { - importPluginList.push_back( new QTImportPlugin ); + importPluginList.push_back( make_movable() ); } wxString QTImportPlugin::GetPluginFormatDescription() From 8226441210840a9521c0b7af907b661e6b815950 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Wed, 10 Aug 2016 23:33:04 -0400 Subject: [PATCH 5/6] use vector of smart pointers to ExtImportItem objects --- src/import/Import.cpp | 23 ++++++--------- src/import/Import.h | 6 ++-- src/prefs/ExtImportPrefs.cpp | 54 +++++++++++++++++++----------------- 3 files changed, 41 insertions(+), 42 deletions(-) diff --git a/src/import/Import.cpp b/src/import/Import.cpp index 216ee21fd..be56a4c65 100644 --- a/src/import/Import.cpp +++ b/src/import/Import.cpp @@ -63,8 +63,6 @@ and ImportLOF.cpp. #include "ImportGStreamer.h" #include "../Prefs.h" -WX_DEFINE_OBJARRAY(ExtImportItems); - // ============================================================================ // // Return reference to singleton @@ -158,7 +156,6 @@ void Importer::ReadImportItems() wxStringTokenizer toker; wxString item_name; wxString item_value; - ExtImportItem *new_item; if (this->mExtImportItems != NULL) delete this->mExtImportItems; @@ -181,7 +178,7 @@ void Importer::ReadImportItems() if (toker.CountTokens() != 2) break; - new_item = new ExtImportItem(); + auto new_item = make_movable(); /* First token is the filtering condition, second - the filter list */ condition = toker.GetNextToken(); @@ -260,7 +257,7 @@ void Importer::ReadImportItems() new_item->divider++; } } - this->mExtImportItems->Add (new_item); + this->mExtImportItems->push_back( std::move(new_item) ); } } @@ -268,9 +265,9 @@ void Importer::WriteImportItems() { size_t i; wxString val, name; - for (i = 0; i < this->mExtImportItems->Count(); i++) + for (i = 0; i < this->mExtImportItems->size(); i++) { - ExtImportItem *item = &(mExtImportItems->Item(i)); + ExtImportItem *item = (*mExtImportItems)[i].get(); val.Clear(); for (size_t j = 0; j < item->extensions.Count(); j++) @@ -310,7 +307,7 @@ void Importer::WriteImportItems() /* If we used to have more items than we have now, DELETE the excess items. We just keep deleting items and incrementing until we find there aren't any more to DELETE.*/ - i = this->mExtImportItems->Count(); + i = this->mExtImportItems->size(); do { name.Printf (wxT("/ExtImportItems/Item%d"), (int)i); // No item to DELETE? Then it's time to finish. @@ -325,11 +322,9 @@ void Importer::WriteImportItems() } while( true ); } -ExtImportItem *Importer::CreateDefaultImportItem() +movable_ptr Importer::CreateDefaultImportItem() { - ExtImportItem *new_item; - - new_item = new ExtImportItem(); + auto new_item = make_movable(); new_item->extensions.Add(wxT("*")); new_item->mime_types.Add(wxT("*")); @@ -392,9 +387,9 @@ bool Importer::Import(const wxString &fName, wxLogMessage(wxT("File name is %s"),(const char *) fName.c_str()); wxLogMessage(wxT("Mime type is %s"),(const char *) mime_type.Lower().c_str()); - for (size_t i = 0; i < mExtImportItems->Count(); i++) + for (const auto &uItem : *mExtImportItems) { - ExtImportItem *item = &(*mExtImportItems)[i]; + ExtImportItem *item = uItem.get(); bool matches_ext = false, matches_mime = false; wxLogDebug(wxT("Testing extensions")); for (size_t j = 0; j < item->extensions.Count(); j++) diff --git a/src/import/Import.h b/src/import/Import.h index 310e07cb4..80db08ddd 100644 --- a/src/import/Import.h +++ b/src/import/Import.h @@ -45,7 +45,7 @@ class ExtImportItem; using FormatList = std::vector ; WX_DEFINE_ARRAY_PTR(ImportPlugin *, ImportPluginPtrArray); -WX_DECLARE_OBJARRAY(ExtImportItem, ExtImportItems); +using ExtImportItems = std::vector< movable_ptr >; class ExtImportItem { @@ -129,13 +129,13 @@ public: * Returns a pointer to internal items array. * External objects are allowed to change the array contents. */ - ExtImportItems *GetImportItems() { return mExtImportItems; }; + ExtImportItems &GetImportItems() { return *mExtImportItems; }; /** * Allocates NEW ExtImportItem, fills it with default data * and returns a pointer to it. */ - ExtImportItem *CreateDefaultImportItem(); + movable_ptr CreateDefaultImportItem(); // if false, the import failed and errorMessage will be set. bool Import(const wxString &fName, diff --git a/src/prefs/ExtImportPrefs.cpp b/src/prefs/ExtImportPrefs.cpp index 2ae02d0a3..b7381cc9e 100644 --- a/src/prefs/ExtImportPrefs.cpp +++ b/src/prefs/ExtImportPrefs.cpp @@ -146,10 +146,13 @@ void ExtImportPrefs::PopulateOrExchange(ShuttleGui & S) PluginList->SetColumnWidth (0, wxLIST_AUTOSIZE_USEHEADER); - ExtImportItems *items = Importer::Get().GetImportItems(); - for (unsigned int i = 0; i < items->Count(); i++) - AddItemToTable (i, &(*items)[i]); - if (items->Count() > 0) + auto &items = Importer::Get().GetImportItems(); + { + int i = -1; + for (const auto &item : items) + AddItemToTable (++i, item.get()); + } + if (!items.empty()) { RuleTable->SelectRow(0); RuleTable->SetGridCursor(0,0); @@ -212,8 +215,8 @@ void ExtImportPrefs::SwapPluginRows (int row1, int row2) long d, d2; ImportPlugin *ip1, *ip2; - ExtImportItems *items = Importer::Get().GetImportItems(); - ExtImportItem *item = &(*items)[last_selected]; + auto &items = Importer::Get().GetImportItems(); + ExtImportItem *item = items[last_selected].get(); t = PluginList->GetItemText (row1); d = PluginList->GetItemData (row1); @@ -261,8 +264,8 @@ bool ExtImportPrefs::DoOnPluginKeyDown (int code) if (last_selected == -1) return false; - ExtImportItems *items = Importer::Get().GetImportItems(); - ExtImportItem *item = &(*items)[last_selected]; + auto &items = Importer::Get().GetImportItems(); + ExtImportItem *item = items[last_selected].get(); if (code == WXK_UP && itemIndex == 0) return false; @@ -298,7 +301,6 @@ bool ExtImportPrefs::DoOnPluginKeyDown (int code) void ExtImportPrefs::SwapRows (int row1, int row2) { int t; - ExtImportItem *t1, *t2; wxString ts; if (row1 == row2) return; @@ -308,11 +310,12 @@ void ExtImportPrefs::SwapRows (int row1, int row2) row1 = row2; row2 = t; } - ExtImportItems *items = Importer::Get().GetImportItems(); - t1 = items->Detach(row1); - t2 = items->Detach(row1); - items->Insert (t1, row1); - items->Insert (t2, row1); + auto &items = Importer::Get().GetImportItems(); + + auto &t1 = items[row1]; + auto &t2 = items[row2]; + std::swap(t1, t2); + for (int i = 0; i < RuleTable->GetNumberCols(); i++) { ts = RuleTable->GetCellValue (row2, i); @@ -411,14 +414,14 @@ void ExtImportPrefs::OnRuleTableSelectRange (wxGridRangeSelectEvent& event) void ExtImportPrefs::DoOnRuleTableSelect (int toprow) { - ExtImportItems *items = Importer::Get().GetImportItems(); + auto &items = Importer::Get().GetImportItems(); - if (toprow < 0 || toprow > (int)items->GetCount()) + if (toprow < 0 || toprow > (int)items.size()) { return; } - ExtImportItem *item = &(*items)[toprow]; + ExtImportItem *item = items[toprow].get(); PluginList->DeleteAllItems(); int fcount; @@ -463,8 +466,8 @@ void ExtImportPrefs::OnRuleTableEdit (wxGridEvent& event) { int row = event.GetRow(); int col = event.GetCol(); - ExtImportItems *items = Importer::Get().GetImportItems(); - ExtImportItem *item = &(*items)[row]; + auto &items = Importer::Get().GetImportItems(); + ExtImportItem *item = items[row].get(); RuleTable->SaveEditControlValue(); wxString val = RuleTable->GetCellValue (row, col); @@ -566,11 +569,12 @@ void ExtImportPrefs::AddItemToTable (int index, const ExtImportItem *item) void ExtImportPrefs::OnAddRule(wxCommandEvent& WXUNUSED(event)) { - ExtImportItems *items = Importer::Get().GetImportItems(); - ExtImportItem *item = Importer::Get().CreateDefaultImportItem(); - items->Add (item); - + auto &items = Importer::Get().GetImportItems(); + auto uitem = Importer::Get().CreateDefaultImportItem(); + auto item = uitem.get(); + items.push_back(std::move(uitem)); AddItemToTable (RuleTable->GetNumberRows (), item); + RuleTable->SelectRow(RuleTable->GetNumberRows () - 1); RuleTable->SetGridCursor (RuleTable->GetNumberRows () - 1, 0); RuleTable->SetFocus(); @@ -580,7 +584,7 @@ void ExtImportPrefs::OnDelRule(wxCommandEvent& WXUNUSED(event)) { if (last_selected < 0) return; - ExtImportItems *items = Importer::Get().GetImportItems(); + auto &items = Importer::Get().GetImportItems(); int msgres = wxMessageBox (_("Do you really want to delete selected rule?"), _("Rule deletion confirmation"), wxYES_NO, RuleTable); @@ -588,7 +592,7 @@ void ExtImportPrefs::OnDelRule(wxCommandEvent& WXUNUSED(event)) return; RuleTable->DeleteRows (last_selected); - items->RemoveAt (last_selected); + items.erase (items.begin() + last_selected); RuleTable->AutoSizeColumns (); if (last_selected >= RuleTable->GetNumberRows ()) last_selected = RuleTable->GetNumberRows () - 1; From eef2669abdedeb33861f1b24b39e22983f13232c Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Wed, 10 Aug 2016 23:33:51 -0400 Subject: [PATCH 6/6] One less indirection accessing containers in Importer --- src/import/Import.cpp | 65 +++++++++++++++++++------------------------ src/import/Import.h | 8 +++--- 2 files changed, 32 insertions(+), 41 deletions(-) diff --git a/src/import/Import.cpp b/src/import/Import.cpp index be56a4c65..3d34b5fc7 100644 --- a/src/import/Import.cpp +++ b/src/import/Import.cpp @@ -77,41 +77,35 @@ Importer & Importer::Get() Importer::Importer() { - mExtImportItems = NULL; } Importer::~Importer() { - if (mExtImportItems != NULL) - { - delete mExtImportItems; - mExtImportItems = NULL; - } } bool Importer::Initialize() { - mImportPluginList = new ImportPluginList; - mUnusableImportPluginList = new UnusableImportPluginList; - mExtImportItems = NULL; + ImportPluginList{}.swap(mImportPluginList); + UnusableImportPluginList{}.swap(mUnusableImportPluginList); + ExtImportItems{}.swap(mExtImportItems); // build the list of import plugin and/or unusableImporters. // order is significant. If none match, they will all be tried // in the order defined here. - GetPCMImportPlugin(*mImportPluginList, *mUnusableImportPluginList); - GetOGGImportPlugin(*mImportPluginList, *mUnusableImportPluginList); - GetFLACImportPlugin(*mImportPluginList, *mUnusableImportPluginList); - GetMP3ImportPlugin(*mImportPluginList, *mUnusableImportPluginList); - GetLOFImportPlugin(*mImportPluginList, *mUnusableImportPluginList); + GetPCMImportPlugin(mImportPluginList, mUnusableImportPluginList); + GetOGGImportPlugin(mImportPluginList, mUnusableImportPluginList); + GetFLACImportPlugin(mImportPluginList, mUnusableImportPluginList); + GetMP3ImportPlugin(mImportPluginList, mUnusableImportPluginList); + GetLOFImportPlugin(mImportPluginList, mUnusableImportPluginList); #if defined(USE_FFMPEG) - GetFFmpegImportPlugin(*mImportPluginList, *mUnusableImportPluginList); + GetFFmpegImportPlugin(mImportPluginList, mUnusableImportPluginList); #endif #ifdef USE_QUICKTIME - GetQTImportPlugin(*mImportPluginList, *mUnusableImportPluginList); + GetQTImportPlugin(mImportPluginList, mUnusableImportPluginList); #endif #if defined(USE_GSTREAMER) - GetGStreamerImportPlugin(*mImportPluginList, *mUnusableImportPluginList); + GetGStreamerImportPlugin(mImportPluginList, mUnusableImportPluginList); #endif ReadImportItems(); @@ -122,15 +116,15 @@ bool Importer::Initialize() bool Importer::Terminate() { WriteImportItems(); - delete mImportPluginList; - delete mUnusableImportPluginList; + ImportPluginList{}.swap( mImportPluginList ); + UnusableImportPluginList{}.swap( mUnusableImportPluginList ); return true; } void Importer::GetSupportedImportFormats(FormatList *formatList) { - for(const auto &importPlugin : *mImportPluginList) + for(const auto &importPlugin : mImportPluginList) { #ifdef __AUDACITY_OLD_STD__ formatList->push_back(Format{importPlugin->GetPluginFormatDescription(), @@ -157,10 +151,7 @@ void Importer::ReadImportItems() wxString item_name; wxString item_value; - if (this->mExtImportItems != NULL) - delete this->mExtImportItems; - - this->mExtImportItems = new ExtImportItems(); + ExtImportItems{}.swap(mExtImportItems); /* Rule string format is: * extension1:extension2:extension3\mime_type1:mime_type2:mime_type3|filter1:filter2:filter3\unusedfilter1:unusedfilter2 * backslashes are escaped and unescaped internally @@ -220,7 +211,7 @@ void Importer::ReadImportItems() for (size_t i = 0; i < new_item->filters.Count(); i++) { bool found = false; - for (const auto &importPlugin : *mImportPluginList) + for (const auto &importPlugin : mImportPluginList) { if (importPlugin->GetPluginStringID().Cmp(new_item->filters[i]) == 0) { @@ -234,7 +225,7 @@ void Importer::ReadImportItems() new_item->filter_objects.Add (NULL); } /* Find all filter objects that are not present in the filter list */ - for (const auto &importPlugin : *mImportPluginList) + for (const auto &importPlugin : mImportPluginList) { bool found = false; for (size_t i = 0; i < new_item->filter_objects.Count(); i++) @@ -257,7 +248,7 @@ void Importer::ReadImportItems() new_item->divider++; } } - this->mExtImportItems->push_back( std::move(new_item) ); + this->mExtImportItems.push_back( std::move(new_item) ); } } @@ -265,9 +256,9 @@ void Importer::WriteImportItems() { size_t i; wxString val, name; - for (i = 0; i < this->mExtImportItems->size(); i++) + for (i = 0; i < this->mExtImportItems.size(); i++) { - ExtImportItem *item = (*mExtImportItems)[i].get(); + ExtImportItem *item = mExtImportItems[i].get(); val.Clear(); for (size_t j = 0; j < item->extensions.Count(); j++) @@ -307,7 +298,7 @@ void Importer::WriteImportItems() /* If we used to have more items than we have now, DELETE the excess items. We just keep deleting items and incrementing until we find there aren't any more to DELETE.*/ - i = this->mExtImportItems->size(); + i = this->mExtImportItems.size(); do { name.Printf (wxT("/ExtImportItems/Item%d"), (int)i); // No item to DELETE? Then it's time to finish. @@ -328,7 +319,7 @@ movable_ptr Importer::CreateDefaultImportItem() new_item->extensions.Add(wxT("*")); new_item->mime_types.Add(wxT("*")); - for (const auto &importPlugin : *mImportPluginList) + for (const auto &importPlugin : mImportPluginList) { new_item->filters.Add (importPlugin->GetPluginStringID()); new_item->filter_objects.Add (importPlugin.get()); @@ -373,7 +364,7 @@ bool Importer::Import(const wxString &fName, if (usersSelectionOverrides) { - for (const auto &plugin : *mImportPluginList) + for (const auto &plugin : mImportPluginList) { if (plugin->GetPluginFormatDescription().CompareTo(type) == 0) { @@ -387,7 +378,7 @@ bool Importer::Import(const wxString &fName, wxLogMessage(wxT("File name is %s"),(const char *) fName.c_str()); wxLogMessage(wxT("Mime type is %s"),(const char *) mime_type.Lower().c_str()); - for (const auto &uItem : *mExtImportItems) + for (const auto &uItem : mExtImportItems) { ExtImportItem *item = uItem.get(); bool matches_ext = false, matches_mime = false; @@ -449,10 +440,10 @@ bool Importer::Import(const wxString &fName, // is not changed by user selection overrides or any other mechanism, but we include an assert // in case subsequent code revisions to the constructor should break this assumption that // libsndfile is first. - ImportPlugin *libsndfilePlugin = mImportPluginList->begin()->get(); + ImportPlugin *libsndfilePlugin = mImportPluginList.begin()->get(); wxASSERT(libsndfilePlugin->GetPluginStringID().IsSameAs(wxT("libsndfile"))); - for (const auto &plugin : *mImportPluginList) + for (const auto &plugin : mImportPluginList) { // Make sure its not already in the list if (importPlugins.end() == @@ -488,7 +479,7 @@ bool Importer::Import(const wxString &fName, // Otherwise, if FFmpeg (libav) has not been installed, libmad will still be there near the // end of the preference list importPlugins, where it will claim success importing FFmpeg file // formats unsuitable for it, and produce distorted results. - for (const auto &plugin : *mImportPluginList) + for (const auto &plugin : mImportPluginList) { if (!(plugin->GetPluginStringID().IsSameAs(wxT("libmad")))) { @@ -564,7 +555,7 @@ bool Importer::Import(const wxString &fName, // None of our plugins can handle this file. It might be that // Audacity supports this format, but support was not compiled in. // If so, notify the user of this fact - for (const auto &unusableImportPlugin : *mUnusableImportPluginList) + for (const auto &unusableImportPlugin : mUnusableImportPluginList) { if( unusableImportPlugin->SupportsExtension(extension) ) { diff --git a/src/import/Import.h b/src/import/Import.h index 80db08ddd..4e8aaa450 100644 --- a/src/import/Import.h +++ b/src/import/Import.h @@ -129,7 +129,7 @@ public: * Returns a pointer to internal items array. * External objects are allowed to change the array contents. */ - ExtImportItems &GetImportItems() { return *mExtImportItems; }; + ExtImportItems &GetImportItems() { return mExtImportItems; }; /** * Allocates NEW ExtImportItem, fills it with default data @@ -147,9 +147,9 @@ public: private: static Importer mInstance; - ExtImportItems *mExtImportItems; - ImportPluginList *mImportPluginList; - UnusableImportPluginList *mUnusableImportPluginList; + ExtImportItems mExtImportItems; + ImportPluginList mImportPluginList; + UnusableImportPluginList mUnusableImportPluginList; }; //----------------------------------------------------------------------------