OpenMS
GzipIfstream.h
Go to the documentation of this file.
1 // --------------------------------------------------------------------------
2 // OpenMS -- Open-Source Mass Spectrometry
3 // --------------------------------------------------------------------------
4 // Copyright The OpenMS Team -- Eberhard Karls University Tuebingen,
5 // ETH Zurich, and Freie Universitaet Berlin 2002-2023.
6 //
7 // This software is released under a three-clause BSD license:
8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above copyright
11 // notice, this list of conditions and the following disclaimer in the
12 // documentation and/or other materials provided with the distribution.
13 // * Neither the name of any author or any participating institution
14 // may be used to endorse or promote products derived from this software
15 // without specific prior written permission.
16 // For a full list of authors, refer to the file AUTHORS.
17 // --------------------------------------------------------------------------
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 // ARE DISCLAIMED. IN NO EVENT SHALL ANY OF THE AUTHORS OR THE CONTRIBUTING
22 // INSTITUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
27 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
28 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 //
30 // --------------------------------------------------------------------------
31 // $Maintainer: Timo Sachsenberg $
32 // $Authors: David Wojnar $
33 // --------------------------------------------------------------------------
34 
35 #pragma once
36 
37 #include <OpenMS/config.h>
38 
39 #include <zlib.h>
40 
41 namespace OpenMS
42 {
46  class OPENMS_DLLAPI GzipIfstream
47  {
48 public:
51 
53  explicit GzipIfstream(const char * filename);
54 
56  virtual ~GzipIfstream();
57 
72  size_t read(char * s, size_t n);
73 
79  bool streamEnd() const;
80 
84  bool isOpen() const;
85 
91  void open(const char * filename);
92 
96  void close();
97 
98  /*
99  @brief updates crc32 check sum whether the buffer is corrupted
100  @note if this function is used it has to be called after every call of function read
101  @param s the buffer which will be checked
102  @param n the size of the buffer
103  *
104  //void updateCRC32(const char* s,const size_t n);
105 
106  *
107  @brief checks if data is corrupted after crc32 was computed
108  @note it can only be used if updateCRC32 was called after every call of function read
109  @return true if the buffer and hence the file is corrupted; no decompression is possible
110  *
111  //bool isCorrupted();
112 
113  //unsigned long Crc32_ComputeBuf( unsigned long inCrc32, const void *buf,
114 // size_t bufLen );*/
115 
116 protected:
117 
119  gzFile gzfile_;
123  int gzerror_;
126 
127  //needed if one wants to know whether file is okay
128  //unsigned long original_crc;
129  //needed if one wants to know whether file is okay
130  //unsigned long crc;
131 
133  GzipIfstream(const GzipIfstream & bzip2);
135  };
136 
137  inline bool GzipIfstream::isOpen() const
138  {
139  return gzfile_ != nullptr;
140  }
141 
142  inline bool GzipIfstream::streamEnd() const
143  {
144  return stream_at_end_;
145  }
146 
147 /* inline bool GzipIfstream::isCorrupted()
148  {
149  std::cout<<"CRC"<<crc<<std::endl;
150  return (crc != original_crc);
151  }*/
152 
153 } //namespace OpenMS
Decompresses files which are compressed in the gzip format (*.gzip)
Definition: GzipIfstream.h:47
bool isOpen() const
returns whether a file is open.
Definition: GzipIfstream.h:137
int gzerror_
saves the last returned error by the read function
Definition: GzipIfstream.h:123
GzipIfstream & operator=(const GzipIfstream &bzip2)
int n_buffer_
counts the last read duffer
Definition: GzipIfstream.h:121
gzFile gzfile_
a gzFile object(void*) . Necessary for decompression
Definition: GzipIfstream.h:119
void open(const char *filename)
opens a file for reading (decompression)
void close()
closes current file.
bool stream_at_end_
true if end of file is reached
Definition: GzipIfstream.h:125
GzipIfstream(const char *filename)
Detailed constructor with filename.
GzipIfstream(const GzipIfstream &bzip2)
not implemented
size_t read(char *s, size_t n)
Reads n bytes from the bzip2 compressed file into buffer s.
GzipIfstream()
Default Constructor.
virtual ~GzipIfstream()
Destructor.
bool streamEnd() const
indicates whether the read function can be used safely
Definition: GzipIfstream.h:142
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:48