diff options
author | Christian Glöckner <cgloeckner@freenet.de> | 2016-03-29 10:43:00 +0200 |
---|---|---|
committer | André Nusser <andre.nusser@googlemail.com> | 2016-03-31 17:35:47 +0200 |
commit | 90cf32becc608fdd1a5e9bf815e040d7fb71b819 (patch) | |
tree | 4be9aab027935957466271f2ea760e9d8fb1b782 | |
parent | fa677c584b698d4d8aa8acc967f31960a01a9cf6 (diff) |
refactored class ChannelMixer
-rw-r--r-- | src/channelmixer.cc | 95 | ||||
-rw-r--r-- | src/channelmixer.h | 31 |
2 files changed, 65 insertions, 61 deletions
diff --git a/src/channelmixer.cc b/src/channelmixer.cc index 76a25a6..510d9a8 100644 --- a/src/channelmixer.cc +++ b/src/channelmixer.cc @@ -26,40 +26,46 @@ */ #include "channelmixer.h" -ChannelMixer::ChannelMixer(Channels &c, Channel *defc, float defg) - : channels(c) +ChannelMixer::ChannelMixer(const Channels& c, const Channel* defc, float defg) + : mix{} + , defaultchannel{nullptr} + , defaultgain{1.f} + , channels(c) { - setDefaults(defc, defg); + setDefaults(defc, defg); } -void ChannelMixer::setDefaults(Channel *defc, float defg) +void ChannelMixer::setDefaults(const Channel* defc, float defg) { - defaultchannel = defc; - if(defc == NULL && channels.size() > 0) defaultchannel = &channels[0]; + defaultchannel = defc; + if(defc == nullptr && channels.size() > 0) + { + defaultchannel = &channels[0]; + } - defaultgain = defg; + defaultgain = defg; } -MixerSettings &ChannelMixer::lookup(InstrumentChannel *c) +MixerSettings& ChannelMixer::lookup(const InstrumentChannel& c) { - std::map<InstrumentChannel *, MixerSettings>::iterator mi = mix.find(c); - - if(mi == mix.end()) { - MixerSettings m; - m.gain = defaultgain; - m.output = defaultchannel; - mix[c] = m; - return mix[c]; - } - - return mi->second; + auto mi = mix.find(&c); + + if(mi == mix.end()) + { + MixerSettings m; + m.gain = defaultgain; + m.output = defaultchannel; + mix[&c] = m; + return mix[&c]; + } + + return mi->second; } - #ifdef TEST_CHANNELMIXER -//deps: channel.cc -//cflags: -//libs: +// deps: channel.cc +// cflags: +// libs: #include "test.h" TEST_BEGIN; @@ -71,40 +77,39 @@ channels.push_back(ch1); channels.push_back(ch2); { - ChannelMixer mixer(channels, NULL, 1.0); + ChannelMixer mixer(channels, nullptr, 1.0); - InstrumentChannel ich; - MixerSettings &m = mixer.lookup(&ich); - TEST_EQUAL(m.output, &channels[0], "Default channel?"); - TEST_EQUAL_FLOAT(m.gain, 1.0, "Default gain?"); + InstrumentChannel ich; + MixerSettings& m = mixer.lookup(&ich); + TEST_EQUAL(m.output, &channels[0], "Default channel?"); + TEST_EQUAL_FLOAT(m.gain, 1.0, "Default gain?"); } { - ChannelMixer mixer(channels, &channels[1]); + ChannelMixer mixer(channels, &channels[1]); - InstrumentChannel ich; - MixerSettings &m = mixer.lookup(&ich); - TEST_EQUAL(m.output, &channels[1], "Default channel?"); - TEST_EQUAL_FLOAT(m.gain, 1.0, "Default gain?"); + InstrumentChannel ich; + MixerSettings& m = mixer.lookup(&ich); + TEST_EQUAL(m.output, &channels[1], "Default channel?"); + TEST_EQUAL_FLOAT(m.gain, 1.0, "Default gain?"); } { - ChannelMixer mixer(channels, &channels[1]); + ChannelMixer mixer(channels, &channels[1]); - InstrumentChannel ich; - MixerSettings &m = mixer.lookup(&ich); - TEST_EQUAL(m.output, &channels[1], "Default channel?"); - TEST_EQUAL_FLOAT(m.gain, 1.0, "Default gain?"); + InstrumentChannel ich; + MixerSettings& m = mixer.lookup(&ich); + TEST_EQUAL(m.output, &channels[1], "Default channel?"); + TEST_EQUAL_FLOAT(m.gain, 1.0, "Default gain?"); - m.output = &channels[0]; - m.gain = 0.5; + m.output = &channels[0]; + m.gain = 0.5; - MixerSettings &m2 = mixer.lookup(&ich); - TEST_EQUAL(m2.output, &channels[0], "Changed channel?"); - TEST_EQUAL_FLOAT(m2.gain, 0.5, "Changed gain?"); + MixerSettings& m2 = mixer.lookup(&ich); + TEST_EQUAL(m2.output, &channels[0], "Changed channel?"); + TEST_EQUAL_FLOAT(m2.gain, 0.5, "Changed gain?"); } - TEST_END; -#endif/*TEST_CHANNELMIXER*/ +#endif /*TEST_CHANNELMIXER*/ diff --git a/src/channelmixer.h b/src/channelmixer.h index fadf181..ec495ac 100644 --- a/src/channelmixer.h +++ b/src/channelmixer.h @@ -24,35 +24,34 @@ * along with DrumGizmo; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#ifndef __DRUMGIZMO_CHANNELMIXER_H__ -#define __DRUMGIZMO_CHANNELMIXER_H__ +#pragma once #include <map> #include "channel.h" -class MixerSettings { +class MixerSettings +{ public: - float gain; - Channel *output; + float gain; + const Channel* output; }; -class ChannelMixer { +class ChannelMixer +{ public: - ChannelMixer(Channels &channels, - Channel *defaultchannel = NULL, float defaultgain = 1.0); + ChannelMixer(const Channels& channels, + const Channel* defaultchannel = nullptr, float defaultgain = 1.0); - MixerSettings &lookup(InstrumentChannel *channel); + MixerSettings& lookup(const InstrumentChannel& channel); - void setDefaults(Channel *defaultchannel, float defaultgain); + void setDefaults(const Channel* defaultchannel, float defaultgain); private: - std::map<InstrumentChannel *, MixerSettings> mix; + std::map<const InstrumentChannel*, MixerSettings> mix; - Channel *defaultchannel; - float defaultgain; + const Channel* defaultchannel; + float defaultgain; - Channels &channels; + const Channels& channels; }; - -#endif/*__DRUMGIZMO_CHANNELMIXER_H__*/ |