00001
00002
00003
00004
00005
00006
00007
00008
00009
00011
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