1 //------------------------------------------------------------------------
2 // Project     : VST SDK
3 //
4 // Category    : Interfaces
5 // Filename    : pluginterfaces/vst/ivstmessage.h
6 // Created by  : Steinberg, 04/2005
7 // Description : VST Message Interfaces
8 //
9 //-----------------------------------------------------------------------------
10 // This file is part of a Steinberg SDK. It is subject to the license terms
11 // in the LICENSE file found in the top-level directory of this distribution
12 // and at www.steinberg.net/sdklicenses.
13 // No part of the SDK, including this file, may be copied, modified, propagated,
14 // or distributed except according to the terms contained in the LICENSE file.
15 //-----------------------------------------------------------------------------
16 
17 #pragma once
18 
19 #include "pluginterfaces/vst/ivstattributes.h"
20 
21 //------------------------------------------------------------------------
22 #include "pluginterfaces/base/falignpush.h"
23 //------------------------------------------------------------------------
24 
25 //------------------------------------------------------------------------
26 namespace Steinberg {
27 namespace Vst {
28 
29 //------------------------------------------------------------------------
30 /** Private plug-in message: Vst::IMessage
31 \ingroup vstIHost vst300
32 - [host imp]
33 - [create via IHostApplication::createInstance]
34 - [released: 3.0.0]
35 - [mandatory]
36 
37 Messages are sent from a VST controller component to a VST editor component and vice versa.
38 \see IAttributeList, IConnectionPoint, \ref vst3Communication
39 */
40 class IMessage : public FUnknown
41 {
42 public:
43 //------------------------------------------------------------------------
44 	/** Returns the message ID (for example "TextMessage"). */
45 	virtual FIDString PLUGIN_API getMessageID () = 0;
46 
47 	/** Sets a message ID (for example "TextMessage"). */
48 	virtual void PLUGIN_API setMessageID (FIDString id /*in*/) = 0;
49 
50 	/** Returns the attribute list associated to the message. */
51 	virtual IAttributeList* PLUGIN_API getAttributes () = 0;
52 
53 //------------------------------------------------------------------------
54 	static const FUID iid;
55 };
56 
57 DECLARE_CLASS_IID (IMessage, 0x936F033B, 0xC6C047DB, 0xBB0882F8, 0x13C1E613)
58 
59 //------------------------------------------------------------------------
60 /** Connect a component with another one: Vst::IConnectionPoint
61 \ingroup vstIPlug vst300
62 - [plug imp]
63 - [host imp]
64 - [released: 3.0.0]
65 - [mandatory]
66 
67 This interface is used for the communication of separate components.
68 Note that some hosts will place a proxy object between the components so that they are not directly connected.
69 
70 \see \ref vst3Communication
71 */
72 class IConnectionPoint : public FUnknown
73 {
74 public:
75 //------------------------------------------------------------------------
76 	/** Connects this instance with another connection point. */
77 	virtual tresult PLUGIN_API connect (IConnectionPoint* other) = 0;
78 
79 	/** Disconnects a given connection point from this. */
80 	virtual tresult PLUGIN_API disconnect (IConnectionPoint* other) = 0;
81 
82 	/** Called when a message has been sent from the connection point to this. */
83 	virtual tresult PLUGIN_API notify (IMessage* message) = 0;
84 
85 //------------------------------------------------------------------------
86 	static const FUID iid;
87 };
88 
89 DECLARE_CLASS_IID (IConnectionPoint, 0x70A4156F, 0x6E6E4026, 0x989148BF, 0xAA60D8D1)
90 
91 //------------------------------------------------------------------------
92 } // namespace Vst
93 } // namespace Steinberg
94 
95 //------------------------------------------------------------------------
96 #include "pluginterfaces/base/falignpop.h"
97 //------------------------------------------------------------------------
98