This is just a proposal, but going on the "pointers are evil" philosophy, I
think that the following Inset classes can be altered.
Angus
class Inset {
public:
/* called only from BufferView_pimpl.C and from
text.C (SetHeightOfRow, GetVisibleRow). BufferView always exists.
virtual int ascent(BufferView *, LyXFont const &) const = 0; */
virtual int ascent(BufferView &, LyXFont const &) const = 0;
/* ditto
virtual int descent(BufferView *, LyXFont const &) const = 0; */
virtual int descent(BufferView &, LyXFont const &) const = 0;
/* ditto
virtual int width(BufferView *, LyXFont const &) const = 0; */
virtual int width(BufferView &, LyXFont const &) const = 0;
/* ditto
virtual void draw(BufferView *, LyXFont const &, */
virtual void draw(BufferView &, LyXFont const &,
int baseline, float & x, bool cleared) const = 0;
/* ditto
virtual void update(BufferView *, LyXFont const &, bool = false) {} */
virtual void update(BufferView &, LyXFont const &, bool = false) {}
/* ditto
virtual void Edit(BufferView *, int x, int y, unsigned int button); */
virtual void Edit(BufferView &, int x, int y, unsigned int button);
/* ditto
virtual void InsetButtonPress(BufferView *, int, int, int) {} */
virtual void InsetButtonPress(BufferView &, int, int, int) {}
/* ditto
virtual void InsetButtonRelease(BufferView *, int, int, int) {} */
virtual void InsetButtonRelease(BufferView &, int, int, int) {}
/* ditto
virtual void InsetMotionNotify(BufferView *, int , int , int) {} */
virtual void InsetMotionNotify(BufferView &, int , int , int) {}
/* ditto
virtual void Write(Buffer const *, std::ostream &) const = 0; */
virtual void Write(Buffer const &, std::ostream &) const = 0;
/* ditto
virtual void Read(Buffer const *, LyXLex & lex) = 0; */
virtual void Read(Buffer const &, LyXLex & lex) = 0;
/* ditto
virtual int Latex(Buffer const *, std::ostream &, bool fragile, */
virtual int Latex(Buffer const &, std::ostream &, bool fragile,
bool free_spc) const = 0;
/* ditto
virtual int Ascii(Buffer const *, */
virtual int Ascii(Buffer const &,
std::ostream &, int linelen = 0) const = 0;
/* ditto
virtual int Linuxdoc(Buffer const *, std::ostream &) const = 0; */
virtual int Linuxdoc(Buffer const &, std::ostream &) const = 0;
/* ditto
virtual int DocBook(Buffer const *, std::ostream &) const = 0; */
virtual int DocBook(Buffer const &, std::ostream &) const = 0;
};