Control Surface  1.1.1
MIDI Control Surface library for Arduino
MIDICNChannelAddress.cpp
Go to the documentation of this file.
2 
4 
7  if (!this->isValid() || !rhs.isValid()) {
8  this->addresses.valid = false;
9  } else {
10  this->addresses.address += rhs.addresses.address;
11  this->addresses.channel += rhs.addresses.channel;
12  this->addresses.cableNumber += rhs.addresses.cableNumber;
13  }
14  return *this;
15 }
16 
19  if (!this->isValid() || !rhs.isValid()) {
20  this->addresses.valid = false;
21  } else {
22  this->addresses.address -= rhs.addresses.address;
23  this->addresses.channel -= rhs.addresses.channel;
24  this->addresses.cableNumber -= rhs.addresses.cableNumber;
25  }
26  return *this;
27 }
28 
31  MIDICNChannelAddress copy = *this;
32  copy += rhs;
33  return copy;
34 }
35 
38  MIDICNChannelAddress copy = *this;
39  copy -= rhs;
40  return copy;
41 }
42 
44  const MIDICNChannelAddress &base) {
45  return base == toMatch;
46 }
47 
49  const MIDICNChannelAddress &toMatch, const MIDICNChannelAddress &base,
50  uint8_t length) {
51  bool valid = base.addresses.valid && toMatch.addresses.valid;
52  bool addressInRange =
53  base.addresses.address <= toMatch.addresses.address &&
54  base.addresses.address + length > toMatch.addresses.address;
55  bool equalChannelAndCN =
56  base.addresses.channel == toMatch.addresses.channel &&
57  base.addresses.cableNumber == toMatch.addresses.cableNumber;
58  return valid && addressInRange && equalChannelAndCN;
59 }
60 
MIDICNChannelAddress::operator-
MIDICNChannelAddress operator-(const RelativeMIDICNChannelAddress &rhs) const
Definition: MIDICNChannelAddress.cpp:37
RelativeMIDICNChannelAddress::addresses
RawMIDICNChannelAddress addresses
Definition: MIDICNChannelAddress.hpp:75
MIDICNChannelAddress::matchAddressInRange
static bool matchAddressInRange(const MIDICNChannelAddress &toMatch, const MIDICNChannelAddress &base, uint8_t length)
Check if an address falls within a range of addresses, starting with address base,...
Definition: MIDICNChannelAddress.cpp:48
MIDICNChannelAddress.hpp
BEGIN_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
Definition: Settings/NamespaceSettings.hpp:9
RelativeMIDICNChannelAddress
A class for saving an offset to a MIDI address.
Definition: MIDICNChannelAddress.hpp:58
END_CS_NAMESPACE
#define END_CS_NAMESPACE
Definition: Settings/NamespaceSettings.hpp:10
MIDICNChannelAddress::matchSingle
static bool matchSingle(const MIDICNChannelAddress &toMatch, const MIDICNChannelAddress &base)
Check if two addresses match.
Definition: MIDICNChannelAddress.cpp:43
MIDICNChannelAddress
A type-safe utility class for saving a MIDI address consisting of a 7-bit address,...
Definition: MIDICNChannelAddress.hpp:82
MIDICNChannelAddress::isValid
constexpr bool isValid() const
Check if the MIDI address is valid.
Definition: MIDICNChannelAddress.hpp:154
MIDICNChannelAddress::addresses
RawMIDICNChannelAddress addresses
Definition: MIDICNChannelAddress.hpp:173
MIDICNChannelAddress::operator-=
MIDICNChannelAddress & operator-=(const RelativeMIDICNChannelAddress &rhs)
Definition: MIDICNChannelAddress.cpp:18
MIDICNChannelAddress::operator+
MIDICNChannelAddress operator+(const RelativeMIDICNChannelAddress &rhs) const
Definition: MIDICNChannelAddress.cpp:30
MIDICNChannelAddress::operator+=
MIDICNChannelAddress & operator+=(const RelativeMIDICNChannelAddress &rhs)
Definition: MIDICNChannelAddress.cpp:6
RelativeMIDICNChannelAddress::isValid
constexpr bool isValid() const
Definition: MIDICNChannelAddress.hpp:72