-class UpdatableInset;
-
-/** 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;
- /**
- Is the container empty or not.
- \return True if the container is empty, False otherwise.
- */
- bool empty() const { return container.empty(); }
- /**
- Releases the passed buffer from the storage and deletes
- all resources.
- \param buf The buffer to release.
- */
- void release(Buffer * buf);
- /**
- \param s The name of the file to base the buffer on.
- \param ronly If the buffer should be created read only of not.
- \return The newly created buffer.
- */
- Buffer * newBuffer(string const & s, bool ronly = 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]; }
- /**
- What is the size of the container.
- \return The size of the container.
- */
- size_type size() const { return container.size(); }
-private:
- ///
- Container container;
-};
-