Optimisation: away creation of FontTable for each FontList::fontIterator() call.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25664 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Abdelrazak Younes 2008-07-16 12:09:54 +00:00
parent 5013a5cef9
commit bef58b3b16

View File

@ -28,34 +28,28 @@ using namespace std;
namespace lyx { namespace lyx {
namespace {
class matchFT
{
public:
/// used by lower_bound and upper_bound
int operator()(FontTable const & a, FontTable const & b) const {
return a.pos() < b.pos();
}
};
} // anon namespace
FontList::iterator FontList::fontIterator(pos_type pos) FontList::iterator FontList::fontIterator(pos_type pos)
{ {
static Font dummy; FontList::iterator it = list_.begin();
FontTable search_elem(pos, dummy); FontList::iterator end = list_.end();
return lower_bound(list_.begin(), list_.end(), search_elem, for (; it != end; ++it) {
matchFT()); if (it->pos() >= pos)
break;
}
return it;
} }
FontList::const_iterator FontList::fontIterator(pos_type pos) const FontList::const_iterator FontList::fontIterator(pos_type pos) const
{ {
static Font dummy; FontList::const_iterator it = list_.begin();
FontTable search_elem(pos, dummy); FontList::const_iterator end = list_.end();
return lower_bound(list_.begin(), list_.end(), search_elem, for (; it != end; ++it) {
matchFT()); if (it->pos() >= pos)
break;
}
return it;
} }