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 "InsetMath.h"
15 #include "MathExtern.h"
16 #include "MathStream.h"
18 #include "support/textutils.h"
27 //////////////////////////////////////////////////////////////////////
30 NormalStream & operator<<(NormalStream & ns, MathAtom const & at)
37 NormalStream & operator<<(NormalStream & ns, MathData const & ar)
44 NormalStream & operator<<(NormalStream & ns, docstring const & s)
51 NormalStream & operator<<(NormalStream & ns, const std::string & s)
53 ns.os() << from_utf8(s);
58 NormalStream & operator<<(NormalStream & ns, char const * s)
65 NormalStream & operator<<(NormalStream & ns, char c)
72 NormalStream & operator<<(NormalStream & ns, int i)
80 /////////////////////////////////////////////////////////////////
83 WriteStream & operator<<(WriteStream & ws, docstring const & s)
85 if (ws.pendingSpace() && s.length() > 0) {
86 if (isAlphaASCII(s[0]))
88 ws.pendingSpace(false);
92 docstring::const_iterator dit = s.begin();
93 docstring::const_iterator end = s.end();
94 for (; dit != end; ++dit)
102 WriteStream::WriteStream(odocstream & os, bool fragile, bool latex)
103 : os_(os), fragile_(fragile), firstitem_(false), latex_(latex),
104 pendingspace_(false), line_(0)
108 WriteStream::WriteStream(odocstream & os)
109 : os_(os), fragile_(false), firstitem_(false), latex_(false),
110 pendingspace_(false), line_(0)
114 WriteStream::~WriteStream()
121 void WriteStream::addlines(unsigned int n)
127 void WriteStream::pendingSpace(bool how)
133 WriteStream & operator<<(WriteStream & ws, MathAtom const & at)
140 WriteStream & operator<<(WriteStream & ws, MathData const & ar)
147 WriteStream & operator<<(WriteStream & ws, char const * s)
149 if (ws.pendingSpace() && strlen(s) > 0) {
150 if (isAlphaASCII(s[0]))
152 ws.pendingSpace(false);
155 ws.addlines(int(std::count(s, s + strlen(s), '\n')));
160 WriteStream & operator<<(WriteStream & ws, char c)
162 if (ws.pendingSpace()) {
165 ws.pendingSpace(false);
174 WriteStream & operator<<(WriteStream & ws, int i)
181 WriteStream & operator<<(WriteStream & ws, unsigned int i)
188 //////////////////////////////////////////////////////////////////////
191 MathStream::MathStream(odocstream & os)
192 : os_(os), tab_(0), line_(0), lastchar_(0)
196 MathStream & operator<<(MathStream & ms, MathAtom const & at)
203 MathStream & operator<<(MathStream & ms, MathData const & ar)
210 MathStream & operator<<(MathStream & ms, char const * s)
217 MathStream & operator<<(MathStream & ms, char c)
224 MathStream & operator<<(MathStream & ms, MTag const & t)
228 ms.os() << '<' << t.tag_ << '>';
233 MathStream & operator<<(MathStream & ms, ETag const & t)
238 ms.os() << "</" << t.tag_ << '>';
243 void MathStream::cr()
246 for (int i = 0; i < tab(); ++i)
251 MathStream & operator<<(MathStream & ms, docstring const & s)
257 //////////////////////////////////////////////////////////////////////
260 MapleStream & operator<<(MapleStream & ms, MathAtom const & at)
267 MapleStream & operator<<(MapleStream & ms, MathData const & ar)
274 MapleStream & operator<<(MapleStream & ms, char const * s)
281 MapleStream & operator<<(MapleStream & ms, char c)
288 MapleStream & operator<<(MapleStream & ms, int i)
295 MapleStream & operator<<(MapleStream & ms, char_type c)
302 MapleStream & operator<<(MapleStream & ms, docstring const & s)
309 //////////////////////////////////////////////////////////////////////
312 MaximaStream & operator<<(MaximaStream & ms, MathAtom const & at)
319 MaximaStream & operator<<(MaximaStream & ms, MathData const & ar)
326 MaximaStream & operator<<(MaximaStream & ms, char const * s)
333 MaximaStream & operator<<(MaximaStream & ms, char c)
340 MaximaStream & operator<<(MaximaStream & ms, int i)
347 MaximaStream & operator<<(MaximaStream & ms, docstring const & s)
354 MaximaStream & operator<<(MaximaStream & ms, char_type c)
361 //////////////////////////////////////////////////////////////////////
364 MathematicaStream & operator<<(MathematicaStream & ms, MathAtom const & at)
371 MathematicaStream & operator<<(MathematicaStream & ms, MathData const & ar)
378 MathematicaStream & operator<<(MathematicaStream & ms, char const * s)
385 MathematicaStream & operator<<(MathematicaStream & ms, char c)
392 MathematicaStream & operator<<(MathematicaStream & ms, int i)
399 MathematicaStream & operator<<(MathematicaStream & ms, docstring const & s)
406 MathematicaStream & operator<<(MathematicaStream & ms, char_type c)
413 //////////////////////////////////////////////////////////////////////
416 OctaveStream & operator<<(OctaveStream & ns, MathAtom const & at)
423 OctaveStream & operator<<(OctaveStream & ns, MathData const & ar)
430 OctaveStream & operator<<(OctaveStream & ns, char const * s)
437 OctaveStream & operator<<(OctaveStream & ns, char c)
444 OctaveStream & operator<<(OctaveStream & ns, int i)
451 OctaveStream & operator<<(OctaveStream & ns, docstring const & s)
458 OctaveStream & operator<<(OctaveStream & ns, char_type c)
465 OctaveStream & operator<<(OctaveStream & os, std::string const & s)
467 os.os() << from_utf8(s);