|
Boost : |
From: nbecker_at_[hidden]
Date: 2002-01-29 08:03:04
I'm trying to learn to use iterator helpers, but I need a little
help. The only example I found I don't understand. Maybe I need a
more basic example.
I'm trying a simple example. The class "fifo" has a circular buffer
with seperate read and write pointers. I'd like to implement
begin_r(), end_r(), begin_w(), and end_w() which will give appropriate
iterators for read and write.
BTW, here is fifo:
#ifndef fifo_H
#define fifo_H
#include <vector>
using std::vector;
template<typename in_t>
class fifo {
public:
fifo (size_t size, initReadIndex = 0, initWriteIndex = 0) :
dat (size+1),
read_index (initReadIndex),
write_index (initWriteIndex)
{}
void Write (in_t x, int i) {
dat[index (i + write_index)] = x;
}
in_t Read (int i) {
return dat[index (i + read_index)];
}
void AdvWrIndex (int i) {
write_index += i;
}
void AdvRdIndex (int i) {
read_index += i;
}
private:
int index (int offset) {
int x = (offset) % int(allocated);
if (x >= 0)
return x;
else
return x + allocated;
}
vector<in_t> dat;
size_t allocated;
int write_index;
int read_index;
};
#endif
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk