00001
00002
00003
00004
00005
00006
00007
00008
00009
00011
00012
00013
00014 #ifndef LT_IOSUBSTREAM_H
00015 #define LT_IOSUBSTREAM_H
00016
00017 #include "lt_ioStreamInf.h"
00018 #include <stdio.h>
00019
00020 LT_BEGIN_NAMESPACE( LizardTech )
00021
00022
00023
00024
00046 class LTIOSubStream : public LTIOStreamInf
00047 {
00048 public:
00049
00054
00058 LTIOSubStream();
00059
00063 virtual ~LTIOSubStream();
00064
00076 virtual LT_STATUS initialize(LTIOStreamInf* stream,
00077 lt_int64 start,
00078 lt_int64 end,
00079 bool takeOwnership=false);
00080
00085
00092 virtual bool isEOF();
00093
00094
00099
00106 virtual bool isOpen();
00107
00120 virtual LT_STATUS open();
00121
00132 virtual LT_STATUS close();
00133
00135
00136
00141
00151 virtual lt_uint32 read( lt_uint8 *pDest, lt_uint32 numBytes );
00152
00161 virtual lt_uint32 write( const lt_uint8 *pSrc, lt_uint32 numBytes );
00162
00164
00169
00181 virtual LT_STATUS seek( lt_int64 offset, LTIOSeekDir origin );
00182
00189 virtual lt_int64 tell();
00190
00192
00197
00207 virtual LTIOStreamInf* duplicate();
00208
00209 virtual LT_STATUS getLastError() const;
00210
00211 virtual const char* getID() const;
00212
00214
00215
00216 protected:
00218 void cleanup();
00219
00220 LTIOStreamInf* m_stream;
00221 bool m_ownsStream;
00222 lt_int64 m_startOffset;
00223 lt_int64 m_endOffset;
00224
00225 bool m_isEOF;
00226 };
00227
00228
00229
00230 LT_END_NAMESPACE( LizardTech )
00231
00232
00233 #endif // LT_IOSUBSTREAM_H