- void substitute(MathArray & array, MathMacro const & macro) const;
-
- /// The left key
- bool idxLeft(int & idx, int & pos) const;
- /// The right key
- bool idxRight(int & idx, int & pos) const;
-
- /// Move one physical cell up
- bool idxNext(int & idx, int & pos) const;
- /// Move one physical cell down
- bool idxPrev(int & idx, int & pos) const;
-
- /// Target pos when we enter the inset from the left by pressing "Right"
- bool idxFirst(int & idx, int & pos) const;
- /// Target pos when we enter the inset from the right by pressing "Left"
- bool idxLast(int & idx, int & pos) const;
-
- /// Where should we go if we press home?
- bool idxHome(int & idx, int & pos) const;
- /// Where should we go if we press end?
- bool idxEnd(int & idx, int & pos) const;
-
- ///
- int nargs() const;
-
- ///
- MathArray & cell(int);
- ///
- MathArray const & cell(int) const;
- ///
- MathXArray & xcell(int);
- ///
- MathXArray const & xcell(int) const;
-
- ///
- bool isActive() const { return nargs() > 0; }
- ///
- void push_back(MathInset *);
- ///
- void dump() const;
-
- ///
+ void substitute(MathMacro const & macro);
+ /// identifies NestInsets
+ MathNestInset * asNestInset() { return this; }
+
+ /// order of movement through the cells when pressing the left key
+ bool idxLeft(idx_type & idx, pos_type & pos) const;
+ /// order of movement through the cells when pressing the right key
+ bool idxRight(idx_type & idx, pos_type & pos) const;
+
+ /// move one physical cell up
+ bool idxNext(idx_type & idx, pos_type & pos) const;
+ /// move one physical cell down
+ bool idxPrev(idx_type & idx, pos_type & pos) const;
+
+ /// target pos when we enter the inset from the left by pressing "Right"
+ bool idxFirst(idx_type & idx, pos_type & pos) const;
+ /// target pos when we enter the inset from the right by pressing "Left"
+ bool idxLast(idx_type & idx, pos_type & pos) const;
+
+ /// where should we go if we press home?
+ bool idxHome(idx_type & idx, pos_type & pos) const;
+ /// where should we go if we press end?
+ bool idxEnd(idx_type & idx, pos_type & pos) const;
+
+ /// number of cells currently governed by us
+ idx_type nargs() const;
+ /// access to the lock
+ bool lock() const;
+ /// access to the lock
+ void lock(bool);
+
+ /// direct access to the cell
+ MathArray & cell(idx_type);
+ /// direct access to the cell
+ MathArray const & cell(idx_type) const;
+ /// direct access to the cell including the drawing cache
+ MathXArray & xcell(idx_type);
+ /// direct access to the cell including the drawing cache
+ MathXArray const & xcell(idx_type) const;
+
+ /// can we move into this cell (see macroarg.h)
+ bool isActive() const;
+ /// request "external features"