00001 /* +---------------------------------------------------------------------------+ 00002 | The Mobile Robot Programming Toolkit (MRPT) C++ library | 00003 | | 00004 | http://www.mrpt.org/ | 00005 | | 00006 | Copyright (C) 2005-2011 University of Malaga | 00007 | | 00008 | This software was written by the Machine Perception and Intelligent | 00009 | Robotics Lab, University of Malaga (Spain). | 00010 | Contact: Jose-Luis Blanco <jlblanco@ctima.uma.es> | 00011 | | 00012 | This file is part of the MRPT project. | 00013 | | 00014 | MRPT is free software: you can redistribute it and/or modify | 00015 | it under the terms of the GNU General Public License as published by | 00016 | the Free Software Foundation, either version 3 of the License, or | 00017 | (at your option) any later version. | 00018 | | 00019 | MRPT is distributed in the hope that it will be useful, | 00020 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 00021 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 00022 | GNU General Public License for more details. | 00023 | | 00024 | You should have received a copy of the GNU General Public License | 00025 | along with MRPT. If not, see <http://www.gnu.org/licenses/>. | 00026 | | 00027 +---------------------------------------------------------------------------+ */ 00028 #ifndef CFileOutputStream_H 00029 #define CFileOutputStream_H 00030 00031 #include <mrpt/utils/CStream.h> 00032 00033 #include <iostream> 00034 00035 /*--------------------------------------------------------------- 00036 Class 00037 ---------------------------------------------------------------*/ 00038 namespace mrpt 00039 { 00040 namespace utils 00041 { 00042 /** This CStream derived class allow using a file as a write-only, binary stream. 00043 * 00044 * \sa CStream, CFileStream, CFileGZOutputStream 00045 * \ingroup mrpt_base_grp 00046 */ 00047 class BASE_IMPEXP CFileOutputStream : public CStream, public CUncopiable 00048 { 00049 protected: 00050 /** Method responsible for reading from the stream. 00051 */ 00052 size_t Read(void *Buffer, size_t Count); 00053 00054 /** Method responsible for writing to the stream. 00055 * Write attempts to write up to Count bytes to Buffer, and returns the number of bytes actually written. 00056 */ 00057 size_t Write(const void *Buffer, size_t Count); 00058 00059 // DECLARE_UNCOPIABLE( CFileOutputStream ) 00060 00061 private: 00062 std::ofstream m_of; //!< The actual output file stream. 00063 00064 public: 00065 /** Constructor 00066 * \param fileName The file to be open in this stream 00067 * \param append If set to true, the file will be opened for writing and the current cursor position set at the end of the file. Otherwise, previous contents will be lost. 00068 * \exception std::exception if the file cannot be opened. 00069 */ 00070 CFileOutputStream( 00071 const std::string &fileName, 00072 bool append = false 00073 ); 00074 00075 /** Default constructor 00076 */ 00077 CFileOutputStream(); 00078 00079 /** Open the given file for write 00080 * \param fileName The file to be open in this stream 00081 * \param append If set to true, the file will be opened for writing and the current cursor position set at the end of the file. Otherwise, previous contents will be lost. 00082 * \sa fileOpenCorrectly 00083 * \return true on success. 00084 */ 00085 bool open(const std::string &fileName, bool append = false ); 00086 00087 /** Close the stream. */ 00088 void close(); 00089 00090 /** Destructor 00091 */ 00092 virtual ~CFileOutputStream(); 00093 00094 /** Says if file was open successfully or not. 00095 */ 00096 bool fileOpenCorrectly(); 00097 00098 /** Method for moving to a specified position in the streamed resource. 00099 * See documentation of CStream::Seek 00100 */ 00101 uint64_t Seek(long Offset, CStream::TSeekOrigin Origin = sFromBeginning); 00102 00103 /** Method for getting the total number of bytes writen to buffer. 00104 */ 00105 uint64_t getTotalBytesCount(); 00106 00107 /** Method for getting the current cursor position, where 0 is the first byte and TotalBytesCount-1 the last one. 00108 */ 00109 uint64_t getPosition(); 00110 00111 00112 }; // End of class def. 00113 00114 } // End of namespace 00115 } // end of namespace 00116 #endif
| Page generated by Doxygen 1.7.5 for MRPT 0.9.5 SVN: at Thu Oct 13 21:25:36 UTC 2011 |