2 * \file math_mathmlstream.C
3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
8 * Full author contact details are available in file CREDITS.
13 #include "math_mathmlstream.h"
14 #include "math_inset.h"
15 #include "math_data.h"
16 #include "math_extern.h"
17 #include "support/lyxalgo.h"
27 return ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z');
32 WriteStream::WriteStream(ostream & os, bool fragile, bool latex)
33 : os_(os), fragile_(fragile), firstitem_(false), latex_(latex),
34 pendingspace_(false), line_(0)
38 WriteStream::WriteStream(ostream & os)
39 : os_(os), fragile_(false), firstitem_(false), latex_(false),
40 pendingspace_(false), line_(0)
44 WriteStream::~WriteStream()
51 void WriteStream::addlines(unsigned int n)
57 void WriteStream::pendingSpace(bool how)
63 WriteStream & operator<<(WriteStream & ws, MathAtom const & at)
70 WriteStream & operator<<(WriteStream & ws, MathArray const & ar)
77 WriteStream & operator<<(WriteStream & ws, char const * s)
79 if (ws.pendingSpace() && strlen(s) > 0) {
82 ws.pendingSpace(false);
85 ws.addlines(int(lyx::count(s, s + strlen(s), '\n')));
90 WriteStream & operator<<(WriteStream & ws, char c)
92 if (ws.pendingSpace()) {
95 ws.pendingSpace(false);
104 WriteStream & operator<<(WriteStream & ws, int i)
111 WriteStream & operator<<(WriteStream & ws, unsigned int i)
118 //////////////////////////////////////////////////////////////////////
121 MathMLStream::MathMLStream(ostream & os)
122 : os_(os), tab_(0), line_(0), lastchar_(0)
126 MathMLStream & operator<<(MathMLStream & ms, MathAtom const & at)
133 MathMLStream & operator<<(MathMLStream & ms, MathArray const & ar)
140 MathMLStream & operator<<(MathMLStream & ms, char const * s)
147 MathMLStream & operator<<(MathMLStream & ms, char c)
154 MathMLStream & operator<<(MathMLStream & ms, MTag const & t)
158 ms.os() << '<' << t.tag_ << '>';
163 MathMLStream & operator<<(MathMLStream & ms, ETag const & t)
168 ms.os() << "</" << t.tag_ << '>';
173 void MathMLStream::cr()
176 for (int i = 0; i < tab(); ++i)
181 //////////////////////////////////////////////////////////////////////
184 MapleStream & operator<<(MapleStream & ms, MathAtom const & at)
191 MapleStream & operator<<(MapleStream & ms, MathArray const & ar)
198 MapleStream & operator<<(MapleStream & ms, char const * s)
205 MapleStream & operator<<(MapleStream & ms, char c)
212 MapleStream & operator<<(MapleStream & ms, int i)
219 //////////////////////////////////////////////////////////////////////
222 MaximaStream & operator<<(MaximaStream & ms, MathAtom const & at)
229 MaximaStream & operator<<(MaximaStream & ms, MathArray const & ar)
236 MaximaStream & operator<<(MaximaStream & ms, char const * s)
243 MaximaStream & operator<<(MaximaStream & ms, char c)
250 MaximaStream & operator<<(MaximaStream & ms, int i)
257 //////////////////////////////////////////////////////////////////////
260 MathematicaStream & operator<<(MathematicaStream & ms, MathAtom const & at)
267 MathematicaStream & operator<<(MathematicaStream & ms, MathArray const & ar)
274 MathematicaStream & operator<<(MathematicaStream & ms, char const * s)
281 MathematicaStream & operator<<(MathematicaStream & ms, char c)
288 MathematicaStream & operator<<(MathematicaStream & ms, int i)
296 //////////////////////////////////////////////////////////////////////
299 OctaveStream & operator<<(OctaveStream & ns, MathAtom const & at)
306 OctaveStream & operator<<(OctaveStream & ns, MathArray const & ar)
313 OctaveStream & operator<<(OctaveStream & ns, char const * s)
320 OctaveStream & operator<<(OctaveStream & ns, char c)
327 OctaveStream & operator<<(OctaveStream & ns, int i)
334 //////////////////////////////////////////////////////////////////////
337 NormalStream & operator<<(NormalStream & ns, MathAtom const & at)
344 NormalStream & operator<<(NormalStream & ns, MathArray const & ar)
351 NormalStream & operator<<(NormalStream & ns, char const * s)
358 NormalStream & operator<<(NormalStream & ns, char c)
365 NormalStream & operator<<(NormalStream & ns, int i)
373 //////////////////////////////////////////////////////////////////////