Browse Source

ExtensionsVisitor: use forward declared types instead of void* for format-specific pointers

v6.1.6
Attila Szarvas 4 years ago
parent
commit
50f3415885
4 changed files with 32 additions and 6 deletions
  1. +1
    -1
      modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm
  2. +1
    -1
      modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp
  3. +3
    -1
      modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp
  4. +27
    -3
      modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h

+ 1
- 1
modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm View File

@@ -892,7 +892,7 @@ public:
{
explicit Extensions (const AudioUnitPluginInstance* instanceIn) : instance (instanceIn) {}
void* getAudioUnitHandle() const noexcept override { return instance->audioUnit; }
AudioUnit getAudioUnitHandle() const noexcept override { return instance->audioUnit; }
const AudioUnitPluginInstance* instance = nullptr;
};


+ 1
- 1
modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp View File

@@ -2303,7 +2303,7 @@ public:
{
explicit Extensions (const VST3PluginInstance* instanceIn) : instance (instanceIn) {}
void* getIComponentPtr() const noexcept override { return instance->holder->component; }
Steinberg::Vst::IComponent* getIComponentPtr() const noexcept override { return instance->holder->component; }
MemoryBlock getPreset() const override { return instance->getStateForPresetFile(); }


+ 3
- 1
modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp View File

@@ -41,6 +41,8 @@ JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4996)
namespace Vst2
{
struct AEffect;
// If the following files cannot be found then you are probably trying to host
// VST2 plug-ins. To do this you must have a VST2 SDK in your header search
// paths or use the "VST (Legacy) SDK Folder" field in the Projucer. The VST2
@@ -1265,7 +1267,7 @@ struct VSTPluginInstance final : public AudioPluginInstance,
{
explicit Extensions (const VSTPluginInstance* instanceIn) : instance (instanceIn) {}
void* getAEffectPtr() const noexcept override { return instance->vstEffect; }
AEffect* getAEffectPtr() const noexcept override { return reinterpret_cast<AEffect*> (instance->vstEffect); }
const VSTPluginInstance* instance = nullptr;
};


+ 27
- 3
modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h View File

@@ -23,6 +23,30 @@
==============================================================================
*/
// Forward declarations to avoid leaking implementation details.
namespace Steinberg
{
namespace Vst
{
class IComponent;
}
}
//==============================================================================
#if (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) || (defined(AUDIOCOMPONENT_NOCARBONINSTANCES) && AUDIOCOMPONENT_NOCARBONINSTANCES)
struct OpaqueAudioComponentInstance;
typedef struct OpaqueAudioComponentInstance* AudioComponentInstance;
#else
struct ComponentInstanceRecord;
typedef struct ComponentInstanceRecord* AudioComponentInstance;
#endif
typedef AudioComponentInstance AudioUnit;
//==============================================================================
struct AEffect;
//==============================================================================
namespace juce
{
@@ -50,7 +74,7 @@ struct ExtensionsVisitor
struct VST3Client
{
virtual ~VST3Client() = default;
virtual void* getIComponentPtr() const noexcept = 0;
virtual Steinberg::Vst::IComponent* getIComponentPtr() const noexcept = 0;
virtual MemoryBlock getPreset() const = 0;
virtual bool setPreset (const MemoryBlock&) const = 0;
@@ -60,14 +84,14 @@ struct ExtensionsVisitor
struct AudioUnitClient
{
virtual ~AudioUnitClient() = default;
virtual void* getAudioUnitHandle() const noexcept = 0;
virtual AudioUnit getAudioUnitHandle() const noexcept = 0;
};
/** Can be used to retrieve information about a VST that is wrapped by an AudioProcessor. */
struct VSTClient
{
virtual ~VSTClient() = default;
virtual void* getAEffectPtr() const noexcept = 0;
virtual AEffect* getAEffectPtr() const noexcept = 0;
};
virtual ~ExtensionsVisitor() = default;


Loading…
Cancel
Save