Audacity 3.2.0
Public Types | Public Member Functions | Public Attributes | List of all members
anonymous_namespace{VSTEffect.cpp}::VSTEffectMessage Struct Reference
Inheritance diagram for anonymous_namespace{VSTEffect.cpp}::VSTEffectMessage:
[legend]
Collaboration diagram for anonymous_namespace{VSTEffect.cpp}::VSTEffectMessage:
[legend]

Public Types

using ParamVector = std::vector< std::optional< double > >
 

Public Member Functions

 VSTEffectMessage (std::vector< char > chunk, ParamVector params)
 
 VSTEffectMessage (int id, double value, size_t numParams)
 
 ~VSTEffectMessage () override
 
std::unique_ptr< Message > Clone () const override
 
void Assign (Message &&src) override
 
void Merge (Message &&src) override
 
- Public Member Functions inherited from EffectSettingsAccess::Message
virtual ~Message ()
 
virtual std::unique_ptr< MessageClone () const =0
 
virtual void Assign (Message &&src)=0
 Update one Message object from another, which is then left "empty". More...
 
virtual void Merge (Message &&src)=0
 Combine one Message object with another, which is then left "empty". More...
 

Public Attributes

std::vector< char > mChunk
 
ParamVector mParamsVec
 

Detailed Description

Definition at line 921 of file VSTEffect.cpp.

Member Typedef Documentation

◆ ParamVector

using anonymous_namespace{VSTEffect.cpp}::VSTEffectMessage::ParamVector = std::vector<std::optional<double> >

Definition at line 923 of file VSTEffect.cpp.

Constructor & Destructor Documentation

◆ VSTEffectMessage() [1/2]

anonymous_namespace{VSTEffect.cpp}::VSTEffectMessage::VSTEffectMessage ( std::vector< char >  chunk,
ParamVector  params 
)
inlineexplicit

Definition at line 926 of file VSTEffect.cpp.

927 : mChunk(std::move(chunk)),
928 mParamsVec(std::move(params))
929 {
930 }
EffectDistortionSettings params
Definition: Distortion.cpp:77

◆ VSTEffectMessage() [2/2]

anonymous_namespace{VSTEffect.cpp}::VSTEffectMessage::VSTEffectMessage ( int  id,
double  value,
size_t  numParams 
)
inlineexplicit

Definition at line 933 of file VSTEffect.cpp.

934 {
935 mParamsVec.resize(numParams, std::nullopt);
936 if (id < numParams)
937 mParamsVec[id] = value;
938 }
int id

References id.

◆ ~VSTEffectMessage()

VSTEffectMessage::~VSTEffectMessage ( )
overridedefault

Member Function Documentation

◆ Assign()

void VSTEffectMessage::Assign ( Message &&  src)
override

Definition at line 965 of file VSTEffect.cpp.

966{
967 VSTEffectMessage& vstSrc = static_cast<VSTEffectMessage&>(src);
968
969 mChunk = vstSrc.mChunk;
970 vstSrc.mChunk.resize(0); // capacity will be preserved though
971
972 assert(mParamsVec.size() == vstSrc.mParamsVec.size());
973
974 for (size_t i = 0; i < mParamsVec.size(); i++)
975 {
976 mParamsVec[i] = vstSrc.mParamsVec[i];
977
978 // consume the source value
979 vstSrc.mParamsVec[i] = std::nullopt;
980 }
981}
VSTEffectMessage(std::vector< char > chunk, ParamVector params)
Definition: VSTEffect.cpp:926

References mChunk, and mParamsVec.

◆ Clone()

auto VSTEffectMessage::Clone ( ) const
overridevirtual

Implements EffectSettingsAccess::Message.

Definition at line 956 of file VSTEffect.cpp.

957{
958 auto result = std::make_unique<VSTEffectMessage>(*this);
959 // Make sure of the chunk capacity
960 result->mChunk.reserve(this->mChunk.capacity());
961
962 return result;
963}

◆ Merge()

void VSTEffectMessage::Merge ( Message &&  src)
override

Definition at line 983 of file VSTEffect.cpp.

984{
985 VSTEffectMessage& vstSrc = static_cast<VSTEffectMessage&>(src);
986
987 bool chunkWasAssigned = false;
988
989 if ( ! vstSrc.mChunk.empty() )
990 {
991 mChunk = vstSrc.mChunk;
992 chunkWasAssigned = true;
993 }
994
995 vstSrc.mChunk.resize(0); // capacity will be preserved though
996
997 assert(mParamsVec.size() == vstSrc.mParamsVec.size());
998
999 for (size_t i = 0; i < mParamsVec.size(); i++)
1000 {
1001 if (chunkWasAssigned)
1002 {
1003 mParamsVec[i] = vstSrc.mParamsVec[i];
1004 }
1005 else
1006 {
1007 // if src val is nullopt, do not copy it to dest
1008 if (vstSrc.mParamsVec[i] != std::nullopt)
1009 {
1010 mParamsVec[i] = vstSrc.mParamsVec[i];
1011 }
1012 }
1013
1014 // consume the source value
1015 vstSrc.mParamsVec[i] = std::nullopt;
1016 }
1017
1018}

References mChunk, and mParamsVec.

Member Data Documentation

◆ mChunk

std::vector<char> anonymous_namespace{VSTEffect.cpp}::VSTEffectMessage::mChunk

Definition at line 947 of file VSTEffect.cpp.

Referenced by Assign(), and Merge().

◆ mParamsVec

ParamVector anonymous_namespace{VSTEffect.cpp}::VSTEffectMessage::mParamsVec

Definition at line 948 of file VSTEffect.cpp.

Referenced by Assign(), and Merge().


The documentation for this struct was generated from the following file: