X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ftexrow.C;h=9e1b10e5634be4c4215564b96f0e1d039a0f4d85;hb=530749439472bddf13d9f4ee74ee6184ef76e3f9;hp=eaca7cdf3a75a6a210d9f87243ed649b936c48c3;hpb=d1182f17daa1a164d9527ccbe6500840d7ac6bc8;p=lyx.git diff --git a/src/texrow.C b/src/texrow.C index eaca7cdf3a..9e1b10e563 100644 --- a/src/texrow.C +++ b/src/texrow.C @@ -1,96 +1,75 @@ -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor - * - * Copyright 1995 Matthias Ettrich - * Copyright 1995-2001 The LyX Team. +/** + * \file texrow.C + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * ====================================================== */ + * \author Matthias Ettrich + * \author Lars Gullik Bjønnes + * \author John Levon + * + * Full author contact details are available in file CREDITS. + */ #include -#include - -#ifdef __GNUG__ -#pragma implementation -#endif - #include "texrow.h" -#include "paragraph.h" #include "debug.h" +#include + using std::find_if; -using std::endl; -// Delete linked list + +namespace { + +/// function object returning true when row number is found +class same_rownumber { +public: + same_rownumber(int row) : row_(row) {} + bool operator()(TexRow::RowList::value_type const & vt) const { + return vt.rownumber() == row_; + } + +private: + int row_; +}; + +} // namespace anon + + void TexRow::reset() { rowlist.clear(); count = 0; - lastpar = 0; + lastid = -1; lastpos = -1; } -// Defines paragraph and position for the beginning of this row -void TexRow::start(Paragraph * par, int pos) +void TexRow::start(int id, int pos) { - lastpar = par; + lastid = id; lastpos = pos; } -// Insert node when line is completed void TexRow::newline() { - RowItem tmp; - tmp.pos(lastpos); - if (lastpar) - tmp.id(lastpar->id()); - else - tmp.id(-1); - tmp.rownumber(++count); + int const id = lastid; + RowList::value_type tmp(id, lastpos, ++count); rowlist.push_back(tmp); } -class same_rownumber { -public: - same_rownumber(TexRow::RowList::value_type const & v):vt(v){} - bool operator()(TexRow::RowList::value_type const & vt1) const { - return vt.rownumber() == vt1.rownumber(); - } -private: - TexRow::RowList::value_type const & vt; -}; - - - bool TexRow::getIdFromRow(int row, int & id, int & pos) const { - RowList::value_type vt; - vt.rownumber(row); RowList::const_iterator cit = - find_if(rowlist.begin(), rowlist.end(), same_rownumber(vt)); - + find_if(rowlist.begin(), rowlist.end(), + same_rownumber(row)); + if (cit != rowlist.end()) { -#if 0 - RowList::iterator kit = rowlist.begin(); - RowList::iterator end = rowlist.end(); - // Increase the pos of all rows with the - // same id (and where the pos is larger) - // to avoid putting errorinsets at the - // same pos. - for (; kit != end; ++kit) { - if (&(*kit) != &(*cit) - && (*kit).id() == (*cit).id() - && (*kit).pos() >= (*cit).pos()) - (*kit).pos((*kit).pos() + 1); - } -#endif - id = (*cit).id(); - pos = (*cit).pos(); + id = cit->id(); + pos = cit->pos(); return true; } id = -1; @@ -99,37 +78,8 @@ bool TexRow::getIdFromRow(int row, int & id, int & pos) const } -// should perhaps have a better name... -// Increase the pos of all rows with the -// same id (and where the pos is larger) -// to avoid putting errorinsets at the -// same pos. -void TexRow::increasePos(int id, int pos) const -{ - RowList::iterator kit = rowlist.begin(); - RowList::iterator end = rowlist.end(); - for (; kit != end; ++kit) { - if (id == (*kit).id() - && pos < (*kit).pos()) { - (*kit).pos((*kit).pos() + 1); - lyxerr.debug() - << "TeXRow::increasePos: ideally this " - "should never happen..." << endl; - } - // When verified to work this clause should be deleted. - if (id == (*kit).id() - && pos == (*kit).pos()) { - lyxerr.debug() - << "TexRow::increasePos: this should happen " - "maximum one time for each run of " - "increasePos!" << endl; - } - } -} - - -TexRow & TexRow::operator+= (TexRow const & tr) +TexRow & TexRow::operator+=(TexRow const & tr) { rowlist.insert(rowlist.end(), tr.rowlist.begin(), tr.rowlist.end()); return *this; -} +}