#ifndef MATH_ATOM_H
#define MATH_ATOM_H
-#ifdef __GNUG__
-#pragma interface
-#endif
-/**
+/**
+ * Wrapper for MathInset * with copy-semantics
+ *
+ * \author André Pönitz
+ *
+ * Full author contact details are available in file CREDITS
+ */
+
+/**
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
*/
+class InsetBase;
class MathInset;
class MathAtom {
-public:
+public:
/// default constructor, object is useless, but we need it to put it into
// std::containers
MathAtom();
/// the "real constructor"
- explicit MathAtom(MathInset * p);
+ explicit MathAtom(InsetBase * p);
/// copy constructor, invokes nucleus_->clone()
MathAtom(MathAtom const &);
/// we really need to clean up
- ~MathAtom();
+ ~MathAtom();
/// assignment invokes nucleus_->clone()
void operator=(MathAtom const &);
- /// change inset under the hood
- void reset(MathInset * p);
+ /// access to the inset (checked with gprof)
+ MathInset * nucleus() { return nucleus_; }
/// access to the inset
- MathInset * nucleus() const;
- /// access to the inset
- MathInset * operator->() const;
+ MathInset const * operator->() const { return nucleus_; }
+
+ /// width cache. Not nice...
+ mutable int width_;
private:
///