Andrei Alexandrescu Wrote: > A simple input buffered stream of T would be a range of T[] that has two > extra primitives: > > T[] lookAhead(size_t n); > void leaveBehind(size_t n);
T front(); T[] front(size_t n); // bulk front void popFront(size_t n=1); // bulk popFront > I'm not sure there's a need for formalizing a buffered output interface > (we could simply make buffering transparent, in which case there's only > need for primitives that get and set the size of the buffer). > > In case we do want to formalize an output buffer, it would need > primitives such as: > > T[] getBuffer(size_t n); > void commitBuffer(size_t n); void put(T); // as usual void put(T[]); // bulk put; can pass a slice of the buffer from getBuffer ?