00001 //----------------------------------------------------------------------------- 00002 // Project : SDK Core 00003 // Version : 1.0 00004 // 00005 // Category : SDK Core Interfaces 00006 // Filename : ibstream.h 00007 // Created by : Steinberg, 01/2004 00008 // Modified : $Date: 2008/01/10 10:36:29 $ 00009 // Description : Interface for reading/writing streams 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 __ibstream__ 00037 #define __ibstream__ 00038 00039 #include "funknown.h" 00040 00041 namespace Steinberg { 00042 00043 //------------------------------------------------------------------------ 00048 //------------------------------------------------------------------------ 00049 00050 class IBStream: public FUnknown 00051 { 00052 public: 00053 enum IStreamSeekMode 00054 { 00055 kIBSeekSet = 0, 00056 kIBSeekCur, 00057 kIBSeekEnd 00058 }; 00059 00060 //------------------------------------------------------------------------ 00065 virtual tresult PLUGIN_API read (void* buffer, int32 numBytes, int32* numBytesRead = 0) = 0; 00066 00071 virtual tresult PLUGIN_API write (void* buffer, int32 numBytes, int32* numBytesWritten = 0) = 0; 00072 00077 virtual tresult PLUGIN_API seek (int64 pos, int32 mode, int64* result = 0) = 0; 00078 00081 virtual tresult PLUGIN_API tell (int64* pos) = 0; 00082 //------------------------------------------------------------------------ 00083 static const FUID iid; 00084 }; 00085 00086 DECLARE_CLASS_IID (IBStream, 0xC3BF6EA2, 0x30994752, 0x9B6BF990, 0x1EE33E9B) 00087 00088 } 00089 00090 #endif