Clean and order documentation in source files. Source ready to beta 2 release
[mdictionary] / src / plugins / stardict / CompressedReader.h
1 /*******************************************************************************
2
3     This file is part of mDictionary.
4
5     mDictionary is free software: you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation, either version 3 of the License, or
8     (at your option) any later version.
9
10     mDictionary is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14
15     You should have received a copy of the GNU General Public License
16     along with mDictionary.  If not, see <http://www.gnu.org/licenses/>.
17
18     Copyright 2010 Comarch S.A.
19
20 *******************************************************************************/
21 /*!
22     \file CompressedReader.h
23     \brief Class implementing StarDictReader interface and handling reading from compressed
24     files like .gz or .dz
25
26     \author Mateusz Półrola
27 */
28
29 #ifndef COMPRESSEDREADER_H
30 #define COMPRESSEDREADER_H
31
32 #include <QObject>
33 #include <zconf.h>
34 //#include <zlibdefs.h>
35 #include <zlib.h>
36 #include "StarDictReader.h"
37
38 /*!
39     Class implementing StarDictReader interface and handling reading from compressed
40     files like .gz or .dz, using zlib
41 */
42 class CompressedReader : public StarDictReader
43 {
44     Q_OBJECT
45 public:
46     CompressedReader(QObject *parent = 0);
47
48     //! Creates new compressed reader and open file with passed filename
49     CompressedReader(QString filename, QObject *parent = 0);
50
51     //! Destructs object and closing file
52     ~CompressedReader();
53
54     /*!
55         Reads translations text from compressed dict file.
56         \param offset 64-bit offset of translation in uncompressed file, readed
57              from idx file
58         \param len length of uncompressed translation, readed from idx file too
59     */
60     QByteArray readString(qint64 offset, qint32 len);
61
62     /*!
63         Reads 32-bits integer value from compressed file and convert it from
64         BigEndian to Little Endian
65     */
66     qint32 readInt32BigEndian();
67
68     /*!
69         Reads 64-bits integer value from compressed file and convert it from
70         BigEndian to Little Endian
71     */
72     qint64 readInt64BigEndian();
73
74     /*!
75         Reads single string from compressed file, end of string is marked as '\0'
76         in file.
77     */
78     QString readKeyword();
79
80
81     //! Closing file;
82     void close();
83
84 protected:
85     /*!
86         Opens file
87         \returns true if file is opened or false otherwise
88     */
89     bool open(QString file);
90
91     //! Reads single char from compressed.
92     QChar readChar();
93
94 private:
95     gzFile _file;
96 };
97
98 #endif // COMPRESSEDREADER_H