Control Surface
1.1.1
MIDI Control Surface library for Arduino
src
Selectors
Selectable.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <
AH/Error/Error.hpp
>
4
#include <AH/STL/type_traits>
5
#include <
Def/Def.hpp
>
6
#include <stdint.h>
7
8
BEGIN_CS_NAMESPACE
9
10
template
<setting_t N>
// TODO: check bounds here?
11
class
Selectable
{
12
protected
:
13
Selectable
(
setting_t
initialSelection
= 0)
14
:
initialSelection
{
initialSelection
} {}
15
16
public
:
17
virtual
void
select
(
setting_t
setting) = 0;
18
19
static
setting_t
validateSetting
(
setting_t
setting) {
20
static_assert(std::is_unsigned<setting_t>::value,
21
"Error: setting_t should be an unsigned integer type."
);
22
if
(setting >= N) {
23
ERROR
(
F
(
"Error: Setting "
)
24
<< setting
25
<<
F
(
" is not less than the number of settings ("
) << N
26
<<
')'
,
27
0xFFFE);
28
return
N - 1;
29
}
30
return
setting;
31
}
32
33
setting_t
getInitialSelection
()
const
{
return
initialSelection
; }
34
35
void
setInitialSelection
(
setting_t
initialSelection
) {
36
this->initialSelection =
validateSetting
(
initialSelection
);
37
}
38
39
private
:
40
setting_t
initialSelection
;
41
};
42
43
END_CS_NAMESPACE
Selectable::setInitialSelection
void setInitialSelection(setting_t initialSelection)
Definition:
Selectable.hpp:35
Error.hpp
Selectable::getInitialSelection
setting_t getInitialSelection() const
Definition:
Selectable.hpp:33
Def.hpp
BEGIN_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
Definition:
Settings/NamespaceSettings.hpp:9
Selectable
Definition:
Selectable.hpp:11
END_CS_NAMESPACE
#define END_CS_NAMESPACE
Definition:
Settings/NamespaceSettings.hpp:10
Selectable::validateSetting
static setting_t validateSetting(setting_t setting)
Definition:
Selectable.hpp:19
ERROR
#define ERROR(msg, errc)
Print the error message and error code, and stop the execution if FATAL_ERRORS are enabled.
Definition:
Error.hpp:42
Selectable::Selectable
Selectable(setting_t initialSelection=0)
Definition:
Selectable.hpp:13
Selectable::select
virtual void select(setting_t setting)=0
Selectable::initialSelection
setting_t initialSelection
Definition:
Selectable.hpp:40
MIDI_Notes::F
constexpr int8_t F
Definition:
Notes.hpp:23
setting_t
uint8_t setting_t
The type used for Selectors.
Definition:
Def.hpp:50
Generated by
1.8.16