From 715b1303da55ef800b7ebafa26aca296f9dcffbc Mon Sep 17 00:00:00 2001 From: Vincent van Ravesteijn Date: Sun, 10 Jan 2010 13:55:42 +0000 Subject: [PATCH] Optimize DocRange::length(). Thanks Abdel. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@32938 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/Compare.cpp | 30 +++++++----------------------- 1 file changed, 7 insertions(+), 23 deletions(-) diff --git a/src/Compare.cpp b/src/Compare.cpp index a84477ad6b..95eaf5abae 100644 --- a/src/Compare.cpp +++ b/src/Compare.cpp @@ -84,30 +84,14 @@ public: size_t DocRange::length() const { - pit_type startpit = from.pit(); - pit_type endpit = to.pit(); - ParagraphList const & ps_ = from.text()->paragraphs(); - - ParagraphList pars(boost::next(ps_.begin(), startpit), - boost::next(ps_.begin(), endpit + 1)); - - // Remove the end of the last paragraph; afterwards, remove the - // beginning of the first paragraph. - Paragraph & back = pars.back(); - back.eraseChars(to.pos(), back.size(), false); - Paragraph & front = pars.front(); - front.eraseChars(0, from.pos(), false); - - ParagraphList::const_iterator pit = pars.begin(); - ParagraphList::const_iterator end_it = pars.end(); - + ParagraphList const & ps = from.text()->paragraphs(); size_t length = 0; - for (; pit != end_it; ++pit) - length += pit->size() + 1; - - // The last paragraph has no paragraph-end - --length; - return length; + pit_type pit = from.pit(); + pit_type const endpit = to.pit(); + for (; pit < endpit; ++pit) + length += ps[pit].size() + 1; + length += to.pos() - from.pos(); + return length; } -- 2.39.2