};
+/// The possible marker types for math insets
+enum class marker_type : int {
+ NO_MARKER,
+ MARKER2,
+ MARKER,
+ BOX_MARKER
+};
+
+
/**
Abstract base class for all math objects. A math insets is for use of the
*/
-class Cursor;
class OutputParams;
class MetricsInfo;
class InsetMathAMSArray;
class InsetMathBrace;
class InsetMathChar;
+class InsetMathClass;
class InsetMathDelim;
class InsetMathFracBase;
class InsetMathFrac;
class MapleStream;
class MaximaStream;
class MathematicaStream;
-class MathStream;
-class WriteStream;
+class MathMLStream;
+class TeXMathStream;
class MathData;
class InsetMathMacroTemplate;
class TextMetricsInfo;
class ReplaceData;
-/// Type of unique identifiers for math insets (used in TexRow)
-typedef void const * uid_type;
-
class InsetMath : public Inset {
public:
///
explicit InsetMath(Buffer * buf = 0) : Inset(buf) {}
/// identification as math inset
- InsetMath * asInsetMath() { return this; }
+ InsetMath * asInsetMath() override { return this; }
/// identification as math inset
- InsetMath const * asInsetMath() const { return this; }
+ InsetMath const * asInsetMath() const override { return this; }
/// this is overridden in math text insets (i.e. mbox)
- bool inMathed() const { return true; }
+ bool inMathed() const override { return true; }
///
virtual docstring name() const;
/// this is overridden by specific insets
- virtual mode_type currentMode() const { return MATH_MODE; }
+ mode_type currentMode() const override { return MATH_MODE; }
- // The possible marker types for math insets
- enum marker_type { NO_MARKER, MARKER2, MARKER, BOX_MARKER };
/// this is overridden by insets with specific edit marker type
virtual marker_type marker(BufferView const *) const;
virtual InsetMathBrace * asBraceInset() { return nullptr; }
virtual InsetMathBrace const * asBraceInset() const { return nullptr; }
virtual InsetMathChar const * asCharInset() const { return nullptr; }
+ virtual InsetMathClass const * asClassInset() const { return nullptr; }
virtual InsetMathDelim * asDelimInset() { return nullptr; }
virtual InsetMathDelim const * asDelimInset() const { return nullptr; }
virtual InsetMathFracBase * asFracBaseInset() { return nullptr; }
/// Whether the inset allows \(no)limits
bool allowsLimitsChange() const { return mathClass() == MC_OP; }
- /// The default limits value
- virtual Limits defaultLimits() const { return NO_LIMITS; }
+ /// The default limits value depending on whether display mode is on
+ virtual Limits defaultLimits(bool /* display */) const { return NO_LIMITS; }
/// whether the inset has limit-like sub/superscript
virtual Limits limits() const { return AUTO_LIMITS; }
/// sets types of sub/superscripts
virtual void limits(Limits) {}
/// write limits status for LaTeX and LyX code
- void writeLimits(WriteStream & os) const;
+ void writeLimits(TeXMathStream & os) const;
/// replace things by other things
virtual void replace(ReplaceData &) {}
// write(). This is to shut off a clang warning.
using Inset::write;
/// write LaTeX and LyX code
- virtual void write(WriteStream & os) const;
+ virtual void write(TeXMathStream & os) const;
/// write normalized content
virtual void normalize(NormalStream &) const;
/// write content as something readable by Maple
/// write content as something readable by Mathematica
virtual void mathematica(MathematicaStream &) const;
/// write content as MathML
- virtual void mathmlize(MathStream &) const;
+ virtual void mathmlize(MathMLStream &) const;
/// write content as HTML, best we can.
/// the idea for this, and some of the details, come from
/// eLyXer, written by Alex Fernandez. no code is borrowed. rather,
virtual void octave(OctaveStream &) const;
/// plain text output in ucs4 encoding
- int plaintext(odocstringstream &, OutputParams const &, size_t) const;
+ int plaintext(odocstringstream &, OutputParams const &, size_t) const override;
/// dump content to stderr for debugging
- virtual void dump() const;
+ void dump() const override;
/// LyXInset stuff
virtual bool numberedType() const { return false; }
virtual void mutate(HullType /*newtype*/) {}
/// math stuff usually isn't allowed in text mode
- virtual bool allowedIn(mode_type mode) const { return mode == MATH_MODE; }
+ bool allowedIn(mode_type mode) const override { return mode == MATH_MODE; }
/// Italic correction as described in InsetMathScript.h
virtual int kerning(BufferView const *) const { return 0; }
///
- bool isInToc() const { return true; }
+ bool isInToc() const override { return true; }
///
- InsetCode lyxCode() const { return MATH_CODE; }
+ InsetCode lyxCode() const override { return MATH_CODE; }
///
uid_type id() const { return this; }
};