qBittorrent
Utils::IO::FileDeviceOutputIterator Class Reference

#include <io.h>

Public Types

using iterator_category = std::output_iterator_tag
 
using difference_type = void
 
using value_type = void
 
using pointer = void
 
using reference = void
 

Public Member Functions

 FileDeviceOutputIterator (QFileDevice &device, const int bufferSize=(4 *1024))
 
 FileDeviceOutputIterator (const FileDeviceOutputIterator &other)=default
 
 ~FileDeviceOutputIterator ()
 
FileDeviceOutputIteratoroperator= (char c)
 
constexpr FileDeviceOutputIteratoroperator* ()
 
constexpr FileDeviceOutputIteratoroperator++ ()
 
constexpr FileDeviceOutputIteratoroperator++ (int)
 

Private Attributes

QFileDevice * m_device
 
std::shared_ptr< QByteArray > m_buffer
 
int m_bufferSize
 

Detailed Description

Definition at line 45 of file io.h.

Member Typedef Documentation

◆ difference_type

Definition at line 50 of file io.h.

◆ iterator_category

Definition at line 49 of file io.h.

◆ pointer

Definition at line 52 of file io.h.

◆ reference

Definition at line 53 of file io.h.

◆ value_type

Definition at line 51 of file io.h.

Constructor & Destructor Documentation

◆ FileDeviceOutputIterator() [1/2]

Utils::IO::FileDeviceOutputIterator::FileDeviceOutputIterator ( QFileDevice &  device,
const int  bufferSize = (4 * 1024) 
)
explicit

Definition at line 39 of file io.cpp.

40  : m_device {&device}
41  , m_buffer {std::make_shared<QByteArray>()}
42  , m_bufferSize {bufferSize}
43 {
44  m_buffer->reserve(bufferSize);
45 }
std::shared_ptr< QByteArray > m_buffer
Definition: io.h:79

References m_buffer.

◆ FileDeviceOutputIterator() [2/2]

Utils::IO::FileDeviceOutputIterator::FileDeviceOutputIterator ( const FileDeviceOutputIterator other)
default

◆ ~FileDeviceOutputIterator()

Utils::IO::FileDeviceOutputIterator::~FileDeviceOutputIterator ( )

Definition at line 47 of file io.cpp.

48 {
49  if (m_buffer.use_count() == 1)
50  {
51  if (m_device->error() == QFileDevice::NoError)
52  m_device->write(*m_buffer);
53  m_buffer->clear();
54  }
55 }

Member Function Documentation

◆ operator*()

constexpr FileDeviceOutputIterator& Utils::IO::FileDeviceOutputIterator::operator* ( )
inlineconstexpr

Definition at line 62 of file io.h.

63  {
64  return *this;
65  }

◆ operator++() [1/2]

constexpr FileDeviceOutputIterator& Utils::IO::FileDeviceOutputIterator::operator++ ( )
inlineconstexpr

Definition at line 67 of file io.h.

68  {
69  return *this;
70  }

◆ operator++() [2/2]

constexpr FileDeviceOutputIterator& Utils::IO::FileDeviceOutputIterator::operator++ ( int  )
inlineconstexpr

Definition at line 72 of file io.h.

73  {
74  return *this;
75  }

◆ operator=()

Utils::IO::FileDeviceOutputIterator & Utils::IO::FileDeviceOutputIterator::operator= ( char  c)

Definition at line 57 of file io.cpp.

58 {
59  m_buffer->append(c);
60  if (m_buffer->size() >= m_bufferSize)
61  {
62  if (m_device->error() == QFileDevice::NoError)
63  m_device->write(*m_buffer);
64  m_buffer->clear();
65  }
66  return *this;
67 }

Member Data Documentation

◆ m_buffer

std::shared_ptr<QByteArray> Utils::IO::FileDeviceOutputIterator::m_buffer
private

Definition at line 79 of file io.h.

Referenced by FileDeviceOutputIterator().

◆ m_bufferSize

int Utils::IO::FileDeviceOutputIterator::m_bufferSize
private

Definition at line 80 of file io.h.

◆ m_device

QFileDevice* Utils::IO::FileDeviceOutputIterator::m_device
private

Definition at line 78 of file io.h.


The documentation for this class was generated from the following files: