1 #ifndef IOUTILITIES_COPY_H
2 #define IOUTILITIES_COPY_H
19 void copy(std::istream &input, std::ostream &output, std::size_t count);
20 void callbackCopy(std::istream &input, std::ostream &output, std::size_t count,
const std::function<
bool(
void)> &isAborted,
21 const std::function<
void(
double)> &callback);
24 const std::function<
void(
double)> &callback);
28 char m_buffer[bufferSize];
45 while (count > bufferSize) {
46 input.read(m_buffer, bufferSize);
47 output.write(m_buffer, bufferSize);
50 input.read(m_buffer, count);
51 output.write(m_buffer, count);
64 template <std::
size_t bufferSize>
66 const std::function<
void(
double)> &callback)
68 const std::size_t totalBytes = count;
69 while (count > bufferSize) {
70 input.read(m_buffer, bufferSize);
71 output.write(m_buffer, bufferSize);
76 callback(
static_cast<double>(totalBytes - count) / totalBytes);
78 input.read(m_buffer, count);
79 output.write(m_buffer, count);
92 copy(
static_cast<std::istream &
>(input),
static_cast<std::ostream &
>(output), count);
106 template <std::
size_t bufferSize>
108 const std::function<
bool(
void)> &isAborted,
const std::function<
void(
double)> &callback)
110 callbackCopy(
static_cast<std::istream &
>(input),
static_cast<std::ostream &
>(output), count, isAborted, callback);
122 #endif // IOUTILITIES_COPY_H