X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2Fmath_atom.h;h=04cf2a391d637599f9934cda7b319bcdcacc64e1;hb=46880e2b9b49632c56bab2377ce9a3c826cf8d1d;hp=38c40469b0f575320208bcc9fea87b9c5a9bb2ee;hpb=9295f8236e01a5e425d808eb0d2bdd0460d1f423;p=lyx.git diff --git a/src/mathed/math_atom.h b/src/mathed/math_atom.h index 38c40469b0..04cf2a391d 100644 --- a/src/mathed/math_atom.h +++ b/src/mathed/math_atom.h @@ -7,43 +7,56 @@ #pragma interface #endif -/** +/** The 'atom' is the major blob in math typesetting. And 'atom' consists of a nucleus, an optional superscript, and an optional subscript. Exactly where the subscript and superscript are drawn depends on the -size, and type, of the nucleus they are attached to. +size, and type, of the nucleus they are attached to. Jules + +-- + +Ok: Implementing it thusly is not feasible since cursor movement gets +hackish. We use MathAtom only as a wrapper around MathInset * with value +semantics. + +The MathAtom owns the MathInset * and is responsible for proper cloning and +destruction. Every MathInset * should be put into a MathAtom after its +creation as soon as possible. + +Andre' + */ class MathInset; class MathAtom { -public: - /// +public: + /// default constructor, object is useless, but we need it to put it into + // std::containers MathAtom(); - /// - MathAtom(MathAtom const &); - /// + /// the "real constructor" explicit MathAtom(MathInset * p); - /// - virtual ~MathAtom(); - /// + /// copy constructor, invokes nucleus_->clone() + MathAtom(MathAtom const &); + /// we really need to clean up + ~MathAtom(); + /// assignment invokes nucleus_->clone() void operator=(MathAtom const &); - /// - MathInset * nucleus() const; - /// - MathInset * operator->() const; + /// change inset under the hood + void operator=(MathInset * p); + /// change inset under the hood + void reset(MathInset * p); + /// access to the inset (checked with gprof) + MathInset * nucleus() const { return nucleus_; } + /// access to the inset + MathInset * operator->() const { return nucleus_; } private: /// MathInset * nucleus_; - - /// raw copy - void copy(MathAtom const & p); - /// raw destruction - void done(); }; #endif