X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fbufferlist.h;h=b24f813d20f721886a41beedc10a901aec016b2f;hb=545777433a65fd90ad3bb18be33d8e741c622853;hp=3c215a088120e543ee6a12bfdcd46ecd7ccd595d;hpb=e656d12d0bd2c82dfb64454fcdd0732cca6565b4;p=lyx.git diff --git a/src/bufferlist.h b/src/bufferlist.h index 3c215a0881..b24f813d20 100644 --- a/src/bufferlist.h +++ b/src/bufferlist.h @@ -1,15 +1,10 @@ // -*- C++ -*- -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor - * Copyright 1995 Matthias Ettrich - * Copyright 1995-1999 The LyX Team +/** \file + * Copyright 2002 the LyX Team + * Read the file COPYING * - * This file is Copyright 1996 - * Lars Gullik Bjønnes - * - * ====================================================== */ + * \author Lars Gullik Bjønnes +*/ #ifndef BUFFER_LIST_H #define BUFFER_LIST_H @@ -18,8 +13,14 @@ #pragma interface #endif -#include "buffer.h" -#include "debug.h" +#include "LString.h" + +#include + +#include + +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 @@ -29,43 +30,64 @@ This class should ideally be enclosed inside class BufferList, but that gave me an "internal gcc error". */ -class BufferStorage { +class BufferStorage : boost::noncopyable { public: /// - typedef vector Container; + typedef std::vector Container; /// typedef Container::iterator iterator; /// - bool empty() const { return container.empty(); } + 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); - /// - Buffer * newBuffer(string const & s, LyXRC *, bool = false); + /** + \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]; } - /// - int size() const { return container.size(); } + /** + 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 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 holds all all open buffers, and handles construction + and deletions of new ones. */ -class BufferList { +class BufferList : boost::noncopyable { public: /// - BufferList(); + BufferList(); /// state info enum list_state { @@ -76,43 +98,38 @@ public: }; /// returns the state of the bufferlist - list_state getState() { return _state; } - - /** loads a LyX file or... - 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, + list_state getState() const { return state_; } + + /** + Loads a LyX file or... + + \param filename The filename to read from. + \param tolastfiles Wether the file should be put in the + last opened files list or not. + \return The newly loaded LyX file. + */ + Buffer * loadLyXFile(string const & filename, bool tolastfiles = true); - - /// - bool empty(); - /// Saves buffer. Returns false if unsuccesful. - bool write(Buffer *, bool makeBackup); + /// + bool empty() const; /// - bool QwriteAll(); + bool qwriteAll(); /// Close all open buffers. void closeAll(); - /// - void resize(); - - /// Read a file into a buffer readonly or not. + /** + Read a file into a buffer readonly or not. + \return + */ 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 *); @@ -123,28 +140,38 @@ 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: + /// ask to save a buffer on quit + bool qwriteOne(Buffer * buf, string const & fname, + string & unsaved_list); + /// BufferStorage bstore; - + + /// + list_state state_; /// - list_state _state; + void emergencyWrite(Buffer * buf); }; #endif