Line data Source code
1 : #include "MIDIAddress.hpp" 2 : 3 : BEGIN_CS_NAMESPACE 4 : 5 32 : RelativeMIDIAddress &RelativeMIDIAddress::operator+=(RelativeMIDIAddress that) { 6 32 : this->addresses.valid &= that.addresses.valid; 7 32 : this->addresses.address += that.addresses.address; 8 32 : this->addresses.channel += that.addresses.channel; 9 32 : this->addresses.cableNumber += that.addresses.cableNumber; 10 32 : return *this; 11 : } 12 : 13 68 : MIDIAddress &MIDIAddress::operator+=(RelativeMIDIAddress rhs) { 14 68 : this->addresses.valid &= rhs.addresses.valid; 15 68 : this->addresses.address += rhs.addresses.address; 16 68 : this->addresses.channel += rhs.addresses.channel; 17 68 : this->addresses.cableNumber += rhs.addresses.cableNumber; 18 68 : return *this; 19 : } 20 : 21 4 : MIDIAddress &MIDIAddress::operator-=(RelativeMIDIAddress rhs) { 22 4 : this->addresses.valid &= rhs.addresses.valid; 23 4 : this->addresses.address -= rhs.addresses.address; 24 4 : this->addresses.channel -= rhs.addresses.channel; 25 4 : this->addresses.cableNumber -= rhs.addresses.cableNumber; 26 4 : return *this; 27 : } 28 : 29 48 : MIDIAddress MIDIAddress::operator+(RelativeMIDIAddress rhs) const { 30 48 : MIDIAddress copy = *this; 31 48 : copy += rhs; 32 48 : return copy; 33 : } 34 : 35 1 : MIDIAddress MIDIAddress::operator-(RelativeMIDIAddress rhs) const { 36 1 : MIDIAddress copy = *this; 37 1 : copy -= rhs; 38 1 : return copy; 39 : } 40 : 41 96 : bool MIDIAddress::matchAddressInRange(MIDIAddress toMatch, MIDIAddress base, 42 : uint8_t length) { 43 96 : bool valid = base.addresses.valid && toMatch.addresses.valid; 44 96 : bool addressInRange = 45 191 : base.addresses.address <= toMatch.addresses.address && 46 95 : base.addresses.address + length > toMatch.addresses.address; 47 96 : bool equalChannelAndCN = 48 192 : base.addresses.channel == toMatch.addresses.channel && 49 96 : base.addresses.cableNumber == toMatch.addresses.cableNumber; 50 96 : return valid && addressInRange && equalChannelAndCN; 51 : } 52 : 53 : END_CS_NAMESPACE