107 lines
4.3 KiB
C++
107 lines
4.3 KiB
C++
//! \~\ingroup IO
|
|
//! \~\{
|
|
//! \~\file piiostring.h
|
|
//! \~\brief
|
|
//! \~english PIIODevice wrapper around PIString
|
|
//! \~russian Обертка PIIODevice вокруг PIString
|
|
//! \~\}
|
|
/*
|
|
PIP - Platform Independent Primitives
|
|
PIIODevice wrapper around PIString
|
|
Ivan Pelipenko peri4ko@yandex.ru
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Lesser General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef PIIOSTRING_H
|
|
#define PIIOSTRING_H
|
|
|
|
#include "piiodevice.h"
|
|
|
|
|
|
//! \~\ingroup IO
|
|
//! \~\brief
|
|
//! \~english PIIODevice wrapper around PIString.
|
|
//! \~russian Обёртка PIIODevice вокруг PIString.
|
|
//! \~\details
|
|
//! \~english PIIOString provides a PIIODevice interface for reading from and writing to PIString objects.
|
|
//! \~russian PIIOString предоставляет интерфейс PIIODevice для чтения и записи объектов PIString.
|
|
class PIP_EXPORT PIIOString: public PIIODevice {
|
|
PIIODEVICE(PIIOString, "");
|
|
|
|
public:
|
|
//! \~english Constructs %PIIOString with "string" content and "mode" open mode.
|
|
//! \~russian Создает %PIIOString с содержимым "string" и режимом открытия "mode".
|
|
explicit PIIOString(PIString * string = 0, PIIODevice::DeviceMode mode = PIIODevice::ReadOnly);
|
|
|
|
//! \~english Constructs %PIIOString with "string" content only for read.
|
|
//! \~russian Создает %PIIOString с содержимым "string" только для чтения.
|
|
explicit PIIOString(const PIString & string);
|
|
|
|
//! \~english Returns content
|
|
//! \~russian Возвращает содержимое
|
|
PIString * string() const { return str; }
|
|
|
|
//! \~english Clear content string
|
|
//! \~russian Очищает содержимое строки
|
|
void clear();
|
|
|
|
//! \~english Open "string" content with "mode" open mode
|
|
//! \~russian Открывает содержимое "string" с режимом открытия "mode"
|
|
bool open(PIString * string, PIIODevice::DeviceMode mode = PIIODevice::ReadWrite);
|
|
|
|
//! \~english Open "string" content only for read
|
|
//! \~russian Открывает содержимое "string" только для чтения
|
|
bool open(const PIString & string);
|
|
|
|
//! \~english Returns if position is at the end of content.
|
|
//! \~russian Возвращает, находится ли позиция в конце содержимого.
|
|
bool isEnd() const;
|
|
|
|
|
|
//! \~english Move read/write position to "position"
|
|
//! \~russian Перемещает позицию чтения/записи на "position"
|
|
void seek(llong position) { pos = position; }
|
|
|
|
//! \~english Move read/write position to the beginning of the string
|
|
//! \~russian Перемещает позицию чтения/записи на начало строки
|
|
void seekToBegin();
|
|
|
|
//! \~english Move read/write position to the end of the string
|
|
//! \~russian Перемещает позицию чтения/записи на конец строки
|
|
void seekToEnd();
|
|
|
|
|
|
//! \~english Reads one text line and returns it.
|
|
//! \~russian Читает одну текстовую строку и возвращает её.
|
|
PIString readLine();
|
|
|
|
//! \~english Inserts string "string" into content at current position.
|
|
//! \~russian Вставляет строку "string" в содержимое буфера в текущую позицию.
|
|
int writeString(const PIString & string);
|
|
|
|
ssize_t bytesAvailable() const override;
|
|
|
|
protected:
|
|
bool openDevice() override;
|
|
ssize_t readDevice(void * read_to, ssize_t max_size) override;
|
|
ssize_t writeDevice(const void * data, ssize_t max_size) override;
|
|
DeviceInfoFlags deviceInfoFlags() const override { return PIIODevice::Sequential | PIIODevice::Reliable; }
|
|
|
|
ssize_t pos = 0;
|
|
PIString * str = nullptr;
|
|
};
|
|
|
|
#endif // PIIOSTRING_H
|