// -*- C++ -*- /** * \file texrow.h * 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. */ #ifndef TEXROW_H #define TEXROW_H #include /// Represents the correspondence between paragraphs and the generated LaTeX file class TexRow { public: /// TexRow() : count(0), lastid(-1), lastpos(-1) {} TexRow & operator+= (TexRow const &); /// Clears structure void reset(); /// Define what paragraph and position the next row will represent void start(int id, int pos); /// Insert node when line is completed void newline(); /** * getIdFromRow - find pid and position for a given row * @param row row number to find * @param id set to id if found * @param pos set to paragraph position if found * @return true if found, false otherwise * * If the row could not be found, pos is set to zero and * id is set to -1 */ bool getIdFromRow(int row, int & id, int & pos) const; /// Returns the number of rows contained int rows() const { return count; } /// an individual id/pos <=> row mapping class RowItem { public: RowItem(int id, int pos, int row) : id_(id), pos_(pos), rownumber_(row) {} /// paragraph id int id() const { return id_; } /// set paragraph position void pos(int p) { pos_ = p; } /// paragraph position int pos() const { return pos_; } /// row number int rownumber() const { return rownumber_; } private: int id_; int pos_; int rownumber_; }; /// typedef std::list RowList; private: /// number of lines unsigned int count; /// container of id/pos <=> row mapping RowList rowlist; /// Last paragraph int lastid; /// Last position int lastpos; }; #endif // TEXROW_H