2024-10-09 02:01:23 +02:00
|
|
|
#pragma once
|
2026-06-23 00:05:41 +02:00
|
|
|
#include <libremidi/port_information.hpp>
|
2024-10-09 02:01:23 +02:00
|
|
|
|
2026-06-23 00:05:41 +02:00
|
|
|
NAMESPACE_LIBREMIDI
|
2024-10-09 02:01:23 +02:00
|
|
|
{
|
|
|
|
|
using input_port_callback = std::function<void(const input_port&)>;
|
|
|
|
|
using output_port_callback = std::function<void(const output_port&)>;
|
|
|
|
|
struct observer_configuration
|
|
|
|
|
{
|
|
|
|
|
midi_error_callback on_error{};
|
2024-10-28 19:24:18 +01:00
|
|
|
midi_warning_callback on_warning{};
|
2024-10-09 02:01:23 +02:00
|
|
|
|
2024-10-28 19:24:18 +01:00
|
|
|
input_port_callback input_added{};
|
|
|
|
|
input_port_callback input_removed{};
|
|
|
|
|
output_port_callback output_added{};
|
|
|
|
|
output_port_callback output_removed{};
|
2024-10-09 02:01:23 +02:00
|
|
|
|
|
|
|
|
// Observe hardware ports
|
|
|
|
|
uint32_t track_hardware : 1 = true;
|
|
|
|
|
|
|
|
|
|
// Observe software (virtual) ports if the API provides it
|
|
|
|
|
uint32_t track_virtual : 1 = false;
|
|
|
|
|
|
2026-06-23 00:05:41 +02:00
|
|
|
// Observe network ports if the API provides it
|
|
|
|
|
uint32_t track_network : 1 = false;
|
|
|
|
|
|
2024-10-09 02:01:23 +02:00
|
|
|
// Observe any port - some systems have other weird port types than hw / sw, this covers them
|
|
|
|
|
uint32_t track_any : 1 = false;
|
|
|
|
|
|
|
|
|
|
// Notify of the existing ports in the observer constructor
|
|
|
|
|
uint32_t notify_in_constructor : 1 = true;
|
|
|
|
|
|
|
|
|
|
bool has_callbacks() const noexcept
|
|
|
|
|
{
|
|
|
|
|
return input_added || input_removed || output_added || output_removed;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|