X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ftexrow.C;h=9e1b10e5634be4c4215564b96f0e1d039a0f4d85;hb=530749439472bddf13d9f4ee74ee6184ef76e3f9;hp=80c198ea22edab134a9b2dd79d30856675a5a0af;hpb=edc55ba120c15ac51a03515f95bdaff91a19587d;p=lyx.git diff --git a/src/texrow.C b/src/texrow.C index 80c198ea22..9e1b10e563 100644 --- a/src/texrow.C +++ b/src/texrow.C @@ -1,29 +1,27 @@ /** * \file texrow.C - * Copyright 1995-2002 the LyX Team - * Read the file COPYING + * 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::for_each; -using std::endl; + namespace { - + /// function object returning true when row number is found class same_rownumber { public: @@ -31,64 +29,33 @@ public: bool operator()(TexRow::RowList::value_type const & vt) const { return vt.rownumber() == row_; } - + private: int row_; }; +} // namespace anon -/// increment the pos value of the argument if the par id -/// is the same, and the pos parameter is larger -class increase_pos { -public: - increase_pos(int id, int pos) - : id_(id), pos_(pos) {} - - void operator()(TexRow::RowList::value_type & vt) const { - if (vt.id() != id_ || vt.pos() >= pos_) - return; - vt.pos(vt.pos() + 1); - - lyxerr[Debug::INFO] - << "TeXRow::increasePos: ideally this " - "should never happen..." << endl; - - // FIXME: When verified to work this clause should be deleted. - if (id_ == vt.id() && pos_ == vt.pos()) { - lyxerr[Debug::INFO] - << "TexRow::increasePos: this should happen " - "maximum one time for each run of " - "increasePos!" << endl; - } - } -private: - int id_; - int pos_; -}; - -} // namespace anon - - void TexRow::reset() { rowlist.clear(); count = 0; - lastpar = 0; + lastid = -1; lastpos = -1; } -void TexRow::start(Paragraph * par, int pos) +void TexRow::start(int id, int pos) { - lastpar = par; + lastid = id; lastpos = pos; } void TexRow::newline() { - int const id = lastpar ? lastpar->id() : -1; + int const id = lastid; RowList::value_type tmp(id, lastpos, ++count); rowlist.push_back(tmp); } @@ -97,9 +64,9 @@ void TexRow::newline() bool TexRow::getIdFromRow(int row, int & id, int & pos) const { RowList::const_iterator cit = - find_if(rowlist.begin(), rowlist.end(), + find_if(rowlist.begin(), rowlist.end(), same_rownumber(row)); - + if (cit != rowlist.end()) { id = cit->id(); pos = cit->pos(); @@ -111,12 +78,6 @@ bool TexRow::getIdFromRow(int row, int & id, int & pos) const } -void TexRow::increasePos(int id, int pos) -{ - for_each(rowlist.begin(), rowlist.end(), increase_pos(id, pos)); -} - - TexRow & TexRow::operator+=(TexRow const & tr) { rowlist.insert(rowlist.end(), tr.rowlist.begin(), tr.rowlist.end());