On Tue, Oct 22, 2002 at 03:19:56AM +0100, John Levon wrote:
> I do not understand the point in this separate class.
Here's a patch
john
Index: BufferView_pimpl.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/BufferView_pimpl.C,v
retrieving revision 1.314
diff -u -r1.314 BufferView_pimpl.C
--- BufferView_pimpl.C 21 Oct 2002 15:29:41 -0000 1.314
+++ BufferView_pimpl.C 22 Oct 2002 02:41:20 -0000
@@ -171,7 +171,9 @@
// set current buffer
buffer_ = b;
- if (bufferlist.getState() == BufferList::CLOSING) return;
+ // if we're quitting lyx, don't bother updating stuff
+ if (quitting)
+ return;
// if we are closing the buffer, use the first buffer as current
if (!buffer_) {
Index: bufferlist.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/bufferlist.h,v
retrieving revision 1.33
diff -u -r1.33 bufferlist.h
--- bufferlist.h 21 Mar 2002 17:25:09 -0000 1.33
+++ bufferlist.h 22 Oct 2002 02:41:20 -0000
@@ -22,84 +22,14 @@
class Buffer;
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;
-};
-
-
/**
- The class holds all all open buffers, and handles construction
- and deletions of new ones.
+ * The class holds all all open buffers, and handles construction
+ * and deletions of new ones.
*/
class BufferList : boost::noncopyable {
public:
- ///
BufferList();
- /// state info
- enum list_state {
- ///
- OK,
- ///
- CLOSING
- };
-
- /// returns the state of the bufferlist
- list_state getState() const { return state_; }
-
/**
Loads a LyX file or...
@@ -117,6 +47,12 @@
///
bool qwriteAll();
+ /// create a new buffer
+ Buffer * newBuffer(string const & s, bool ronly = false);
+
+ /// delete a buffer
+ void release(Buffer * b);
+
/// Close all open buffers.
void closeAll();
@@ -165,13 +101,13 @@
bool qwriteOne(Buffer * buf, string const & fname,
string & unsaved_list);
- ///
+ typedef std::vector<Buffer *> BufferStorage;
+
+ /// storage of all buffers
BufferStorage bstore;
///
- list_state state_;
- ///
void emergencyWrite(Buffer * buf);
};
-#endif
+#endif // BUFFERLIST_H