1 #ifndef IRIS_BUFFERED_WRITER_H_
2 #define IRIS_BUFFERED_WRITER_H_
10 struct buffered_writer {
12 buffered_writer(const buffered_writer & rhs)=delete;
13 struct buffered_writer & operator=(const buffered_writer &rhs)=delete;
20 buffered_writer(writer & w, size_t cap = 0);
24 void expand(size_t n);
30 inline char * reserve(size_t s) {
31 if (freespace() < s) {
34 throw std::bad_alloc();
37 return write_pointer();
40 inline size_t freespace() {
41 return m_capacity - m_pos;
44 inline void inc_write_pointer(size_t s) {
48 inline char * write_pointer() {
52 inline size_t size() {
56 inline operator char*() {
61 m_w.write(m_buf, m_pos);