]> git.lyx.org Git - features.git/commitdiff
Optimize DocRange::length(). Thanks Abdel.
authorVincent van Ravesteijn <vfr@lyx.org>
Sun, 10 Jan 2010 13:55:42 +0000 (13:55 +0000)
committerVincent van Ravesteijn <vfr@lyx.org>
Sun, 10 Jan 2010 13:55:42 +0000 (13:55 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@32938 a592a061-630c-0410-9148-cb99ea01b6c8

src/Compare.cpp

index a84477ad6bcf8c156c4d94f495f27354bdba9704..95eaf5abaef0f9cc1bf3eacfc89297b7348d8062 100644 (file)
@@ -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;
 }