Home  · Classes  · Annotated Classes  · Modules  · Members  · Namespaces  · Related Pages

GzipIfstream.h

Go to the documentation of this file.
00001 // --------------------------------------------------------------------------
00002 //                   OpenMS -- Open-Source Mass Spectrometry
00003 // --------------------------------------------------------------------------
00004 // Copyright The OpenMS Team -- Eberhard Karls University Tuebingen,
00005 // ETH Zurich, and Freie Universitaet Berlin 2002-2012.
00006 //
00007 // This software is released under a three-clause BSD license:
00008 //  * Redistributions of source code must retain the above copyright
00009 //    notice, this list of conditions and the following disclaimer.
00010 //  * Redistributions in binary form must reproduce the above copyright
00011 //    notice, this list of conditions and the following disclaimer in the
00012 //    documentation and/or other materials provided with the distribution.
00013 //  * Neither the name of any author or any participating institution
00014 //    may be used to endorse or promote products derived from this software
00015 //    without specific prior written permission.
00016 // For a full list of authors, refer to the file AUTHORS.
00017 // --------------------------------------------------------------------------
00018 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00019 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00020 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00021 // ARE DISCLAIMED. IN NO EVENT SHALL ANY OF THE AUTHORS OR THE CONTRIBUTING
00022 // INSTITUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00023 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00024 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
00025 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
00026 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
00027 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
00028 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00029 //
00030 // --------------------------------------------------------------------------
00031 // $Maintainer: David Wojnar $
00032 // $Authors: David Wojnar $
00033 // --------------------------------------------------------------------------
00034 
00035 #ifndef OPENMS_FORMAT_GZIPIFSTREAM_H
00036 #define OPENMS_FORMAT_GZIPIFSTREAM_H
00037 
00038 #include <OpenMS/config.h>
00039 #include <zlib.h>
00040 
00041 namespace OpenMS
00042 {
00046   class OPENMS_DLLAPI GzipIfstream
00047   {
00048 public:
00050     GzipIfstream();
00052     GzipIfstream(const char * filename);
00054     virtual ~GzipIfstream();
00055 
00066     size_t read(char * s, size_t n);
00067 
00073     bool streamEnd() const;
00074 
00078     bool isOpen() const;
00079 
00084     void open(const char * filename);
00085 
00089     void close();
00090 
00091     /*
00092         @brief updates crc32 check sum whether the buffer is corrupted
00093         @note if this function is used it has to be called after every call of function read
00094         @param s the buffer which will be checked
00095         @param n the size of the buffer
00096     *
00097     //void updateCRC32(const char* s,const size_t n);
00098 
00099     *
00100         @brief  checks if data is corrupted after crc32 was computed
00101         @note   it can only be used if updateCRC32 was called after every call of function read
00102         @return true if the buffer and hence the file is corrupted; no decompression is possible
00103     *
00104     //bool isCorrupted();
00105 
00106     //unsigned long Crc32_ComputeBuf( unsigned long inCrc32, const void *buf,
00107 //                                 size_t bufLen );*/
00108 
00109 protected:
00110 
00112     gzFile gzfile_;
00114     int     n_buffer_;
00116     int     gzerror_;
00118     bool stream_at_end_;
00119 
00120     //needed if one wants to know whetther file is okay
00121     //unsigned long original_crc;
00122     //needed if one wants to know whetther file is okay
00123     //unsigned long crc;
00124 
00126     GzipIfstream(const GzipIfstream & bzip2);
00127     GzipIfstream & operator=(const GzipIfstream & bzip2);
00128   };
00129 
00130   inline bool GzipIfstream::isOpen() const
00131   {
00132     return gzfile_ != NULL;
00133   }
00134 
00135   inline bool GzipIfstream::streamEnd() const
00136   {
00137     return stream_at_end_;
00138   }
00139 
00140 /*  inline bool GzipIfstream::isCorrupted()
00141     {
00142         std::cout<<"CRC"<<crc<<std::endl;
00143         return (crc != original_crc);
00144     }*/
00145 
00146 } //namespace OpenMS
00147 #endif //OPENMS_FORMAT_GZIPIFSTREAM_H

OpenMS / TOPP release 1.10.0 Documentation generated on Thu Mar 7 2013 09:42:39 using doxygen 1.7.1