File indexing completed on 2024-04-21 03:52:33

0001 /* This file is part of the KDE libraries
0002    SPDX-FileCopyrightText: 2021 Albert Astals Cid <aacid@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #ifndef KZSTDFILTER_H
0008 #define KZSTDFILTER_H
0009 
0010 #include <config-compression.h>
0011 
0012 #if HAVE_ZSTD_SUPPORT
0013 
0014 #include "kfilterbase.h"
0015 
0016 #include <memory>
0017 
0018 /**
0019  * Internal class used by KCompressionDevice
0020  * @internal
0021  */
0022 class KZstdFilter : public KFilterBase
0023 {
0024 public:
0025     KZstdFilter();
0026     ~KZstdFilter() override;
0027 
0028     bool init(int) override;
0029     int mode() const override;
0030     bool terminate() override;
0031     void reset() override;
0032     bool readHeader() override
0033     {
0034         return true;
0035     }
0036     bool writeHeader(const QByteArray &) override
0037     {
0038         return true;
0039     }
0040     void setOutBuffer(char *data, uint maxlen) override;
0041     void setInBuffer(const char *data, uint size) override;
0042     int inBufferAvailable() const override;
0043     int outBufferAvailable() const override;
0044     Result uncompress() override;
0045     Result compress(bool finish) override;
0046 
0047 private:
0048     class Private;
0049     const std::unique_ptr<Private> d;
0050 };
0051 
0052 #endif
0053 
0054 #endif