5#ifndef MOSTLYHARMLESS_MOSTLYHARMLESS_ISHAREDSTATE_H
6#define MOSTLYHARMLESS_MOSTLYHARMLESS_ISHAREDSTATE_H
7#include <mostly_harmless/core/mostlyharmless_SharedStateContext.h>
10#include <marvin/containers/marvin_FIFO.h>
12#include <unordered_map>
78 virtual
void loadState(std::string_view loadedData) = 0;
84 virtual
void saveState(std::ostringstream& dest) = 0;
115 SharedStateContext m_context;
117 std::unordered_map<std::uint32_t,
Parameter<
float>*> m_paramLookup;
118 marvin::containers::fifos::MPMC<
events::ProcToGuiParamEvent> m_procToGuiQueue;
119 marvin::containers::fifos::SPSC<
events::GuiToProcParamEvent> m_guiToProcQueue;
marvin::containers::fifos::SPSC< events::GuiToProcParamEvent > & getGuiToProcQueue() noexcept
virtual void loadState(std::string_view loadedData)=0
Parameter< float > * getParameterById(mostly_harmless::ParameterID parameterId)
ISharedState(SharedStateContext &&context, std::vector< Parameter< float > > &¶ms)
void rescanParams() const
std::span< Parameter< float > > getRawParameterView() noexcept
virtual ~ISharedState() noexcept=default
void requestParamFlush() const
Parameter< float > * getParameterByIndex(std::uint32_t index) noexcept
std::uint32_t getNumParams() const noexcept
void runOnMainThread(std::function< void(void)> &&toRun) const
marvin::containers::fifos::MPMC< events::ProcToGuiParamEvent > & getProcToGuiQueue() noexcept
virtual void saveState(std::ostringstream &dest)=0
Contains core functionality of the framework.
Definition mostlyharmless_PluginBase.h:15
Contains classes and functions related to events.
Definition mostlyharmless_InputEventContext.h:4
The top-level namespace, contains all things plugin-related.
Definition mostlyharmless_BusConfig.h:3
Convenience class for generating a parameter id.
Definition mostlyharmless_Parameters.h:15
Container class for a single parameter.
Definition mostlyharmless_Parameters.h:41