From 20c5726e9442ebaf3711043cc0f317a600fb9c75 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Sun, 12 Apr 2020 14:50:24 +0200 Subject: Make sure that drumkit::clear clear all metadata. --- src/domloader.cc | 8 ++++---- src/drumkit.cc | 16 +++++++++------- src/drumkit.h | 14 ++++++++------ test/domloadertest.cc | 4 ++-- 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/domloader.cc b/src/domloader.cc index 97c1d6b..c78ed75 100644 --- a/src/domloader.cc +++ b/src/domloader.cc @@ -56,10 +56,10 @@ bool DOMLoader::loadDom(const std::string& basepath, { settings.has_bleed_control.store(false); - drumkit._name = dom.metadata.title; - drumkit._version = dom.version; - drumkit._description = dom.metadata.description; - drumkit._samplerate = dom.samplerate; + drumkit.metadata._name = dom.metadata.title; + drumkit.metadata._version = dom.version; + drumkit.metadata._description = dom.metadata.description; + drumkit.metadata._samplerate = dom.samplerate; for(const auto& channel: dom.channels) { diff --git a/src/drumkit.cc b/src/drumkit.cc index 61fabf6..9df9a33 100644 --- a/src/drumkit.cc +++ b/src/drumkit.cc @@ -43,9 +43,11 @@ void DrumKit::clear() channels.clear(); - _name = ""; - _description = ""; - _samplerate = 44100.0f; + // Set all metadata fields to empty values. + metadata = {}; + + // Explicitly set the samplerate default value, since this cannot be 0 + metadata._samplerate = 44100.0f; } bool DrumKit::isValid() const @@ -60,22 +62,22 @@ std::string DrumKit::getFile() const std::string DrumKit::getName() const { - return _name; + return metadata._name; } std::string DrumKit::getDescription() const { - return _description; + return metadata._description; } VersionStr DrumKit::getVersion() const { - return _version; + return metadata._version; } float DrumKit::getSamplerate() const { - return _samplerate; + return metadata._samplerate; } std::size_t DrumKit::getNumberOfFiles() const diff --git a/src/drumkit.h b/src/drumkit.h index 4cee6be..aee5d19 100644 --- a/src/drumkit.h +++ b/src/drumkit.h @@ -18,7 +18,7 @@ * DrumGizmo is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. + * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with DrumGizmo; if not, write to the Free Software @@ -68,9 +68,11 @@ private: std::string _file; - std::string _name; - std::string _description; - float _samplerate{44100.0f}; - - VersionStr _version; + struct MetaData + { + std::string _name; + std::string _description; + float _samplerate{44100.0f}; + VersionStr _version; + } metadata; }; diff --git a/test/domloadertest.cc b/test/domloadertest.cc index 2cd6aa8..093bcde 100644 --- a/test/domloadertest.cc +++ b/test/domloadertest.cc @@ -153,9 +153,9 @@ public: DGUNIT_ASSERT_EQUAL(std::string("SnareTop"), drumkit.channels[2].name); DGUNIT_ASSERT_EQUAL(std::string("SnareBottom"), drumkit.channels[3].name); - DGUNIT_ASSERT_EQUAL(std::size_t(48000), drumkit._samplerate); + DGUNIT_ASSERT_EQUAL(48000.0f, drumkit.metadata._samplerate); - DGUNIT_ASSERT(VersionStr("2.0.0") == drumkit._version); + DGUNIT_ASSERT(VersionStr("2.0.0") == drumkit.metadata._version); // // Instrument1 'Snare1': -- cgit v1.2.3