1 //------------------------------------------------------------------------ 2 // Project : VST SDK 3 // 4 // Category : Helpers 5 // Filename : public.sdk/source/vst/auwrapper/NSDataIBStream.h 6 // Created by : Steinberg, 12/2007 7 // Description : VST 3 -> AU Wrapper 8 // 9 //----------------------------------------------------------------------------- 10 // LICENSE 11 // (c) 2020, Steinberg Media Technologies GmbH, All Rights Reserved 12 //----------------------------------------------------------------------------- 13 // Redistribution and use in source and binary forms, with or without modification, 14 // are permitted provided that the following conditions are met: 15 // 16 // * Redistributions of source code must retain the above copyright notice, 17 // this list of conditions and the following disclaimer. 18 // * Redistributions in binary form must reproduce the above copyright notice, 19 // this list of conditions and the following disclaimer in the documentation 20 // and/or other materials provided with the distribution. 21 // * Neither the name of the Steinberg Media Technologies nor the names of its 22 // contributors may be used to endorse or promote products derived from this 23 // software without specific prior written permission. 24 // 25 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 26 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 27 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 28 // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 29 // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 30 // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 31 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 32 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 33 // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 34 // OF THE POSSIBILITY OF SUCH DAMAGE. 35 //----------------------------------------------------------------------------- 36 37 /// \cond ignore 38 39 #pragma once 40 41 #import <Foundation/Foundation.h> 42 #import "pluginterfaces/base/ibstream.h" 43 #import "public.sdk/source/vst/hosting/hostclasses.h" 44 45 //------------------------------------------------------------------------ 46 namespace Steinberg { 47 namespace Vst { 48 49 //------------------------------------------------------------------------ 50 class NSDataIBStream : public IBStream, Vst::IStreamAttributes 51 { 52 public: 53 NSDataIBStream (NSData* data, bool hideAttributes = false); 54 virtual ~NSDataIBStream (); 55 56 //---from IBStream------------------- 57 tresult PLUGIN_API read (void* buffer, int32 numBytes, int32* numBytesRead = 0) SMTG_OVERRIDE; 58 tresult PLUGIN_API write (void* buffer, int32 numBytes, int32* numBytesWritten = 0) SMTG_OVERRIDE; 59 tresult PLUGIN_API seek (int64 pos, int32 mode, int64* result = 0) SMTG_OVERRIDE; 60 tresult PLUGIN_API tell (int64* pos) SMTG_OVERRIDE; 61 62 //---from Vst::IStreamAttributes----- 63 tresult PLUGIN_API getFileName (String128 name) SMTG_OVERRIDE; 64 IAttributeList* PLUGIN_API getAttributes () SMTG_OVERRIDE; 65 66 //------------------------------------------------------------------------ 67 DECLARE_FUNKNOWN_METHODS 68 protected: 69 NSData* data; 70 int64 currentPos; 71 HostAttributeList attrList; 72 bool hideAttributes; 73 }; 74 75 //------------------------------------------------------------------------ 76 class NSMutableDataIBStream : public NSDataIBStream 77 { 78 public: 79 NSMutableDataIBStream (NSMutableData* data); 80 virtual ~NSMutableDataIBStream (); 81 82 tresult PLUGIN_API write (void* buffer, int32 numBytes, int32* numBytesWritten = 0) SMTG_OVERRIDE; 83 //------------------------------------------------------------------------ 84 protected: 85 NSMutableData* mdata; 86 }; 87 88 //------------------------------------------------------------------------ 89 } // namespace Vst 90 } // namespace Steinberg 91 92 /// \endcond 93