MIDIDecoder: Make readContinuedValue an internal function

This doesn't rely on any member state, so it can be decoupled from the
interface entirely.
This commit is contained in:
Lioncash 2019-08-24 22:39:10 -04:00
parent 4d1c7d444d
commit 64fbb923ca
2 changed files with 6 additions and 7 deletions

View File

@ -9,8 +9,6 @@ class IMIDIReader;
class MIDIDecoder { class MIDIDecoder {
IMIDIReader& m_out; IMIDIReader& m_out;
uint8_t m_status = 0; uint8_t m_status = 0;
bool _readContinuedValue(std::vector<uint8_t>::const_iterator& it, std::vector<uint8_t>::const_iterator end,
uint32_t& valOut);
public: public:
MIDIDecoder(IMIDIReader& out) : m_out(out) {} MIDIDecoder(IMIDIReader& out) : m_out(out) {}

View File

@ -7,11 +7,11 @@
namespace boo { namespace boo {
namespace {
constexpr uint8_t clamp7(uint8_t val) { return std::max(0, std::min(127, int(val))); } constexpr uint8_t clamp7(uint8_t val) { return std::max(0, std::min(127, int(val))); }
bool MIDIDecoder::_readContinuedValue(std::vector<uint8_t>::const_iterator& it, bool readContinuedValue(std::vector<uint8_t>::const_iterator& it, std::vector<uint8_t>::const_iterator end,
std::vector<uint8_t>::const_iterator end, uint32_t& valOut) { uint32_t& valOut) {
uint8_t a = *it++; uint8_t a = *it++;
valOut = a & 0x7f; valOut = a & 0x7f;
@ -33,6 +33,7 @@ bool MIDIDecoder::_readContinuedValue(std::vector<uint8_t>::const_iterator& it,
return true; return true;
} }
} // Anonymous namespace
std::vector<uint8_t>::const_iterator MIDIDecoder::receiveBytes(std::vector<uint8_t>::const_iterator begin, std::vector<uint8_t>::const_iterator MIDIDecoder::receiveBytes(std::vector<uint8_t>::const_iterator begin,
std::vector<uint8_t>::const_iterator end) { std::vector<uint8_t>::const_iterator end) {
@ -52,7 +53,7 @@ std::vector<uint8_t>::const_iterator MIDIDecoder::receiveBytes(std::vector<uint8
a = *it++; a = *it++;
uint32_t length; uint32_t length;
_readContinuedValue(it, end, length); readContinuedValue(it, end, length);
it += length; it += length;
} else { } else {
uint8_t chan = m_status & 0xf; uint8_t chan = m_status & 0xf;
@ -125,7 +126,7 @@ std::vector<uint8_t>::const_iterator MIDIDecoder::receiveBytes(std::vector<uint8
switch (Status(m_status & 0xff)) { switch (Status(m_status & 0xff)) {
case Status::SysEx: { case Status::SysEx: {
uint32_t len; uint32_t len;
if (!_readContinuedValue(it, end, len) || end - it < len) if (!readContinuedValue(it, end, len) || end - it < len)
return begin; return begin;
m_out.sysex(&*it, len); m_out.sysex(&*it, len);
break; break;