X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fbufferlist.h;h=0b4efadfae45bc043d75968d3b4b03c2dbdfc1bb;hb=82ce6a82ef2c1f1e52616e603914d4184a30e507;hp=e2c0109f32a998b45e19ecdbaae0ce742da319d1;hpb=a040c0bc6f017d0591bbc7ad1aa590589dbc40ff;p=lyx.git diff --git a/src/bufferlist.h b/src/bufferlist.h index e2c0109f32..0b4efadfae 100644 --- a/src/bufferlist.h +++ b/src/bufferlist.h @@ -4,9 +4,9 @@ * * LyX, The Document Processor * Copyright 1995 Matthias Ettrich - * Copyright 1995-1999 The LyX Team + * Copyright 1995-2000 The LyX Team * - * This file is Copyright 1996 + * This file is Copyright 1996-2000 * Lars Gullik Bjønnes * * ====================================================== */ @@ -20,8 +20,7 @@ #include "buffer.h" #include "debug.h" - -#define NEW_STORE 1 +#include /** A class to hold all the buffers in a structure The point of this class is to hide from bufferlist what kind @@ -31,87 +30,45 @@ This class should ideally be enclosed inside class BufferList, but that gave me an "internal gcc error". */ -class BufferStorage { -#ifdef NEW_STORE +class BufferStorage : public noncopyable { public: /// - typedef vector Container; + typedef std::vector 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, LyXRC *, bool = false); + 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]; } /// - int size() const { return container.size(); } + size_type size() const { return container.size(); } private: /// Container container; -#else -public: - /// - BufferStorage(); - /// - bool empty(); - /// - void release(Buffer * buf); - /// - Buffer* newBuffer(string const & s, LyXRC *, bool = false); -private: - enum { - /** The max number of buffers there are possible to have - loaded at the same time. (this only applies when we use an - array) - */ - NUMBER_OF_BUFFERS = 50 - }; - - /** The Bufferlist is currently implemented as a static array. - The buffers are new'ed and deleted as reqested. - */ - Buffer *buffer[NUMBER_OF_BUFFERS]; - /// - friend class BufferStorage_Iter; -#endif }; -#ifndef NEW_STORE -/// An Iterator class for BufferStorage -class BufferStorage_Iter { -public: - /// - BufferStorage_Iter(BufferStorage const & bs) - { cs = & bs; index = 0;} - /// next - Buffer* operator() (); - /// - Buffer* operator[] (int a); -private: - /// - const BufferStorage *cs; - /// - unsigned char index; -}; -#endif - - -/** The class governing all the open buffers - This class governs all the currently open buffers. Currently all the buffer - are located in a static array, soon this will change and we will have a - linked list instead. +/** The class govern all open buffers. */ -class BufferList { +class BufferList : public noncopyable { public: /// BufferList(); @@ -125,21 +82,18 @@ public: }; /// returns the state of the bufferlist - list_state getState() { return _state; } + list_state getState() const { return state_; } /** loads a LyX file or... - If the optional argument tolastfiles is false (default is + If the optional argument tolastfiles is false (default is true), the file name will not be added to the last opened files list - */ + */ Buffer * loadLyXFile(string const & filename, bool tolastfiles = true); /// - bool empty(); - - /// Saves buffer. Returns false if unsuccesful. - bool write(Buffer *, bool makeBackup = true); + bool empty() const; /// bool QwriteAll(); @@ -154,14 +108,9 @@ public: Buffer * readFile(string const &, bool ro); /// Make a new file (buffer) using a template - Buffer * newFile(string const &, string); - - /** This one must be moved to some other place. - */ - void makePup(int); - - /// - void updateInset(Inset *, bool = true); + Buffer * newFile(string const &, string, bool isNamed=false); + /// returns a vector with all the buffers filenames + std::vector const getFileNames() const; /// int unlockInset(UpdatableInset *); @@ -171,29 +120,35 @@ public: /// void emergencyWriteAll(); - - /** closes buffer - Returns false if operation was canceled + + /** Close buffer. + @param buf the buffer that should be closed + @return #false# if operation was canceled */ - bool close(Buffer *); + bool close(Buffer * buf); /// Buffer * first(); /// returns true if the buffer exists already - bool exists(string const &); + bool exists(string const &) const; + /// returns true if the buffer is loaded + bool isLoaded(Buffer const * b) const; + /// returns a pointer to the buffer with the given name. Buffer * getBuffer(string const &); /// returns a pointer to the buffer with the given number. - Buffer * getBuffer(int); + Buffer * getBuffer(unsigned int); private: /// BufferStorage bstore; /// - list_state _state; + list_state state_; + /// + void emergencyWrite(Buffer * buf); }; #endif