Control Surface
main
MIDI Control Surface library for Arduino
Toggle main menu visibility
Loading...
Searching...
No Matches
src
MIDI_Interfaces
MIDI_Staller.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <
Settings/SettingsWrapper.hpp
>
4
#if !DISABLE_PIPES
5
6
#include <AH/STL/utility>
// std::forward
7
#include <
Settings/NamespaceSettings.hpp
>
8
9
BEGIN_CS_NAMESPACE
10
12
struct
MIDIStaller
{
13
virtual
~MIDIStaller
() =
default
;
15
virtual
const
char
*
getName
()
const
{
return
"<?>"
; }
18
virtual
void
handleStall
() = 0;
19
22
static
const
char
*
getNameNull
(
MIDIStaller
*s);
23
};
24
29
template
<
class
Callback>
30
auto
makeMIDIStaller
(Callback &&callback) ->
MIDIStaller
* {
31
32
struct
AutoCleanupMIDIStaller :
MIDIStaller
{
33
AutoCleanupMIDIStaller(Callback &&callback)
34
: callback(std::forward<Callback>(callback)) {}
35
36
void
handleStall
()
override
{
37
callback(
this
);
38
delete
this
;
39
}
40
41
Callback callback;
42
};
43
return
new
AutoCleanupMIDIStaller(std::forward<Callback>(callback));
44
}
45
46
END_CS_NAMESPACE
47
48
#else
49
50
BEGIN_CS_NAMESPACE
51
52
struct
MIDIStaller
{};
53
54
END_CS_NAMESPACE
55
56
#endif
makeMIDIStaller
auto makeMIDIStaller(Callback &&callback) -> MIDIStaller *
Allocate a MIDIStaller that executes the given callback and deletes itself when handleStall is called...
Definition
MIDI_Staller.hpp:30
NamespaceSettings.hpp
END_CS_NAMESPACE
#define END_CS_NAMESPACE
Definition
Settings/NamespaceSettings.hpp:14
BEGIN_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
Definition
Settings/NamespaceSettings.hpp:11
SettingsWrapper.hpp
MIDIStaller
Struct that can cause a MIDI_Pipe to be stalled.
Definition
MIDI_Staller.hpp:12
MIDIStaller::getName
virtual const char * getName() const
Get the staller's name for debugging purposes.
Definition
MIDI_Staller.hpp:15
MIDIStaller::handleStall
virtual void handleStall()=0
Call back that should finish any MIDI messages that are in progress, and un-stall the pipe or MIDI so...
MIDIStaller::~MIDIStaller
virtual ~MIDIStaller()=default
MIDIStaller::getNameNull
static const char * getNameNull(MIDIStaller *s)
Get the staller's name for debugging purposes.
Definition
MIDI_Pipes.cpp:357
Generated by
1.17.0