-/** A class to hold all the buffers in a structure
- The point of this class is to hide from bufferlist what kind
- of structure the buffers are stored in. Should be no concern for
- bufferlist if the buffers is in a array or in a linked list.
-
- This class should ideally be enclosed inside class BufferList, but that
- gave me an "internal gcc error".
- */
-class BufferStorage : boost::noncopyable {
-public:
- ///
- typedef std::vector<Buffer *> Container;
- ///
- typedef Container::iterator iterator;
- ///
- typedef Container::const_iterator const_iterator;
- ///
- typedef Container::size_type size_type;
- ///
- bool empty() const { return container.empty(); }
- ///
- void release(Buffer * buf);
- ///
- Buffer * newBuffer(string const & s, bool = false);
- ///
- Container::iterator begin() { return container.begin(); }
- ///
- Container::iterator end() { return container.end(); }
- ///
- Container::const_iterator begin() const { return container.begin(); }
- ///
- Container::const_iterator end() const { return container.end(); }
- ///
- Buffer * front() { return container.front(); }
- ///
- Buffer * operator[](int c) { return container[c]; }
- ///
- size_type size() const { return container.size(); }
-private:
- ///
- Container container;
-};