paulxstretch/deps/clap-juce-extensions/clap-libs/clap-helpers/include/clap/helpers/host-proxy.hh
essej 7fe70ed89b git subrepo clone (merge) https://github.com/free-audio/clap-helpers.git deps/clap-juce-extensions/clap-libs/clap-helpers
subrepo:
  subdir:   "deps/clap-juce-extensions/clap-libs/clap-helpers"
  merged:   "2bb43c187"
upstream:
  origin:   "https://github.com/free-audio/clap-helpers.git"
  branch:   "main"
  commit:   "2bb43c187"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo.git"
  commit:   "2f68596"
2022-06-14 21:35:21 -04:00

170 lines
6.1 KiB
C++

#pragma once
#include <string>
#include <clap/clap.h>
#include "checking-level.hh"
#include "misbehaviour-handler.hh"
namespace clap { namespace helpers {
template <MisbehaviourHandler h, CheckingLevel l>
class HostProxy {
public:
HostProxy(const clap_host *host);
void init();
///////////////
// clap_host //
///////////////
template <typename T>
void getExtension(const T *&ptr, const char *id) noexcept;
void requestCallback() noexcept;
void requestRestart() noexcept;
void requestProcess() noexcept;
///////////////////
// clap_host_log //
///////////////////
bool canUseHostLog() const noexcept;
void log(clap_log_severity severity, const char *msg) const noexcept;
void hostMisbehaving(const char *msg) const noexcept;
void hostMisbehaving(const std::string &msg) const noexcept { hostMisbehaving(msg.c_str()); }
void pluginMisbehaving(const char *msg) const noexcept;
void pluginMisbehaving(const std::string &msg) const noexcept {
pluginMisbehaving(msg.c_str());
}
////////////////////////////
// clap_host_thread_check //
////////////////////////////
bool canUseThreadCheck() const noexcept;
bool isMainThread() const noexcept;
bool isAudioThread() const noexcept;
//////////////////////////////////
// clap_host_audio_ports_config //
//////////////////////////////////
bool canUseAudioPortsConfig() const noexcept;
void audioPortsConfigRescan() const noexcept;
///////////////////////////
// clap_host_audio_ports //
///////////////////////////
bool canUseAudioPorts() const noexcept;
void audioPortsRescan(uint32_t flags) const noexcept;
//////////////////////////
// clap_host_note_ports //
//////////////////////////
bool canUseNotePorts() const noexcept;
void notePortsRescan(uint32_t flags) const noexcept;
/////////////////////
// clap_host_state //
/////////////////////
bool canUseState() const noexcept;
void stateMarkDirty() const noexcept;
///////////////////////
// clap_host_latency //
///////////////////////
bool canUseLatency() const noexcept;
void latencyChanged() const noexcept;
////////////////////
// clap_host_tail //
////////////////////
bool canUseTail() const noexcept;
void tailChanged() const noexcept;
/////////////////////////
// clap_host_note_name //
/////////////////////////
bool canUseNoteName() const noexcept;
void noteNameChanged() const noexcept;
//////////////////////
// clap_host_params //
//////////////////////
bool canUseParams() const noexcept;
void paramsRescan(clap_param_rescan_flags flags) const noexcept;
void paramsClear(clap_id param_id, clap_param_clear_flags flags) const noexcept;
void paramsRequestFlush() const noexcept;
//////////////////////////
// clap_host_track_info //
//////////////////////////
bool canUseTrackInfo() const noexcept;
bool trackInfoGet(clap_track_info *info) const noexcept;
///////////////////
// clap_host_gui //
///////////////////
bool canUseGui() const noexcept;
bool guiRequestResize(uint32_t width, uint32_t height) const noexcept;
bool guiRequestShow() const noexcept;
bool guiRequestHide() const noexcept;
void guiClosed(bool wasDestroyed) const noexcept;
/////////////////////////////
// clap_host_timer_support //
/////////////////////////////
bool canUseTimerSupport() const noexcept;
bool timerSupportRegister(uint32_t period_ms, clap_id *timer_id) const noexcept;
bool timerSupportUnregister(clap_id timer_id) const noexcept;
//////////////////////////
// clap_host_fd_support //
//////////////////////////
bool canUsePosixFdSupport() const noexcept;
bool posixFdSupportRegister(int fd, int flags) const noexcept;
bool posixFdSupportModify(int fd, int flags) const noexcept;
bool posixFdSupportUnregister(int fd) const noexcept;
//////////////////////////////
// clap_host_quick_controls //
//////////////////////////////
bool canUseQuickControls() const noexcept;
void quickControlsChanged() const noexcept;
void quickControlsSuggestPage(clap_id page_id) const noexcept;
///////////////////////////
// clap_host_thread_pool //
///////////////////////////
bool canUseThreadPool() const noexcept;
bool threadPoolRequestExec(uint32_t numTasks) const noexcept;
//////////////////////////
// clap_host_voice_info //
//////////////////////////
bool canUseVoiceInfo() const noexcept;
void voiceInfoChanged() const noexcept;
protected:
void ensureMainThread(const char *method) const noexcept;
void ensureAudioThread(const char *method) const noexcept;
const clap_host *const _host;
const clap_host_log *_hostLog = nullptr;
const clap_host_thread_check *_hostThreadCheck = nullptr;
const clap_host_thread_pool *_hostThreadPool = nullptr;
const clap_host_audio_ports *_hostAudioPorts = nullptr;
const clap_host_audio_ports_config *_hostAudioPortsConfig = nullptr;
const clap_host_note_ports *_hostNotePorts = nullptr;
const clap_host_file_reference *_hostFileReference = nullptr;
const clap_host_latency *_hostLatency = nullptr;
const clap_host_gui *_hostGui = nullptr;
const clap_host_timer_support *_hostTimerSupport = nullptr;
const clap_host_posix_fd_support *_hostPosixFdSupport = nullptr;
const clap_host_params *_hostParams = nullptr;
const clap_host_track_info *_hostTrackInfo = nullptr;
const clap_host_state *_hostState = nullptr;
const clap_host_note_name *_hostNoteName = nullptr;
const clap_host_quick_controls *_hostQuickControls = nullptr;
const clap_host_voice_info *_hostVoiceInfo = nullptr;
const clap_host_tail *_hostTail = nullptr;
};
}} // namespace clap::helpers