X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fbufferlist.h;h=2ca9fefe551d2db3404e8b16ba85323abf66b422;hb=b9963e1a57135c3e2ab128a9ec4300f0e4886992;hp=0b4efadfae45bc043d75968d3b4b03c2dbdfc1bb;hpb=e7401bd8f2310213b4b765c01676459f37adb530;p=lyx.git diff --git a/src/bufferlist.h b/src/bufferlist.h index 0b4efadfae..2ca9fefe55 100644 --- a/src/bufferlist.h +++ b/src/bufferlist.h @@ -1,154 +1,102 @@ // -*- C++ -*- -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor - * Copyright 1995 Matthias Ettrich - * Copyright 1995-2000 The LyX Team +/** + * \file bufferlist.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * This file is Copyright 1996-2000 - * 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 -#ifdef __GNUG__ -#pragma interface -#endif - -#include "buffer.h" -#include "debug.h" #include -/** 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 : public noncopyable { -public: - /// - 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, 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]; } - /// - size_type size() const { return container.size(); } -private: - /// - Container container; -}; +#include +#include +class Buffer; +class OutputParams; -/** The class govern all open buffers. +/** + * The class holds all all open buffers, and handles construction + * and deletions of new ones. */ -class BufferList : public noncopyable { +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... - 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() const; + BufferList(); + + /// 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(); - /// - void resize(); + /// returns a vector with all the buffers filenames + std::vector const getFileNames() const; - /// Read a file into a buffer readonly or not. - Buffer * readFile(string const &, bool ro); + /// FIXME + void updateIncludedTeXfiles(std::string const &, OutputParams const &); - /// 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; + /// emergency save for all buffers + void emergencyWriteAll(); - /// - int unlockInset(UpdatableInset *); + /// close buffer. Returns false if cancelled by user + bool close(Buffer * buf, bool ask); - /// - void updateIncludedTeXfiles(string const &); + /// return true if no buffers loaded + bool empty() const; - /// - void emergencyWriteAll(); - - /** Close buffer. - @param buf the buffer that should be closed - @return #false# if operation was canceled - */ - bool close(Buffer * buf); - - /// + /// 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(std::string const & name, std::string const & email); private: - /// + /// 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