class PieceBuffer { public: PieceBuffer(int size) :buffer_(size) { } ~PieceBuffer() { } public: void write(const char* data, int offset, int length) { ::memcpy(base()+offset, data, length); } void read(int offset, int length, std::vector
& ret) { ret.clear(); ret.assign(base()+offset, &buffer_[offset+length]); } char* base() { return &buffer_[0]; } int length() const { return (int)buffer_.size(); } private: std::vector
buffer_; };