2024-10-09 02:01:23 +02:00
|
|
|
#pragma once
|
|
|
|
|
#include <libremidi/api.hpp>
|
|
|
|
|
#include <libremidi/config.hpp>
|
2024-10-28 19:24:18 +01:00
|
|
|
#include <libremidi/error_handler.hpp>
|
2026-06-23 00:05:41 +02:00
|
|
|
#include <libremidi/observer_configuration.hpp>
|
2024-10-09 02:01:23 +02:00
|
|
|
|
|
|
|
|
#include <memory>
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
2026-06-23 00:05:41 +02:00
|
|
|
NAMESPACE_LIBREMIDI
|
2024-10-09 02:01:23 +02:00
|
|
|
{
|
|
|
|
|
class observer_api
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
virtual ~observer_api() = default;
|
|
|
|
|
|
|
|
|
|
virtual libremidi::API get_current_api() const noexcept = 0;
|
|
|
|
|
virtual std::vector<libremidi::input_port> get_input_ports() const noexcept = 0;
|
|
|
|
|
virtual std::vector<libremidi::output_port> get_output_ports() const noexcept = 0;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
template <typename T, typename Arg>
|
|
|
|
|
std::unique_ptr<observer_api> make(libremidi::observer_configuration&& conf, Arg&& arg)
|
|
|
|
|
{
|
|
|
|
|
return std::make_unique<T>(std::move(conf), std::move(arg));
|
|
|
|
|
}
|
|
|
|
|
}
|