X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flastfiles.h;h=e3f24765c18de47f93c9cc996488327413864352;hb=8d1c58af82d1fc356f470dff97878ab7c3e8a2fe;hp=64dc4b528351b5eff34b006090acc3c0e4493300;hpb=0eccdd1c3613e5170deb77b22174dd0afde833e9;p=lyx.git diff --git a/src/lastfiles.h b/src/lastfiles.h index 64dc4b5283..e3f24765c1 100644 --- a/src/lastfiles.h +++ b/src/lastfiles.h @@ -1,127 +1,108 @@ // -*- C++ -*- /* This file is part of -* ====================================================== -* -* LyX, The Document Processor -* -* Copyright (C) 1995 1996 Matthias Ettrich -* and the LyX Team. -* -*======================================================*/ + * ====================================================== + * + * LyX, The Document Processor + * + * Copyright 1995 Matthias Ettrich + * Copyright 1995-2001 The LyX Team. + * + * ====================================================== */ -#ifndef _LASTFILES_H -#define _LASTFILES_H +#ifndef LASTFILES_H +#define LASTFILES_H #ifdef __GNUG__ #pragma interface #endif -#include "LString.h" +#include +#include "LString.h" +#include -/** The latest documents loaded - This class takes care of the last .lyx files used by the LyX user. It - both reads and writes this information to a file. The number of files - kept are user defined, but defaults to four. +/** The latest documents loaded. + This class takes care of the last .lyx files used by the LyX user. It + both reads and writes this information to a file. The number of files + kept are user defined, but defaults to four. + @author Lars Gullik Bjønnes */ -class LastFiles -{ +class LastFiles : boost::noncopyable { public: - /**@name Constructors and Deconstructors */ - //@{ - /** - Parameters are: name of file to read. Whether you want LastFiles - to check for file existance, and the number of files to remember. - */ - LastFiles(string const &, bool dostat = true, char num = 4); /// - ~LastFiles(); - //@} + typedef std::deque Files; - /**@name Methods */ - //@{ - /** - This funtion inserts #file# into the last files list. If the file - already exist it is moved to the top of the list. If it don't - exist it is placed on the top of the list. If the list already is - full the last visited file in the list is puched out and deleted. - */ - void newFile(string const &); - /** Writes the lastfiles table to disk. A " is placed around the - filenames to preserve special chars. (not all are preserved - anyway, but at least space is.) - */ - void writeFile(string const &) const; - //@} + /// + typedef Files::const_iterator const_iterator; + + /** Read the lastfiles file. + @param file The file to read the lastfiles form. + @param dostat Whether to check for file existance. + @param num number of files to remember. + */ + explicit + LastFiles(string const & file, + bool dostat = true, unsigned int num = 4); + + /** Insert #file# into the list. + This funtion inserts #file# into the last files list. If the file + already exist it is moved to the top of the list, else exist it + is placed on the top of the list. If the list is full the last + file in the list is popped from the end. + @param file the file to insert in the list. + */ + void newFile(string const & file); + /** Writes the lastfiles table to disk. + Writes one file on each line, this way we can at least have + some special chars (e.g. space), but newline in filenames + are thus not allowed. + @param file the file we write the lastfiles list to. + */ + void writeFile(string const & file) const; + /** Return file #n# in the lastfiles list. + @param n number in the list to get + */ + string const operator[](unsigned int n) const; + /// Iterator to the beginning of the list. + Files::const_iterator begin() const { return files.begin(); } + /// Iterator to the end of the list. + Files::const_iterator end() const { return files.end(); } private: - /**@name const variables */ - //@{ - /// - enum { - /// - DEFAULTFILES = 4 - }; - /** There is no point in keeping more than this number of files - at the same time. However perhaps someday someone finds use for - more files and wants to change it. Please do. But don't show - the files in a menu... - */ - enum { - /// + /** Local constants. + It is more portable among different C++ compilers to use + an enum instead of #int const XXX# + */ + enum local_constants { + /// Default number of lastfiles. + DEFAULTFILES = 4, + /** Max number of lastfiles. + There is no point in keeping more than this number + of files at the same time. However perhaps someday + someone finds use for more files and wants to + change it. Please do. But don't show the files in + a menu... + */ ABSOLUTEMAXLASTFILES = 20 }; - //@} - - /**@name Variables */ - //@{ - /// an array of lastfiles - string *files; + + /// a list of lastfiles + Files files; /// number of files in the lastfiles list. - char num_files; + unsigned int num_files; /// check for file existance or not. bool dostat; - //@} - /**@name Methods */ - //@{ - /** reads the .lyx_lastfiles at the beginning of the LyX session. - This will read the lastfiles file (usually .lyx_lastfiles). It - will normally discard files that don't exist anymore, unless - LastFiles has been initialized with dostat = false. - */ - void readFile(string const &); - /// used by the constructor to set the number of stored last files. - void setNumberOfFiles(char num); - //@} - - /**@name Friends */ - //@{ - /// - friend class LastFiles_Iter; - //@} + /** Read the lastfiles file. + Reads the #.lyx_lastfiles# at the beginning of the LyX session. + This will read the lastfiles file (usually #.lyx_lastfiles#). It + will normally discard files that don't exist anymore, unless + LastFiles has been initialized with #dostat = false#. + @param file the file containing the lastfiles. + */ + void readFile(string const & file); + /** Used by the constructor to set the number of stored last files. + @param num the number of lastfiles to set. + */ + void setNumberOfFiles(unsigned int num); }; - - -/// An Iterator class for LastFiles -class LastFiles_Iter { -public: - /// - LastFiles_Iter(const LastFiles& la) - {cs = &la; index = 0;} - /// - string operator() () - { - return (index < cs->num_files)? cs->files[index++] - : string(); - } - /// - string operator[] (int a) - { return cs->files[a];} -private: - /// - const LastFiles *cs; - /// - char index; -}; - #endif