From 90cf32becc608fdd1a5e9bf815e040d7fb71b819 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Gl=C3=B6ckner?= Date: Tue, 29 Mar 2016 10:43:00 +0200 Subject: refactored class ChannelMixer --- src/channelmixer.cc | 95 ++++++++++++++++++++++++++++------------------------- 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::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 #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 mix; + std::map mix; - Channel *defaultchannel; - float defaultgain; + const Channel* defaultchannel; + float defaultgain; - Channels &channels; + const Channels& channels; }; - -#endif/*__DRUMGIZMO_CHANNELMIXER_H__*/ -- cgit v1.2.3