1#ifndef MCC_INTERVAL_INTERVAL_NUMBER_H
2#define MCC_INTERVAL_INTERVAL_NUMBER_H
4#include <MCC_BuildSettings.h>
42 : _value((value >= 1 && value <=
Maximum)
43 ?
static_cast<uint16_t
>(value)
53 constexpr uint16_t
Value() const noexcept {
return _value; }
67 if (!
IsValid() || _value <= 8) {
79 return simple == 1 || simple == 4 || simple == 5 || simple == 8;
95 return a._value == b._value;
104 return a._value < b._value;
1-based interval number: 1 unison, 3 third, 8 octave, 10 tenth (SPEC-INT-2, SPEC-INT-3).
Definition IntervalNumber.h:19
constexpr bool IsSimple() const noexcept
Returns true for numbers 1-8 (SPEC-INT-3).
Definition IntervalNumber.h:56
static constexpr uint16_t Maximum
Widest number: Cbbbb-128 to B####127 spans 1791 steps.
Definition IntervalNumber.h:22
constexpr bool IsCompound() const noexcept
Returns true for numbers above 8 (SPEC-INT-3).
Definition IntervalNumber.h:59
static constexpr IntervalNumber Invalid() noexcept
Returns the invalid number.
Definition IntervalNumber.h:47
constexpr IntervalNumber() noexcept
Creates the invalid number (SPEC-ERR-2).
Definition IntervalNumber.h:35
constexpr IntervalNumber(int32_t value) noexcept
Creates the number value; values outside [1, Maximum] produce the invalid number (SPEC-ERR-3).
Definition IntervalNumber.h:41
friend constexpr bool operator==(IntervalNumber a, IntervalNumber b) noexcept
Equality; all invalid numbers are equal (SPEC-ERR-6).
Definition IntervalNumber.h:94
MCC_CONSTEXPR14 bool IsPerfectType() const noexcept
Returns true when the simple number is a unison, fourth, fifth or octave, which take perfect qualitie...
Definition IntervalNumber.h:77
static constexpr uint16_t InvalidValue
Sentinel returned by Value() for the invalid number (SPEC-ERR-7). Do not rely on it; check IsValid().
Definition IntervalNumber.h:28
MCC_CONSTEXPR14 IntervalNumber Inverted() const noexcept
Returns the inverted simple number, 9 - Simple() (SPEC-INT-6).
Definition IntervalNumber.h:86
constexpr uint16_t Value() const noexcept
Returns the number, or InvalidValue (SPEC-ERR-7).
Definition IntervalNumber.h:53
constexpr bool IsValid() const noexcept
Returns true unless this is the invalid number.
Definition IntervalNumber.h:50
MCC_CONSTEXPR14 IntervalNumber Simple() const noexcept
Returns the simple number obtained by removing octaves (SPEC-INT-3): 9 -> 2, 10 -> 3,...
Definition IntervalNumber.h:66
friend constexpr bool operator<(IntervalNumber a, IntervalNumber b) noexcept
Orders by value; the invalid number sorts last.
Definition IntervalNumber.h:103
Music Composition Core public namespace.
Definition Version.h:4