Blame lang/qt/src/dataprovider.h

Packit d7e8d0
/* dataprovider.h
Packit d7e8d0
   Copyright (C) 2004 Klarälvdalens Datakonsult AB
Packit d7e8d0
    Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik
Packit d7e8d0
    Software engineering by Intevation GmbH
Packit d7e8d0
Packit d7e8d0
   This file is part of QGPGME.
Packit d7e8d0
Packit d7e8d0
   QGPGME is free software; you can redistribute it and/or modify it
Packit d7e8d0
   under the terms of the GNU Library General Public License as published
Packit d7e8d0
   by the Free Software Foundation; either version 2 of the License, or
Packit d7e8d0
   (at your option) any later version.
Packit d7e8d0
Packit d7e8d0
   QGPGME is distributed in the hope that it will be useful, but
Packit d7e8d0
   WITHOUT ANY WARRANTY; without even the implied warranty of
Packit d7e8d0
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit d7e8d0
   GNU Library General Public License for more details.
Packit d7e8d0
Packit d7e8d0
   You should have received a copy of the GNU Library General Public License
Packit d7e8d0
   along with QGPGME; see the file COPYING.LIB.  If not, write to the
Packit d7e8d0
   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Packit d7e8d0
   Boston, MA 02110-1301, USA. */
Packit d7e8d0
Packit d7e8d0
// -*- c++ -*-
Packit d7e8d0
#ifndef __QGPGME_DATAPROVIDER_H__
Packit d7e8d0
#define __QGPGME_DATAPROVIDER_H__
Packit d7e8d0
Packit d7e8d0
#include "qgpgme_export.h"
Packit d7e8d0
#include <interfaces/dataprovider.h>
Packit d7e8d0
#include <memory>
Packit d7e8d0
Packit d7e8d0
#include <QtCore/QByteArray>
Packit d7e8d0
Packit d7e8d0
Packit d7e8d0
class QIODevice;
Packit d7e8d0
Packit d7e8d0
namespace QGpgME
Packit d7e8d0
{
Packit d7e8d0
Packit d7e8d0
class QGPGME_EXPORT QByteArrayDataProvider : public GpgME::DataProvider
Packit d7e8d0
{
Packit d7e8d0
public:
Packit d7e8d0
    QByteArrayDataProvider();
Packit d7e8d0
    explicit QByteArrayDataProvider(const QByteArray &initialData);
Packit d7e8d0
    ~QByteArrayDataProvider();
Packit d7e8d0
Packit d7e8d0
    const QByteArray &data() const
Packit d7e8d0
    {
Packit d7e8d0
        return mArray;
Packit d7e8d0
    }
Packit d7e8d0
Packit d7e8d0
private:
Packit d7e8d0
    // these shall only be accessed through the dataprovider
Packit d7e8d0
    // interface, where they're public:
Packit Service 30b792
    bool isSupported(Operation) const override
Packit d7e8d0
    {
Packit d7e8d0
        return true;
Packit d7e8d0
    }
Packit Service 30b792
    ssize_t read(void *buffer, size_t bufSize) override;
Packit Service 30b792
    ssize_t write(const void *buffer, size_t bufSize) override;
Packit Service 30b792
    off_t seek(off_t offset, int whence) override;
Packit Service 30b792
    void release() override;
Packit d7e8d0
Packit d7e8d0
private:
Packit d7e8d0
    QByteArray mArray;
Packit d7e8d0
    off_t mOff;
Packit d7e8d0
};
Packit d7e8d0
Packit d7e8d0
class QGPGME_EXPORT QIODeviceDataProvider : public GpgME::DataProvider
Packit d7e8d0
{
Packit d7e8d0
public:
Packit d7e8d0
    explicit QIODeviceDataProvider(const std::shared_ptr<QIODevice> &initialData);
Packit d7e8d0
    ~QIODeviceDataProvider();
Packit d7e8d0
Packit d7e8d0
    const std::shared_ptr<QIODevice> &ioDevice() const
Packit d7e8d0
    {
Packit d7e8d0
        return mIO;
Packit d7e8d0
    }
Packit d7e8d0
Packit d7e8d0
private:
Packit d7e8d0
    // these shall only be accessed through the dataprovider
Packit d7e8d0
    // interface, where they're public:
Packit Service 30b792
    bool isSupported(Operation) const override;
Packit Service 30b792
    ssize_t read(void *buffer, size_t bufSize) override;
Packit Service 30b792
    ssize_t write(const void *buffer, size_t bufSize) override;
Packit Service 30b792
    off_t seek(off_t offset, int whence) override;
Packit Service 30b792
    void release() override;
Packit d7e8d0
Packit d7e8d0
private:
Packit d7e8d0
    const std::shared_ptr<QIODevice> mIO;
Packit d7e8d0
    bool mErrorOccurred : 1;
Packit d7e8d0
    bool mHaveQProcess  : 1;
Packit d7e8d0
};
Packit d7e8d0
Packit d7e8d0
} // namespace QGpgME
Packit d7e8d0
Packit d7e8d0
#endif