| OpenMS 2.5.0

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-2020.
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:
50 GzipIfstream();
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_;
121 int n_buffer_;
123 int gzerror_;
125 bool stream_at_end_;
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);
134 GzipIfstream & operator=(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
OpenMS::GzipIfstream::stream_at_end_
bool stream_at_end_
true if end of file is reached
Definition: GzipIfstream.h:125
OpenMS::GzipIfstream::gzfile_
gzFile gzfile_
a gzFile object(void*) . Necessary for decompression
Definition: GzipIfstream.h:119
OpenMS::GzipIfstream
Decompresses files which are compressed in the gzip format (*.gzip)
Definition: GzipIfstream.h:46
OpenMS::GzipIfstream::n_buffer_
int n_buffer_
counts the last read duffer
Definition: GzipIfstream.h:121
OpenMS::GzipIfstream::streamEnd
bool streamEnd() const
indicates whether the read function can be used safely
Definition: GzipIfstream.h:142
OpenMS
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:46
OpenMS::GzipIfstream::isOpen
bool isOpen() const
returns whether a file is open.
Definition: GzipIfstream.h:137
OpenMS::GzipIfstream::gzerror_
int gzerror_
saves the last returned error by the read function
Definition: GzipIfstream.h:123