Audacity 3.2.0
ParameterChanges.cpp
Go to the documentation of this file.
1/**********************************************************************
2
3 Audacity: A Digital Audio Editor
4
5 @file ParameterChanges.cpp
6
7 @author Vitaly Sverchinsky
8
9 @brief Part of Audacity VST3 module
10
11**********************************************************************/
12
13#include "ParameterChanges.h"
14
15#include "ParameterQueuePool.h"
16
17
19{
20 FUNKNOWN_CTOR
21}
22
24{
25 clear();
26 FUNKNOWN_DTOR;
27}
28
30{
31 return static_cast<Steinberg::int32>(mParamQueues.size());
32}
33
34Steinberg::Vst::IParamValueQueue* internal::ParameterChanges::getParameterData(Steinberg::int32 index)
35{
36 if(index >= 0 && index < mParamQueues.size())
37 return mParamQueues[index].get();
38 return nullptr;
39}
40
41Steinberg::Vst::IParamValueQueue* internal::ParameterChanges::addParameterData(const Steinberg::Vst::ParamID& id,
42 Steinberg::int32& index)
43{
44 using namespace Steinberg;
45 {
46 for(int32 i = 0, count = static_cast<int32>(mParamQueues.size()); i < count; ++i)
47 {
48 auto& queue = mParamQueues[i];
49 if(queue->getParameterId() == id)
50 {
51 index = i;
52 return queue.get();
53 }
54 }
55 }
56 auto queue = ParameterQueuePool::Instance().Get(id);
57 index = static_cast<int32>(mParamQueues.size());
58 mParamQueues.push_back(std::move(queue));
59 return mParamQueues.back().get();
60}
61
63{
64 mParamQueues.clear();
65}
66
67IMPLEMENT_FUNKNOWN_METHODS(internal::ParameterChanges, Steinberg::Vst::IParameterChanges,
68 Steinberg::Vst::IParameterChanges::iid)
IMPLEMENT_FUNKNOWN_METHODS(internal::ConnectionProxy, Steinberg::Vst::IConnectionPoint, Steinberg::Vst::IConnectionPoint::iid)
Steinberg::int32 PLUGIN_API getParameterCount() override
Steinberg::Vst::IParamValueQueue *PLUGIN_API getParameterData(Steinberg::int32 index) override
Steinberg::Vst::IParamValueQueue *PLUGIN_API addParameterData(const Steinberg::Vst::ParamID &id, Steinberg::int32 &index) override
static ParameterQueuePool & Instance()
ParameterValueQueuePtr Get(Steinberg::Vst::ParamID id)