Main MRPT website > C++ reference
MRPT logo

CFileOutputStream.h

Go to the documentation of this file.
00001 /* +---------------------------------------------------------------------------+
00002    |          The Mobile Robot Programming Toolkit (MRPT) C++ library          |
00003    |                                                                           |
00004    |                   http://mrpt.sourceforge.net/                            |
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          */
00046         class BASE_IMPEXP CFileOutputStream : public CStream, public CUncopiable
00047         {
00048         protected:
00049                  /** Method responsible for reading from the stream.
00050                  */
00051                 size_t  Read(void *Buffer, size_t Count);
00052 
00053                 /** Method responsible for writing to the stream.
00054                  *  Write attempts to write up to Count bytes to Buffer, and returns the number of bytes actually written.
00055                  */
00056                 size_t  Write(const void *Buffer, size_t Count);
00057 
00058                 // DECLARE_UNCOPIABLE( CFileOutputStream )
00059 
00060         private:
00061                 std::ofstream   m_of;           //!< The actual output file stream.
00062 
00063         public:
00064                  /** Constructor
00065                   * \param fileName The file to be open in this stream
00066                   * \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.
00067                   * \exception std::exception if the file cannot be opened.
00068                   */
00069                 CFileOutputStream(
00070                         const std::string &fileName,
00071                         bool  append = false
00072                          );
00073 
00074                  /** Default constructor
00075                   */
00076                 CFileOutputStream();
00077 
00078                  /** Open the given file for write
00079                   * \param fileName The file to be open in this stream
00080                   * \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.
00081                   * \sa fileOpenCorrectly
00082                   * \return true on success.
00083                   */
00084                 bool open(const std::string &fileName, bool  append = false );
00085 
00086                 /** Close the stream. */
00087                 void close();
00088 
00089                  /** Destructor
00090                  */
00091                  virtual ~CFileOutputStream();
00092 
00093                  /** Says if file was open successfully or not.
00094                   */
00095                  bool  fileOpenCorrectly();
00096 
00097                 /** Method for moving to a specified position in the streamed resource.
00098                  *   See documentation of CStream::Seek
00099                  */
00100                 uint64_t Seek(long Offset, CStream::TSeekOrigin Origin = sFromBeginning);
00101 
00102                 /** Method for getting the total number of bytes writen to buffer.
00103                  */
00104                 uint64_t getTotalBytesCount();
00105 
00106                 /** Method for getting the current cursor position, where 0 is the first byte and TotalBytesCount-1 the last one.
00107                  */
00108                 uint64_t getPosition();
00109 
00110 
00111         }; // End of class def.
00112 
00113         } // End of namespace
00114 } // end of namespace
00115 #endif



Page generated by Doxygen 1.7.3 for MRPT 0.9.4 SVN: at Sat Mar 26 06:16:28 UTC 2011