X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FCursorSlice.h;h=eb865de9482013ec8f742b9689d946fb2b525965;hb=1d637b8af0f76d7c758db91ee3a196306f861a21;hp=981f59c47de361aa7fbd4a5a50bd968edbd14273;hpb=260acacf1bd31159b1efb993c88b0b94ab187e65;p=lyx.git diff --git a/src/CursorSlice.h b/src/CursorSlice.h index 981f59c47d..eb865de948 100644 --- a/src/CursorSlice.h +++ b/src/CursorSlice.h @@ -4,12 +4,12 @@ * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * - * \author Lars Gullik Bjønnes + * \author Lars Gullik Bjønnes * \author Matthias Ettrich * \author John Levon - * \author André Pönitz + * \author André Pönitz * \author Dekel Tsur - * \author Jürgen Vigna + * \author Jürgen Vigna * * Full author contact details are available in file CREDITS. */ @@ -24,7 +24,7 @@ namespace lyx { -class Inset; +class InsetMath; class MathData; class Text; class Paragraph; @@ -32,31 +32,24 @@ class Paragraph; /// This encapsulates a single slice of a document iterator as used e.g. /// for cursors. -// After IU, the distinction of MathInset and InsetOld as well as +// After inset unification, the distinction of InsetMath and Inset as well as // that of MathData and Text should vanish. They are conceptually the // same (now...) class CursorSlice { public: - /// Those needs inset_ access. - ///@{ + /// \name Those needs inset_ access. + //@{ friend class DocIterator; friend class StableDocIterator; - ///@} - - /// type for cell number in inset - typedef size_t idx_type; - /// type for row indices - typedef size_t row_type; - /// type for col indices - typedef size_t col_type; + //@} /// CursorSlice(); /// explicit CursorSlice(Inset &); - /// comparison operators. + /// \name Comparison operators. //@{ friend bool operator==(CursorSlice const &, CursorSlice const &); friend bool operator!=(CursorSlice const &, CursorSlice const &); @@ -65,6 +58,8 @@ public: friend bool operator<=(CursorSlice const &, CursorSlice const &); //@} + /// return true if the slice has not been initialized + bool empty() const { return !inset_; } /// the current inset Inset & inset() const { return *inset_; } /// return the cell this cursor is in @@ -87,7 +82,11 @@ public: pos_type pos() const { return pos_; } /// return the position within the paragraph pos_type & pos() { return pos_; } - /// return the last position within the paragraph + /*! + * \return the last position within the paragraph. + * Note that this is the position behind the last character or inset, + * i.e. you cannot dereference it. + */ pos_type lastpos() const; /// return the number of embedded cells size_t nargs() const { return inset_->nargs(); } @@ -113,6 +112,8 @@ public: Text * text() const { return inset_->getText(idx_); } /// paragraph in this cell Paragraph & paragraph() const; + /// + void setPitPos(pit_type pit, pos_type pos); /// /// mathed specific stuff @@ -132,11 +133,15 @@ public: void forwardIdx(); /// move to previous cell void backwardIdx(); + /// are we at the end of the cell + bool at_cell_end() const; + /// are we at the start of the cell + bool at_cell_begin() const; /// are we at the end of this slice bool at_end() const; /// are we at the start of this slice bool at_begin() const; - + private: /// pointer to 'owning' inset. This is some kind of cache. @@ -146,7 +151,9 @@ private: * Cell index of a position in this inset. * This is the primary cell information also for grid like insets, * although we have the convenience functions row() and col() for - * those * and column changes every time the number of columns ornumber + * those. + * This means that the corresponding idx_ of a cell in a given row + * and column changes every time the number of columns or number * of rows changes. Normally the cursor should stay in the same cell, * so these changes should typically be performed like the following: * \code