]> git.lyx.org Git - lyx.git/blobdiff - src/TexRow.cpp
listerrors.lyx : Update a link.
[lyx.git] / src / TexRow.cpp
index af0268ade280d7be74d08f95c938bff84eaad625..780cd52af07f7ec5702a3ffca107d99f6ec7ed51 100644 (file)
@@ -4,7 +4,7 @@
  * Licence details can be found in the file COPYING.
  *
  * \author Matthias Ettrich
- * \author Lars Gullik Bjønnes
+ * \author Lars Gullik Bjønnes
  * \author John Levon
  *
  * Full author contact details are available in file CREDITS.
@@ -13,6 +13,7 @@
 #include <config.h>
 
 #include "TexRow.h"
+
 #include "support/debug.h"
 
 #include <algorithm>
@@ -31,8 +32,12 @@ void TexRow::reset()
 
 void TexRow::start(int id, int pos)
 {
+       if (started)
+               return;
+
        lastid = id;
        lastpos = pos;
+       started = true;
 }
 
 
@@ -41,8 +46,15 @@ void TexRow::newline()
        int const id = lastid;
        RowList::value_type tmp(id, lastpos);
        rowlist.push_back(tmp);
+       started = false;
 }
 
+void TexRow::newlines(int num_lines)
+{
+       for (int i = 0; i < num_lines; ++i) {
+               newline();
+       }
+}
 
 bool TexRow::getIdFromRow(int row, int & id, int & pos) const
 {
@@ -60,22 +72,24 @@ bool TexRow::getIdFromRow(int row, int & id, int & pos) const
 
 int TexRow::getRowFromIdPos(int id, int pos) const
 {
-       int bestrow = 0;
        bool foundid = false;
 
-       // this loop finds the last *nonempty* row whith the same id
+       // this loop finds the last *nonempty* row with the same id
        // and position <= pos
-       for (unsigned r = 0, n = rowlist.size(); r != n; ++r) {
-               if (rowlist[r].id() == id && rowlist[r].pos() <= pos) {
+       RowList::const_iterator bestrow = rowlist.begin();
+       RowList::const_iterator it = rowlist.begin();
+       RowList::const_iterator const end = rowlist.end();
+       for (; it != end; ++it) {
+               if (it->id() == id && it->pos() <= pos) {
                        foundid = true;
-                       if (rowlist[bestrow].id() != id || rowlist[r].pos() > rowlist[bestrow].pos())
-                               bestrow = r;
+                       if (bestrow->id() != id || it->pos() > bestrow->pos())
+                               bestrow = it;
                } else if (foundid)
                        break;
        }
        if (!foundid)
                return rowlist.size();
-       return bestrow;
+       return distance(rowlist.begin(), bestrow) + 1;
 }