00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef CFILESTREAM_H
00029 #define CFILESTREAM_H
00030
00031 #include <mrpt/utils/CStream.h>
00032 #include <mrpt/utils/CUncopiable.h>
00033
00034 #include <iostream>
00035
00036
00037
00038
00039 namespace mrpt
00040 {
00041 namespace utils
00042 {
00049 typedef std::ios_base::openmode TFileOpenModes;
00050
00051 static const TFileOpenModes fomRead = std::ios_base::in;
00052 static const TFileOpenModes fomWrite = std::ios_base::out | std::ios_base::trunc;
00053 static const TFileOpenModes fomAppend = std::ios_base::app | std::ios_base::out;
00054
00059 class MRPTDLLIMPEXP CFileStream : public CStream, public CUncopiable
00060 {
00061 protected:
00064 size_t Read(void *Buffer, size_t Count);
00065
00069 size_t Write(const void *Buffer, size_t Count);
00070
00071 DECLARE_UNCOPIABLE( CFileStream )
00072
00073 private:
00074 std::fstream m_f;
00075
00076 public:
00083 CFileStream( const std::string &fileName, TFileOpenModes mode = fomRead | fomWrite);
00084
00087 CFileStream();
00088
00089
00095 bool open(const std::string &fileName, TFileOpenModes mode = fomRead | fomWrite );
00096
00099 void close();
00100
00103 virtual ~CFileStream();
00104
00107 bool fileOpenCorrectly();
00108
00111 bool checkEOF();
00112
00116 size_t Seek(long Offset, CStream::TSeekOrigin Origin = sFromBeginning);
00117
00120 size_t getTotalBytesCount();
00121
00124 size_t getPosition();
00125
00128 size_t getPositionI();
00129
00132 size_t getPositionO();
00133
00137 bool readLine( std::string &str );
00138
00139
00140 };
00141
00142 }
00143 }
00144 #endif