7 #include <aocommon/lane.h>
8 #include <aocommon/uvector.h>
15 template <
typename Tp>
18 typedef typename aocommon::Lane<Tp>::size_type
size_type;
19 typedef typename aocommon::Lane<Tp>::value_type
value_type;
24 : _buffer_size(buffer_size), _lane(lane) {
25 _buffer.reserve(buffer_size);
32 _buffer.reserve(buffer_size);
33 _buffer_size = buffer_size;
43 _buffer.push_back(element);
44 if (_buffer.size() == _buffer_size)
flush();
48 _buffer.push_back(std::move(element));
49 if (_buffer.size() == _buffer_size)
flush();
52 template <
typename... Args>
54 _buffer.emplace_back(args...);
55 if (_buffer.size() == _buffer_size)
flush();
64 _lane->move_write(&_buffer[0], _buffer.size());
70 std::vector<value_type> _buffer;
71 aocommon::Lane<Tp>* _lane;
74 template <
typename Tp>
78 : _buffer(buffer_size),
80 _buffer_fill_count(0),
86 if (_buffer_pos == _buffer_fill_count) {
87 _buffer_fill_count = _lane->read(_buffer.data(), _buffer.size());
89 if (_buffer_fill_count == 0)
return false;
91 element = std::move(_buffer[_buffer_pos]);
100 aocommon::UVector<Tp> _buffer;
101 std::size_t _buffer_pos;
102 std::size_t _buffer_fill_count;
103 aocommon::Lane<Tp>* _lane;
Definition: buffered_lane.h:75
bool read(Tp &element)
Definition: buffered_lane.h:85
lane_read_buffer(aocommon::Lane< Tp > *lane, size_t buffer_size)
Definition: buffered_lane.h:77
~lane_read_buffer()
Definition: buffered_lane.h:83
Definition: buffered_lane.h:16
void write(const value_type &element)
Definition: buffered_lane.h:42
lane_write_buffer(aocommon::Lane< Tp > *lane, size_type buffer_size)
Definition: buffered_lane.h:23
void clear()
Definition: buffered_lane.h:37
~lane_write_buffer()
Definition: buffered_lane.h:28
aocommon::Lane< Tp >::value_type value_type
Definition: buffered_lane.h:19
void write(value_type &&element)
Definition: buffered_lane.h:47
void write_end()
Definition: buffered_lane.h:58
void flush()
Definition: buffered_lane.h:63
aocommon::Lane< Tp >::size_type size_type
Definition: buffered_lane.h:18
lane_write_buffer()
Definition: buffered_lane.h:21
void reset(aocommon::Lane< Tp > *lane, size_type buffer_size)
Definition: buffered_lane.h:30
void emplace(Args &&... args)
Definition: buffered_lane.h:53
This file has generic helper routines for testing steps.
Definition: AntennaConfig.h:53