X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2Fmath_exintinset.C;h=e41dad31346ccb8ff075bd239999bab548313280;hb=12ac7f339e14c4f76a24f45a21c0697303099145;hp=b49f2246c585f20328e122b33cf450ea3c04c22d;hpb=f3c27aa1f54fe551abe59ffe41a8505181e600d4;p=lyx.git diff --git a/src/mathed/math_exintinset.C b/src/mathed/math_exintinset.C index b49f2246c5..e41dad3134 100644 --- a/src/mathed/math_exintinset.C +++ b/src/mathed/math_exintinset.C @@ -1,113 +1,144 @@ +/** + * \file math_exintinset.C + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author André Pönitz + * + * Full author contact details are available in file CREDITS. + */ + +#include + #include "math_exintinset.h" -#include "math_support.h" +#include "math_data.h" #include "math_mathmlstream.h" +#include "math_streamstr.h" #include "math_symbolinset.h" #include "debug.h" +#include + + +using std::string; +using std::auto_ptr; +using std::endl; + MathExIntInset::MathExIntInset(string const & name) - : symbol_(name) + : MathNestInset(4), symbol_(name) {} +// 0 - core +// 1 - diff +// 2 - lower +// 3 - upper -MathInset * MathExIntInset::clone() const -{ - return new MathExIntInset(*this); -} - -void MathExIntInset::index(MathArray const & ar) +auto_ptr MathExIntInset::clone() const { - index_ = ar; + return auto_ptr(new MathExIntInset(*this)); } -void MathExIntInset::core(MathArray const & ar) +void MathExIntInset::symbol(string const & symbol) { - core_ = ar; + symbol_ = symbol; } -void MathExIntInset::scripts(MathAtom const & at) +bool MathExIntInset::hasScripts() const { - scripts_ = at; + // take empty upper bound as "no scripts" + return !cell(3).empty(); } -MathAtom & MathExIntInset::scripts() + +void MathExIntInset::normalize(NormalStream & os) const { - return scripts_; + os << '[' << symbol_ << ' ' << cell(0) << ' ' << cell(1) << ' ' + << cell(2) << ' ' << cell(3) << ']'; } -void MathExIntInset::symbol(string const & symbol) +void MathExIntInset::metrics(MetricsInfo &, Dimension &) const { - symbol_ = symbol; + lyxerr << "should not happen" << endl; } -bool MathExIntInset::hasScripts() const +void MathExIntInset::draw(PainterInfo &, int, int) const { - return scripts_.hasNucleus(); + lyxerr << "should not happen" << endl; } - -void MathExIntInset::normalize(NormalStream & os) const +void MathExIntInset::maple(MapleStream & os) const { - os << '[' << symbol_.c_str() << ' '; + os << symbol_ << '('; + if (cell(0).size()) + os << cell(0); + else + os << '1'; + os << ',' << cell(1); if (hasScripts()) - os << scripts_.nucleus(); - else - os << "{}"; - os << ' ' << core_ << ' ' << index_ << ']'; + os << '=' << cell(2) << ".." << cell(3); + os << ')'; } -void MathExIntInset::metrics(MathMetricsInfo const &) const +void MathExIntInset::maxima(MaximaStream & os) const { - lyxerr << "should not happen\n"; -} - - -void MathExIntInset::draw(Painter &, int, int) const -{ - lyxerr << "should not happen\n"; + if ( symbol_ == "int" ) + os << "integrate("; + else + os << symbol_ << '('; + + if (cell(0).size()) + os << cell(0) << ','; + else + os << '1' << ','; + if (hasScripts()) + os << cell(1) << ',' << cell(2) << ',' << cell(3) << ')'; + else + os << cell(1) << ')'; } - -void MathExIntInset::maplize(MapleStream & os) const +void MathExIntInset::mathematica(MathematicaStream & os) const { - os << symbol_.c_str() << '('; - if (core_.size()) - os << core_; - else - os << '1'; - os << ',' << index_; - if (hasScripts()) { - MathScriptInset * p = scripts_->asScriptInset(); - os << '=' << p->down().data_ << ".." << p->up().data_; - } - os << ')'; + if ( symbol_ == "int" ) + os << "Integrate["; + else if (symbol_ == "sum") + os << "Sum["; + else + os << symbol_ << '['; + + if (cell(0).size()) + os << cell(0) << ','; + else + os << '1' << ','; + if (hasScripts()) + os << '{' << cell(1) << ',' << cell(2) << ',' << cell(3) << "}]"; + else + os << cell(1) << ']'; } void MathExIntInset::mathmlize(MathMLStream & os) const { - MathSymbolInset * sym = new MathSymbolInset(symbol_.c_str()); - if (hasScripts()) - scripts_->asScriptInset()->mathmlize(sym, os); - else + boost::scoped_ptr sym(new MathSymbolInset(symbol_)); + //if (hasScripts()) + // mathmlize(sym, os); + //else sym->mathmlize(os); - delete sym; - os << core_ << "" + os << cell(0) << "" << MTag("mrow") << "" - << index_ << ETag("mrow"); + << cell(1) << ETag("mrow"); } void MathExIntInset::write(WriteStream &) const { - lyxerr << "should not happen\n"; + lyxerr << "should not happen" << endl; } -