KArchive 5.109.0
kfilterbase.h
1/* This file is part of the KDE libraries
2 SPDX-FileCopyrightText: 2000 David Faure <faure@kde.org>
3
4 SPDX-License-Identifier: LGPL-2.0-or-later
5*/
6
7#ifndef __kfilterbase__h
8#define __kfilterbase__h
9
10#include <karchive_export.h>
11
12#include <QObject>
13#include <QString>
14class KFilterBasePrivate;
15
16class QIODevice;
17
26class KARCHIVE_EXPORT KFilterBase
27{
28public:
30 virtual ~KFilterBase();
31
37 void setDevice(QIODevice *dev, bool autodelete = false);
38 // Note that this isn't in the constructor, because of KLibFactory::create,
39 // but it should be called before using the filterbase !
40
45 QIODevice *device();
47 virtual bool init(int mode) = 0;
49 virtual int mode() const = 0;
51 virtual bool terminate();
53 virtual void reset();
55 virtual bool readHeader() = 0;
57 virtual bool writeHeader(const QByteArray &filename) = 0;
59 virtual void setOutBuffer(char *data, uint maxlen) = 0;
61 virtual void setInBuffer(const char *data, uint size) = 0;
63 virtual bool inBufferEmpty() const;
65 virtual int inBufferAvailable() const = 0;
67 virtual bool outBufferFull() const;
69 virtual int outBufferAvailable() const = 0;
70
72 enum Result {
73 Ok,
74 End,
75 Error,
76 };
78 virtual Result uncompress() = 0;
80 virtual Result compress(bool finish) = 0;
81
86 enum FilterFlags {
87 NoHeaders = 0,
88 WithHeaders = 1,
89 ZlibHeaders = 2, // only use for gzip compression
90 };
95 void setFilterFlags(FilterFlags flags);
96 FilterFlags filterFlags() const;
97
98protected:
102 virtual void virtual_hook(int id, void *data);
103
104private:
105 Q_DISABLE_COPY(KFilterBase)
106 KFilterBasePrivate *const d;
107};
108
109#endif
This is the base class for compression filters such as gzip and bzip2.
Definition kfilterbase.h:27
virtual void virtual_hook(int id, void *data)
Virtual hook, used to add new "virtual" functions while maintaining binary compatibility.
QIODevice * device()
Returns the device on which the filter will work.
void setDevice(QIODevice *dev, bool autodelete=false)
Sets the device on which the filter will work.