X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferList.cpp;h=0aac272208aa1f14764be006f0d5b766751e6d63;hb=fb12b282f1300123c7f4c7f10525c29cb598e1fe;hp=187eaa5f072bdc53ef77d1cbc5d24aab37dba897;hpb=d1d7252c468c20324f0b1d533754a94a18b56506;p=lyx.git diff --git a/src/BufferList.cpp b/src/BufferList.cpp index 187eaa5f07..0aac272208 100644 --- a/src/BufferList.cpp +++ b/src/BufferList.cpp @@ -24,8 +24,9 @@ #include "support/ExceptionMessage.h" #include "support/debug.h" -#include "support/filetools.h" #include "support/FileName.h" +#include "support/FileNameList.h" +#include "support/filetools.h" #include "support/gettext.h" #include "support/lstrings.h" #include "support/Package.h" @@ -122,12 +123,13 @@ void BufferList::closeAll() } -vector const BufferList::getFileNames() const +FileNameList const & BufferList::fileNames() const { - vector nvec; + static FileNameList nvec; + nvec.clear(); transform(bstore.begin(), bstore.end(), back_inserter(nvec), - boost::bind(&Buffer::absFileName, _1)); + boost::bind(&Buffer::fileName, _1)); return nvec; } @@ -276,11 +278,7 @@ docstring BufferList::emergencyWrite(Buffer * buf) bool BufferList::exists(FileName const & fname) const { - return find_if(bstore.begin(), bstore.end(), - bind(equal_to(), - bind(&Buffer::fileName, _1), - fname)) - != bstore.end(); + return getBuffer(fname) != 0; } @@ -293,14 +291,10 @@ bool BufferList::isLoaded(Buffer const * b) const } -Buffer * BufferList::getBuffer(string const & s) +Buffer * BufferList::getBuffer(support::FileName const & fname) const { - BufferStorage::iterator it = - find_if(bstore.begin(), bstore.end(), - bind(equal_to(), - bind(&Buffer::absFileName, _1), - s)); - + BufferStorage::const_iterator it = find_if(bstore.begin(), bstore.end(), + bind(equal_to(), bind(&Buffer::fileName, _1), fname)); return it != bstore.end() ? (*it) : 0; } @@ -325,11 +319,11 @@ void BufferList::setCurrentAuthor(docstring const & name, docstring const & emai } -int BufferList::bufferNum(string const & name) const +int BufferList::bufferNum(FileName const & fname) const { - vector buffers = getFileNames(); - vector::const_iterator cit = - find(buffers.begin(), buffers.end(), name); + FileNameList const & buffers = fileNames(); + FileNameList::const_iterator cit = + find(buffers.begin(), buffers.end(), fname); if (cit == buffers.end()) return 0; return int(cit - buffers.begin());