X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fbufferlist.h;h=2ca9fefe551d2db3404e8b16ba85323abf66b422;hb=8ebf862adbe377d032f888a82d88d4393aebc929;hp=83ed0b8870ca57318c5b5683d5d822bcc6f59727;hpb=99d1627a471b92f403598d03dfc861ddc3c11be0;p=lyx.git diff --git a/src/bufferlist.h b/src/bufferlist.h index 83ed0b8870..2ca9fefe55 100644 --- a/src/bufferlist.h +++ b/src/bufferlist.h @@ -1,177 +1,102 @@ // -*- C++ -*- -/** \file - * Copyright 2002 the LyX Team - * Read the file COPYING +/** + * \file bufferlist.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author Lars Gullik Bjønnes * - * \author Lars Gullik Bjønnes -*/ + * Full author contact details are available in file CREDITS. + */ #ifndef BUFFER_LIST_H #define BUFFER_LIST_H -#include "LString.h" - #include +#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 - 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 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; -}; - +class OutputParams; /** - 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... - - \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() const; + /// write all buffers, asking the user, returns false if cancelled + bool quitWriteAll(); + + /// create a new buffer + Buffer * newBuffer(std::string const & s, bool ronly = false); - /// - bool qwriteAll(); + /// delete a buffer + void release(Buffer * b); /// Close all open buffers. void closeAll(); - /** - 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, bool isNamed = false); /// returns a vector with all the buffers filenames - std::vector const getFileNames() const; - - /// - int unlockInset(UpdatableInset *); + std::vector const getFileNames() const; - /// - void updateIncludedTeXfiles(string const &); + /// FIXME + void updateIncludedTeXfiles(std::string const &, OutputParams const &); - /// + /// emergency save for all buffers void emergencyWriteAll(); - /** - Close buffer. - \param buf the buffer that should be closed - \return #false# if operation was canceled - */ - bool close(Buffer * buf); + /// close buffer. Returns false if cancelled by user + bool close(Buffer * buf, bool ask); + + /// return true if no buffers loaded + bool empty() const; - /// + /// return head of buffer list if any Buffer * first(); /// returns true if the buffer exists already - bool exists(string const &) const; + bool exists(std::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 &); + Buffer * getBuffer(std::string const &); /// returns a pointer to the buffer with the given number. Buffer * getBuffer(unsigned int); + /// returns a pointer to the buffer whose temppath matches the string + Buffer * getBufferFromTmp(std::string const &); + + /** returns a pointer to the buffer that follows argument in + * buffer list. The buffer following the last in list is the + * first one. + */ + Buffer * next(Buffer const *) const; + + /** returns a pointer to the buffer that precedes argument in + * buffer list. The buffer preceding the first in list is the + * last one. + */ + Buffer * previous(Buffer const *) const; /// reset current author for all buffers - void setCurrentAuthor(string const & name, string const & email); + void setCurrentAuthor(std::string const & name, std::string const & email); private: - /// ask to save a buffer on quit - bool qwriteOne(Buffer * buf, string const & fname, - string & unsaved_list); + /// ask to save a buffer on quit, returns false if should cancel + bool quitWriteBuffer(Buffer * buf); + + typedef std::vector BufferStorage; - /// + /// storage of all buffers BufferStorage bstore; - /// - list_state state_; - /// + /// save emergency file for the given buffer void emergencyWrite(Buffer * buf); }; -#endif +#endif // BUFFERLIST_H