#pragma once #include #include #include #include #include namespace libremidi { class observer_api { public: virtual ~observer_api() = default; virtual libremidi::API get_current_api() const noexcept = 0; virtual std::vector get_input_ports() const noexcept = 0; virtual std::vector get_output_ports() const noexcept = 0; }; template std::unique_ptr make(libremidi::observer_configuration&& conf, Arg&& arg) { return std::make_unique(std::move(conf), std::move(arg)); } }