Audacity 3.2.0
Public Member Functions | Private Attributes | List of all members
internal::ParameterChanges Class Referencefinal

#include <ParameterChanges.h>

Inheritance diagram for internal::ParameterChanges:
[legend]
Collaboration diagram for internal::ParameterChanges:
[legend]

Public Member Functions

 ParameterChanges ()
 
virtual ~ParameterChanges ()
 
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
 
void clear ()
 

Private Attributes

std::vector< ParameterQueuePool::ParameterValueQueuePtrmParamQueues
 

Detailed Description

Implements IParameterChanges, uses ParameterQueuePool internally to avoid unnecessary allocations. Though both getParameterData and addParameterData return pointers to shared objects, it's not recommended to store them, because they are pointers to temporary objects.

Definition at line 29 of file ParameterChanges.h.

Constructor & Destructor Documentation

◆ ParameterChanges()

internal::ParameterChanges::ParameterChanges ( )

Definition at line 18 of file ParameterChanges.cpp.

19{
20 FUNKNOWN_CTOR
21}

◆ ~ParameterChanges()

internal::ParameterChanges::~ParameterChanges ( )
virtual

Definition at line 23 of file ParameterChanges.cpp.

24{
25 clear();
26 FUNKNOWN_DTOR;
27}

Member Function Documentation

◆ addParameterData()

Steinberg::Vst::IParamValueQueue * internal::ParameterChanges::addParameterData ( const Steinberg::Vst::ParamID &  id,
Steinberg::int32 &  index 
)
override

Definition at line 41 of file ParameterChanges.cpp.

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}
std::vector< ParameterQueuePool::ParameterValueQueuePtr > mParamQueues
static ParameterQueuePool & Instance()
ParameterValueQueuePtr Get(Steinberg::Vst::ParamID id)

References internal::ParameterQueuePool::Get(), and internal::ParameterQueuePool::Instance().

Here is the call graph for this function:

◆ clear()

void internal::ParameterChanges::clear ( )

Definition at line 62 of file ParameterChanges.cpp.

63{
64 mParamQueues.clear();
65}

◆ getParameterCount()

Steinberg::int32 internal::ParameterChanges::getParameterCount ( )
override

Definition at line 29 of file ParameterChanges.cpp.

30{
31 return static_cast<Steinberg::int32>(mParamQueues.size());
32}

◆ getParameterData()

Steinberg::Vst::IParamValueQueue * internal::ParameterChanges::getParameterData ( Steinberg::int32  index)
override

Definition at line 34 of file ParameterChanges.cpp.

35{
36 if(index >= 0 && index < mParamQueues.size())
37 return mParamQueues[index].get();
38 return nullptr;
39}

Member Data Documentation

◆ mParamQueues

std::vector<ParameterQueuePool::ParameterValueQueuePtr> internal::ParameterChanges::mParamQueues
private

Definition at line 31 of file ParameterChanges.h.


The documentation for this class was generated from the following files: