MrSID Decode SDK for Raster Reference Manual  9.0.0.3864
lt_ioCallbackStream.h
Go to the documentation of this file.
00001 /* $Id$ */
00002 /* //////////////////////////////////////////////////////////////////////////
00003 //                                                                         //
00004 // This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
00005 // Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
00006 // prohibited.  Access to and use of this code is permitted only under     //
00007 // license from LizardTech, Inc.  Portions of the code are protected by    //
00008 // US and foreign patents and other filings. All Rights Reserved.          //
00009 //                                                                         //
00011 /* PUBLIC */
00012 
00013 #ifndef LT_IO_CALLBACK_STREAM_H
00014 #define LT_IO_CALLBACK_STREAM_H
00015 
00016 #include "lt_ioCallbackStreamTypes.h"
00017 #include "lt_ioStreamInf.h"
00018 
00019 #if defined(LT_COMPILER_MS)
00020    #pragma warning(push,4)
00021 #endif
00022 
00023 LT_BEGIN_NAMESPACE( LizardTech )
00024 
00025 
00026 
00036 class LTIOCallbackStream : public LTIOStreamInf
00037 {
00038 public:
00039    LTIOCallbackStream();
00040 
00041    virtual ~LTIOCallbackStream();
00042 
00074    virtual LT_STATUS initialize(LTIOCallbackStream_Open open,
00075                                 LTIOCallbackStream_Close close,
00076                                 LTIOCallbackStream_Read read,
00077                                 LTIOCallbackStream_Write write,
00078                                 LTIOCallbackStream_Seek seek,
00079                                 LTIOCallbackStream_Tell tell,
00080                                 LTIOCallbackStream_IsEOF isEOF,
00081                                 LTIOCallbackStream_IsOpen isOpen,
00082                                 LTIOCallbackStream_Duplicate duplicate,
00083                                 void* user);
00084 
00085    virtual bool isEOF();
00086    virtual bool isOpen();
00087 
00088    virtual LT_STATUS open();
00089    virtual LT_STATUS close();
00090 
00091    virtual lt_uint32 read( lt_uint8 *pDest, lt_uint32 numBytes );
00092    virtual lt_uint32 write( const lt_uint8 *pSrc, lt_uint32 numBytes );
00093 
00094    virtual LT_STATUS seek( lt_int64 offset, LTIOSeekDir origin );
00095    virtual lt_int64 tell();
00096 
00097    virtual LTIOStreamInf* duplicate();
00098    virtual LT_STATUS getLastError() const;
00099    virtual const char* getID() const;
00100 
00101 private:
00102    LTIOCallbackStream_Open m_open;
00103    LTIOCallbackStream_Close m_close;
00104    LTIOCallbackStream_Read m_read;
00105    LTIOCallbackStream_Write m_write;
00106    LTIOCallbackStream_Seek m_seek;
00107    LTIOCallbackStream_Tell m_tell;
00108    LTIOCallbackStream_IsEOF m_isEOF;
00109    LTIOCallbackStream_IsOpen m_isOpen;
00110    LTIOCallbackStream_Duplicate m_duplicate;
00111 
00112    void* m_user;
00113 };
00114 
00115 LT_END_NAMESPACE( LizardTech )
00116 
00117 #if defined(LT_COMPILER_MS)
00118    #pragma warning(pop)
00119 #endif
00120 
00121 #endif // LT_IO_CALLBACK_STREAM_H