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://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