]> git.lyx.org Git - lyx.git/blobdiff - src/texrow.C
forgot two files
[lyx.git] / src / texrow.C
index 7399843df0f5532b36697d4eb823a600b89a01a8..260517cdd75577862e5d207a21a850bccc7e269b 100644 (file)
@@ -1,12 +1,12 @@
 /* This file is part of
- * ======================================================
+ * ====================================================== 
  * 
  *           LyX, The Document Processor
  *      
- *         Copyright (C) 1995 Matthias Ettrich
- *          Copyright (C) 1995-1999 The LyX Team.
+ *         Copyright 1995 Matthias Ettrich
+ *          Copyright 1995-2000 The LyX Team.
  *
- * ======================================================*/
+ * ====================================================== */
 
 #include <config.h>
 
 #include "lyxparagraph.h"
 #include "debug.h"
 
+
 // Delete linked list
 void TexRow::reset()
 {
-       TexRow_Item *current, *iter = next;
-       while (iter) {
-               // Iterate through the list deleting as you go.
-               // A bit easier to debug than recursive deletion.
-               current = iter;
-               iter = iter->next;
-               delete current;
-       }
+       rowlist.clear();
        count = 0;
-       next = 0;
        lastpar = 0;
        lastpos = -1;
 }
 
+
 // Defines paragraph and position for the beginning of this row
-void TexRow::start(LyXParagraph *par, int pos) {
+void TexRow::start(LyXParagraph * par, int pos)
+{
        lastpar = par;
        lastpos = pos;
 }
 
+
 // Insert node when line is completed
 void TexRow::newline()
 {
-       TexRow_Item *tmp = new TexRow_Item;
-       tmp->pos = lastpos;
-       
+       RowItem tmp;
+       tmp.pos = lastpos;
        if (lastpar)
-               tmp->id = lastpar->GetID();
+               tmp.id = lastpar->id();
        else
-               tmp->id = -1;
-
-       // Inserts at the beginning of the list
-       tmp->next = next;
-       next = tmp;
-       count++;
-       tmp->rownumber = count;
+               tmp.id = -1;
+       tmp.rownumber = ++count;
+       rowlist.push_back(tmp);
 }
 
 
-void TexRow::getIdFromRow(int row, int &id, int &pos)
+void TexRow::getIdFromRow(int row, int & id, int & pos)
 {
-       TexRow_Item *tmp = next;
-       while (tmp && tmp->rownumber != row) {
-               tmp = tmp->next;
+       RowList::const_iterator cit = rowlist.begin();
+       for (; cit != rowlist.end(); ++cit) {
+               if ((*cit).rownumber == row) break;
        }
-       if (tmp) {
-               TexRow_Item *tmp2 = next;
+       if (cit != rowlist.end()) {
+               RowList::iterator kit = rowlist.begin();
                // Increase the pos of all rows with the
                // same id (and where the pos is larger)
                // to avoid putting errorinsets at the
                // same pos.
-               while (tmp2) {
-                       if (tmp2 != tmp &&
-                           tmp2->id == tmp->id &&
-                           tmp2->pos >= tmp->pos)
-                               tmp2->pos++;
-                       tmp2 = tmp2->next;
+               for(; kit != rowlist.end(); ++kit) {
+                       if (&(*kit) != &(*cit)
+                           && (*kit).id == (*cit).id
+                           && (*kit).pos >= (*cit).pos)
+                               (*kit).pos++;
                }
-               id = tmp->id;
-               pos = tmp->pos;
+               id = (*cit).id;
+               pos = (*cit).pos;
        } else {
                id = -1;
                pos = 0;
@@ -88,30 +78,8 @@ void TexRow::getIdFromRow(int row, int &id, int &pos)
 }
 
 
-TexRow & TexRow::operator+=(const TexRow &tr)
+TexRow & TexRow::operator+= (TexRow const & tr)
 {
-       // remember that the lists are stored in reverse 
-       // so you've got to turn the second one around 
-       // as you insert it in the first
-       for (int counter = tr.count; counter > 0; --counter) {
-               int i = 1;
-               TexRow_Item *iter = tr.next;
-               while (i < counter) {
-                       iter = iter->next;
-                       ++i;
-               }
-
-               ++count;
-               TexRow_Item *tmp;
-               tmp = new TexRow_Item;
-               tmp->id = iter->id;
-               tmp->pos = iter->pos;
-               tmp->next = next;
-               tmp->rownumber = count;
-               next = tmp;
-       }
-       // should I be doing this or not?
-       //lastpar = tr.lastpar;
-       //lastpos = tr.lastpos;
+       rowlist.insert(rowlist.end(), tr.rowlist.begin(), tr.rowlist.end());
        return *this;
 }