00001
00002
00003
00004
00005
00006
00007
00008
00009
00011
00012
00013 #ifndef LT_IO_FILE_STREAM_H
00014 #define LT_IO_FILE_STREAM_H
00015
00016 #include "lt_ioStreamInf.h"
00017 #include "lt_fileSpec.h"
00018 #include <stdio.h>
00019
00020 LT_BEGIN_NAMESPACE( LizardTech )
00021
00022
00023
00029 class LTIOFileStream : public LTIOStreamInf
00030 {
00031 public:
00032
00037
00041 LTIOFileStream(void);
00042
00046 virtual ~LTIOFileStream(void);
00047
00054 virtual LT_STATUS initialize(const LTFileSpec& fs, const char* mode);
00055 LT_STATUS initialize(const char* path, const char* mode);
00057
00058
00059 virtual bool isEOF();
00060 virtual bool isOpen();
00061 virtual LT_STATUS open();
00062 virtual LT_STATUS close();
00063 virtual lt_uint32 read(lt_uint8 *pDest, lt_uint32 numBytes);
00064 virtual lt_uint32 write(const lt_uint8 *pSrc, lt_uint32 numBytes);
00065 virtual LT_STATUS seek(lt_int64 offset, LTIOSeekDir origin);
00066 virtual lt_int64 tell();
00067 virtual LTIOStreamInf *duplicate();
00068 virtual LT_STATUS getLastError() const;
00069 virtual const char* getID() const;
00070
00078 int stdio_ferror();
00079
00083 void stdio_clearerr();
00085
00096 int stdio_setvbuf( lt_uint8* buf, lt_uint32 mode, lt_uint32 size );
00097
00098 private:
00099
00100 void cleanup();
00101
00102 protected:
00103 FILE* m_file;
00104
00105 enum
00106 {
00107 unknown_state = 1,
00108 reading_state = 2,
00109 writing_state = 3
00110 } m_state;
00111
00112 LTFileSpec m_path;
00113 char *m_mode;
00114 char *m_uri;
00115 };
00116
00117 LT_END_NAMESPACE( LizardTech )
00118
00119 #endif // LT_STREAMINF_H