Files
hot-step-cpp-ROCm/engine/vendor/vst3sdk/public.sdk/source/vst/vstcomponentbase.h
T
2026-08-16 18:24:52 +07:00

91 lines
3.3 KiB
C++

//-----------------------------------------------------------------------------
// Project : VST SDK
//
// Category : Helpers
// Filename : public.sdk/source/vst/vstcomponentbase.h
// Created by : Steinberg, 05/2005
// Description : Base class for Component and Edit Controller
//
//-----------------------------------------------------------------------------
// This file is part of a Steinberg SDK. It is subject to the license terms
// in the LICENSE file found in the top-level directory of this distribution
// and at www.steinberg.net/sdklicenses.
// No part of the SDK, including this file, may be copied, modified, propagated,
// or distributed except according to the terms contained in the LICENSE file.
//-----------------------------------------------------------------------------
#pragma once
#include "pluginterfaces/base/ipluginbase.h"
#include "pluginterfaces/vst/ivstmessage.h"
#include "pluginterfaces/vst/ivsthostapplication.h"
#include "base/source/fobject.h"
//------------------------------------------------------------------------
namespace Steinberg {
namespace Vst {
//------------------------------------------------------------------------
/** Base class for VST 3 Component and Edit Controller.
\ingroup vstClasses
*/
class ComponentBase: public FObject,
public IPluginBase,
public IConnectionPoint
{
public:
//------------------------------------------------------------------------
ComponentBase ();
~ComponentBase () override;
//--- Internal Methods------
/** Returns the hostContext (set by the host during initialize call). */
FUnknown* getHostContext () const { return hostContext; }
/** Returns the peer for the messaging communication (you can only use IConnectionPoint::notify
* for communicate between peers, do not try to cast peerConnection. */
IConnectionPoint* getPeer () const { return peerConnection; }
/** Allocates a message instance (do not forget to release it). */
IMessage* allocateMessage () const;
/** Sends the given message to the peer. */
tresult sendMessage (IMessage* message) const;
/** Sends a simple text message to the peer (max 255 characters).
Text is interpreted as UTF-8. */
tresult sendTextMessage (const char8* text) const;
/** Sends a message with a given ID without any other payload. */
tresult sendMessageID (const char8* messageID) const;
/** Receives a simple text message from the peer (max 255 characters). Text is UTF-8 encoded. */
virtual tresult receiveText (const char8* text);
//---from IPluginBase------
tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE;
tresult PLUGIN_API terminate () SMTG_OVERRIDE;
//---from IConnectionPoint-----------
tresult PLUGIN_API connect (IConnectionPoint* other) SMTG_OVERRIDE;
tresult PLUGIN_API disconnect (IConnectionPoint* other) SMTG_OVERRIDE;
tresult PLUGIN_API notify (IMessage* message) SMTG_OVERRIDE;
//---Interface------
OBJ_METHODS (ComponentBase, FObject)
DEFINE_INTERFACES
DEF_INTERFACE (IPluginBase)
DEF_INTERFACE (IConnectionPoint)
END_DEFINE_INTERFACES (FObject)
REFCOUNT_METHODS (FObject)
//------------------------------------------------------------------------
protected:
IPtr<FUnknown> hostContext;
IPtr<IConnectionPoint> peerConnection;
};
//------------------------------------------------------------------------
} // namespace Vst
} // namespace Steinberg