00001 //------------------------------------------------------------------------ 00002 // Project : VST SDK 00003 // Version : 3.0 00004 // 00005 // Category : Interfaces 00006 // Filename : ivstattributes.h 00007 // Created by : Steinberg, 05/2006 00008 // Modified : $Date: 2008/01/09 12:51:44 $ 00009 // Description : VST Attribute Interfaces 00010 // 00011 //----------------------------------------------------------------------------- 00012 // LICENSE 00013 // © 2008, Steinberg Media Technologies GmbH, All Rights Reserved 00014 //----------------------------------------------------------------------------- 00015 // This Software Development Kit may not be distributed in parts or its entirety 00016 // without prior written agreement by Steinberg Media Technologies GmbH. 00017 // This SDK must not be used to re-engineer or manipulate any technology used 00018 // in any Steinberg or Third-party application or software module, 00019 // unless permitted by law. 00020 // Neither the name of the Steinberg Media Technologies nor the names of its 00021 // contributors may be used to endorse or promote products derived from this 00022 // software without specific prior written permission. 00023 // 00024 // THIS SDK IS PROVIDED BY STEINBERG MEDIA TECHNOLOGIES GMBH "AS IS" AND 00025 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 00026 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 00027 // IN NO EVENT SHALL STEINBERG MEDIA TECHNOLOGIES GMBH BE LIABLE FOR ANY DIRECT, 00028 // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 00029 // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 00030 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 00031 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 00032 // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 00033 // OF THE POSSIBILITY OF SUCH DAMAGE. 00034 //---------------------------------------------------------------------------------- 00035 00036 #ifndef __ivstattributes__ 00037 #define __ivstattributes__ 00038 00039 #include "pluginterfaces/base/funknown.h" 00040 #include "pluginterfaces/vst/vsttypes.h" 00041 00042 //------------------------------------------------------------------------ 00043 #include "pluginterfaces/base/falignpush.h" 00044 //------------------------------------------------------------------------ 00045 00046 //------------------------------------------------------------------------ 00047 namespace Steinberg { 00048 namespace Vst { 00049 00050 //------------------------------------------------------------------------ 00051 // IAttributeList Interface 00052 //------------------------------------------------------------------------ 00057 class IAttributeList: public FUnknown 00058 { 00059 public: 00060 //------------------------------------------------------------------------ 00061 typedef const char* AttrID; 00062 00064 virtual tresult PLUGIN_API setInt (AttrID id, int64 value) = 0; 00065 00067 virtual tresult PLUGIN_API getInt (AttrID id, int64& value) = 0; 00068 00070 virtual tresult PLUGIN_API setFloat (AttrID id, double value) = 0; 00071 00073 virtual tresult PLUGIN_API getFloat (AttrID id, double& value) = 0; 00074 00076 virtual tresult PLUGIN_API setString (AttrID id, const TChar* string) = 0; 00077 00079 virtual tresult PLUGIN_API getString (AttrID id, TChar* string, uint32 size) = 0; 00080 00082 virtual tresult PLUGIN_API setBinary (AttrID id, const void* data, uint32 size) = 0; 00083 00085 virtual tresult PLUGIN_API getBinary (AttrID id, const void*& data, uint32& size) = 0; 00086 //------------------------------------------------------------------------ 00087 static const FUID iid; 00088 }; 00089 00090 DECLARE_CLASS_IID (IAttributeList, 0x1E5F0AEB, 0xCC7F4533, 0xA2544011, 0x38AD5EE4) 00091 00092 00093 //------------------------------------------------------------------------ 00094 // IStreamAttributes Interface 00095 //------------------------------------------------------------------------ 00101 class IStreamAttributes: public FUnknown 00102 { 00103 public: 00104 //------------------------------------------------------------------------ 00106 virtual tresult PLUGIN_API getFileName (String128 name) = 0; 00107 00109 virtual IAttributeList* PLUGIN_API getAttributes () = 0; 00110 //------------------------------------------------------------------------ 00111 static const FUID iid; 00112 }; 00113 00114 DECLARE_CLASS_IID (IStreamAttributes, 0xD6CE2FFC, 0xEFAF4B8C, 0x9E74F1BB, 0x12DA44B4) 00115 00116 //------------------------------------------------------------------------ 00117 } // namespace Vst 00118 } // namespace Steinberg 00119 00120 //------------------------------------------------------------------------ 00121 #include "pluginterfaces/base/falignpop.h" 00122 //------------------------------------------------------------------------ 00123 00124 #endif // __ivstattributes__