Control Surface
main
MIDI Control Surface library for Arduino
Toggle main menu visibility
Loading...
Searching...
No Matches
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
Def.hpp
setting_t
uint8_t setting_t
The type used for Selectors.
Definition
Def.hpp:53
Error.hpp
ERROR
#define ERROR(msg, errc)
Definition
Error.hpp:19
END_CS_NAMESPACE
#define END_CS_NAMESPACE
Definition
Settings/NamespaceSettings.hpp:14
BEGIN_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
Definition
Settings/NamespaceSettings.hpp:11
Selectable::initialSelection
setting_t initialSelection
Definition
Selectable.hpp:40
Selectable::getInitialSelection
setting_t getInitialSelection() const
Definition
Selectable.hpp:33
Selectable::Selectable
Selectable(setting_t initialSelection=0)
Definition
Selectable.hpp:13
Selectable::setInitialSelection
void setInitialSelection(setting_t initialSelection)
Definition
Selectable.hpp:35
Selectable::validateSetting
static setting_t validateSetting(setting_t setting)
Definition
Selectable.hpp:19
Selectable::select
virtual void select(setting_t setting)=0
Generated by
1.17.0