1 #ifndef OSMIUM_IO_OUTPUT_ITERATOR_HPP
2 #define OSMIUM_IO_OUTPUT_ITERATOR_HPP
52 template <
class TDest>
53 class OutputIterator :
public std::iterator<std::output_iterator_tag, osmium::memory::Item> {
60 buffer(buffer_size,
osmium::memory::Buffer::auto_grow::
no) {
73 explicit OutputIterator(TDest& destination,
const size_t buffer_size = default_buffer_size) :
74 m_destination(&destination),
88 std::swap(m_buffer_wrapper->buffer, buffer);
89 (*m_destination)(std::move(buffer));
94 m_buffer_wrapper->buffer.push_back(item);
97 m_buffer_wrapper->buffer.push_back(item);
124 #endif // OSMIUM_IO_OUTPUT_ITERATOR_HPP
OutputIterator & operator=(const osmium::DiffObject &diff)
Definition: output_iterator.hpp:102
TDest * m_destination
Definition: output_iterator.hpp:67
Definition: diff_object.hpp:47
Definition: output_iterator.hpp:53
Definition: reader_iterator.hpp:39
Definition: output_iterator.hpp:55
buffer_wrapper(size_t buffer_size)
Definition: output_iterator.hpp:59
Namespace for everything in the Osmium library.
Definition: assembler.hpp:55
OutputIterator & operator++(int)
Definition: output_iterator.hpp:114
osmium::memory::Buffer buffer
Definition: output_iterator.hpp:57
std::shared_ptr< buffer_wrapper > m_buffer_wrapper
Definition: output_iterator.hpp:69
OutputIterator & operator*()
Definition: output_iterator.hpp:106
OutputIterator & operator=(const OutputIterator &)=default
void flush()
Definition: output_iterator.hpp:86
const osmium::OSMObject & curr() const noexcept
Definition: diff_object.hpp:79
static constexpr size_t default_buffer_size
Definition: output_iterator.hpp:65
Definition: buffer.hpp:94
Definition: buffer.hpp:57
OutputIterator(TDest &destination, const size_t buffer_size=default_buffer_size)
Definition: output_iterator.hpp:73
~OutputIterator()=default
OutputIterator & operator=(const osmium::memory::Item &item)
Definition: output_iterator.hpp:92
OutputIterator & operator++()
Definition: output_iterator.hpp:110