Warning, file /frameworks/karchive/src/knonefilter.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /* This file is part of the KDE libraries
0002    SPDX-FileCopyrightText: 2011 Mario Bensi <mbensi@ipsquad.net>
0003 
0004    Based on kbzip2filter:
0005    SPDX-FileCopyrightText: 2000, 2009 David Faure <faure@kde.org>
0006 
0007    SPDX-License-Identifier: LGPL-2.0-or-later
0008 */
0009 
0010 #include "knonefilter.h"
0011 
0012 #include <QFile>
0013 
0014 class Q_DECL_HIDDEN KNoneFilter::Private
0015 {
0016 public:
0017     Private()
0018         : mode(0)
0019         , avail_out(0)
0020         , avail_in(0)
0021         , next_in(nullptr)
0022         , next_out(nullptr)
0023     {
0024     }
0025 
0026     int mode;
0027     int avail_out;
0028     int avail_in;
0029     const char *next_in;
0030     char *next_out;
0031 };
0032 
0033 KNoneFilter::KNoneFilter()
0034     : d(new Private)
0035 {
0036 }
0037 
0038 KNoneFilter::~KNoneFilter()
0039 {
0040     delete d;
0041 }
0042 
0043 bool KNoneFilter::init(int mode)
0044 {
0045     d->mode = mode;
0046     return true;
0047 }
0048 
0049 int KNoneFilter::mode() const
0050 {
0051     return d->mode;
0052 }
0053 
0054 bool KNoneFilter::terminate()
0055 {
0056     return true;
0057 }
0058 
0059 void KNoneFilter::reset()
0060 {
0061 }
0062 
0063 bool KNoneFilter::readHeader()
0064 {
0065     return true;
0066 }
0067 
0068 bool KNoneFilter::writeHeader(const QByteArray & /*fileName*/)
0069 {
0070     return true;
0071 }
0072 
0073 void KNoneFilter::setOutBuffer(char *data, uint maxlen)
0074 {
0075     d->avail_out = maxlen;
0076     d->next_out = data;
0077 }
0078 
0079 void KNoneFilter::setInBuffer(const char *data, uint size)
0080 {
0081     d->next_in = data;
0082     d->avail_in = size;
0083 }
0084 
0085 int KNoneFilter::inBufferAvailable() const
0086 {
0087     return d->avail_in;
0088 }
0089 
0090 int KNoneFilter::outBufferAvailable() const
0091 {
0092     return d->avail_out;
0093 }
0094 
0095 KNoneFilter::Result KNoneFilter::uncompress()
0096 {
0097 #ifndef NDEBUG
0098     if (d->mode != QIODevice::ReadOnly) {
0099         return KFilterBase::Error;
0100     }
0101 #endif
0102     return copyData();
0103 }
0104 
0105 KNoneFilter::Result KNoneFilter::compress(bool finish)
0106 {
0107     Q_ASSERT(d->mode == QIODevice::WriteOnly);
0108     Q_UNUSED(finish);
0109 
0110     return copyData();
0111 }
0112 
0113 KNoneFilter::Result KNoneFilter::copyData()
0114 {
0115     Q_ASSERT(d->avail_out > 0);
0116     if (d->avail_in > 0) {
0117         const int n = qMin(d->avail_in, d->avail_out);
0118         memcpy(d->next_out, d->next_in, n);
0119         d->avail_out -= n;
0120         d->next_in += n;
0121         d->next_out += n;
0122         d->avail_in -= n;
0123         return KFilterBase::Ok;
0124     } else {
0125         return KFilterBase::End;
0126     }
0127 }