X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ftexrow.C;h=ee4b7410946a3fc08e4f3d1ad2676a1e2d9bb4b7;hb=35204f8f33d7400a5fefeffea533fb4cb4097211;hp=5d9f3116d4a23042570c019a4517c64a3f4f80d5;hpb=7ea7dabed1b72cc25dcbdc482ac006f2b61dacfd;p=lyx.git diff --git a/src/texrow.C b/src/texrow.C index 5d9f3116d4..ee4b741094 100644 --- a/src/texrow.C +++ b/src/texrow.C @@ -1,79 +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 "texrow.h" +#include "debug.h" + #include -#ifdef __GNUG__ -#pragma implementation -#endif -#include "texrow.h" -#include "paragraph.h" -#include "debug.h" +namespace lyx { 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()) { id = cit->id(); pos = cit->pos(); @@ -85,37 +81,11 @@ 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 +TexRow & TexRow::operator+=(TexRow const & tr) { - 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::INFO] - << "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::INFO] - << "TexRow::increasePos: this should happen " - "maximum one time for each run of " - "increasePos!" << endl; - } - } + rowlist.insert(rowlist.end(), tr.rowlist.begin(), tr.rowlist.end()); + return *this; } -TexRow & TexRow::operator+= (TexRow const & tr) -{ - rowlist.insert(rowlist.end(), tr.rowlist.begin(), tr.rowlist.end()); - return *this; -} +} // namespace lyx