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 "MathStream.h"
15 #include "InsetMath.h"
17 #include "MathExtern.h"
19 #include "support/textutils.h"
20 #include "support/docstring.h"
30 //////////////////////////////////////////////////////////////////////
33 NormalStream & operator<<(NormalStream & ns, MathAtom const & at)
40 NormalStream & operator<<(NormalStream & ns, MathData const & ar)
47 NormalStream & operator<<(NormalStream & ns, docstring const & s)
54 NormalStream & operator<<(NormalStream & ns, const string & s)
56 ns.os() << from_utf8(s);
61 NormalStream & operator<<(NormalStream & ns, char const * s)
68 NormalStream & operator<<(NormalStream & ns, char c)
75 NormalStream & operator<<(NormalStream & ns, int i)
83 /////////////////////////////////////////////////////////////////
86 WriteStream & operator<<(WriteStream & ws, docstring const & s)
88 if (ws.pendingSpace() && s.length() > 0) {
89 if (isAlphaASCII(s[0]))
91 ws.pendingSpace(false);
95 docstring::const_iterator dit = s.begin();
96 docstring::const_iterator end = s.end();
97 for (; dit != end; ++dit)
105 WriteStream::WriteStream(odocstream & os, bool fragile, bool latex)
106 : os_(os), fragile_(fragile), firstitem_(false), latex_(latex),
107 pendingspace_(false), line_(0)
111 WriteStream::WriteStream(odocstream & os)
112 : os_(os), fragile_(false), firstitem_(false), latex_(false),
113 pendingspace_(false), line_(0)
117 WriteStream::~WriteStream()
124 void WriteStream::addlines(unsigned int n)
130 void WriteStream::pendingSpace(bool how)
136 WriteStream & operator<<(WriteStream & ws, MathAtom const & at)
143 WriteStream & operator<<(WriteStream & ws, MathData const & ar)
150 WriteStream & operator<<(WriteStream & ws, char const * s)
152 if (ws.pendingSpace() && strlen(s) > 0) {
153 if (isAlphaASCII(s[0]))
155 ws.pendingSpace(false);
158 ws.addlines(int(count(s, s + strlen(s), '\n')));
163 WriteStream & operator<<(WriteStream & ws, char c)
165 if (ws.pendingSpace()) {
168 ws.pendingSpace(false);
177 WriteStream & operator<<(WriteStream & ws, int i)
184 WriteStream & operator<<(WriteStream & ws, unsigned int i)
191 //////////////////////////////////////////////////////////////////////
194 MathStream::MathStream(odocstream & os)
195 : os_(os), tab_(0), line_(0), lastchar_(0)
199 MathStream & operator<<(MathStream & ms, MathAtom const & at)
206 MathStream & operator<<(MathStream & ms, MathData const & ar)
213 MathStream & operator<<(MathStream & ms, char const * s)
220 MathStream & operator<<(MathStream & ms, char c)
227 MathStream & operator<<(MathStream & ms, MTag const & t)
231 ms.os() << '<' << from_ascii(t.tag_) << '>';
236 MathStream & operator<<(MathStream & ms, ETag const & t)
241 ms.os() << "</" << from_ascii(t.tag_) << '>';
246 void MathStream::cr()
249 for (int i = 0; i < tab(); ++i)
254 MathStream & operator<<(MathStream & ms, docstring const & s)
260 //////////////////////////////////////////////////////////////////////
263 MapleStream & operator<<(MapleStream & ms, MathAtom const & at)
270 MapleStream & operator<<(MapleStream & ms, MathData const & ar)
277 MapleStream & operator<<(MapleStream & ms, char const * s)
284 MapleStream & operator<<(MapleStream & ms, char c)
291 MapleStream & operator<<(MapleStream & ms, int i)
298 MapleStream & operator<<(MapleStream & ms, char_type c)
305 MapleStream & operator<<(MapleStream & ms, docstring const & s)
312 //////////////////////////////////////////////////////////////////////
315 MaximaStream & operator<<(MaximaStream & ms, MathAtom const & at)
322 MaximaStream & operator<<(MaximaStream & ms, MathData const & ar)
329 MaximaStream & operator<<(MaximaStream & ms, char const * s)
336 MaximaStream & operator<<(MaximaStream & ms, char c)
343 MaximaStream & operator<<(MaximaStream & ms, int i)
350 MaximaStream & operator<<(MaximaStream & ms, docstring const & s)
357 MaximaStream & operator<<(MaximaStream & ms, char_type c)
364 //////////////////////////////////////////////////////////////////////
367 MathematicaStream & operator<<(MathematicaStream & ms, MathAtom const & at)
374 MathematicaStream & operator<<(MathematicaStream & ms, MathData const & ar)
381 MathematicaStream & operator<<(MathematicaStream & ms, char const * s)
388 MathematicaStream & operator<<(MathematicaStream & ms, char c)
395 MathematicaStream & operator<<(MathematicaStream & ms, int i)
402 MathematicaStream & operator<<(MathematicaStream & ms, docstring const & s)
409 MathematicaStream & operator<<(MathematicaStream & ms, char_type c)
416 //////////////////////////////////////////////////////////////////////
419 OctaveStream & operator<<(OctaveStream & ns, MathAtom const & at)
426 OctaveStream & operator<<(OctaveStream & ns, MathData const & ar)
433 OctaveStream & operator<<(OctaveStream & ns, char const * s)
440 OctaveStream & operator<<(OctaveStream & ns, char c)
447 OctaveStream & operator<<(OctaveStream & ns, int i)
454 OctaveStream & operator<<(OctaveStream & ns, docstring const & s)
461 OctaveStream & operator<<(OctaveStream & ns, char_type c)
468 OctaveStream & operator<<(OctaveStream & os, string const & s)
470 os.os() << from_utf8(s);