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"
31 //////////////////////////////////////////////////////////////////////
34 NormalStream & operator<<(NormalStream & ns, MathAtom const & at)
41 NormalStream & operator<<(NormalStream & ns, MathData const & ar)
48 NormalStream & operator<<(NormalStream & ns, docstring const & s)
55 NormalStream & operator<<(NormalStream & ns, const string & s)
57 ns.os() << from_utf8(s);
62 NormalStream & operator<<(NormalStream & ns, char const * s)
69 NormalStream & operator<<(NormalStream & ns, char c)
76 NormalStream & operator<<(NormalStream & ns, int i)
84 /////////////////////////////////////////////////////////////////
87 WriteStream & operator<<(WriteStream & ws, docstring const & s)
89 if (ws.pendingSpace() && s.length() > 0) {
90 if (isAlphaASCII(s[0]))
92 ws.pendingSpace(false);
96 docstring::const_iterator dit = s.begin();
97 docstring::const_iterator end = s.end();
98 for (; dit != end; ++dit)
106 WriteStream::WriteStream(odocstream & os, bool fragile, bool latex, bool dryrun)
107 : os_(os), fragile_(fragile), firstitem_(false), latex_(latex),
108 dryrun_(dryrun), pendingspace_(false), textmode_(false), line_(0)
112 WriteStream::WriteStream(odocstream & os)
113 : os_(os), fragile_(false), firstitem_(false), latex_(false),
114 dryrun_(false), pendingspace_(false), textmode_(false), line_(0)
118 WriteStream::~WriteStream()
125 void WriteStream::addlines(unsigned int n)
131 void WriteStream::pendingSpace(bool how)
137 void WriteStream::textMode(bool textmode)
139 textmode_ = textmode;
143 WriteStream & operator<<(WriteStream & ws, MathAtom const & at)
150 WriteStream & operator<<(WriteStream & ws, MathData const & ar)
157 WriteStream & operator<<(WriteStream & ws, char const * s)
159 if (ws.pendingSpace() && strlen(s) > 0) {
160 if (isAlphaASCII(s[0]))
162 ws.pendingSpace(false);
165 ws.addlines(int(count(s, s + strlen(s), '\n')));
170 WriteStream & operator<<(WriteStream & ws, char c)
172 if (ws.pendingSpace()) {
175 ws.pendingSpace(false);
184 WriteStream & operator<<(WriteStream & ws, int i)
191 WriteStream & operator<<(WriteStream & ws, unsigned int i)
198 //////////////////////////////////////////////////////////////////////
201 MathStream::MathStream(odocstream & os)
202 : os_(os), tab_(0), line_(0), lastchar_(0)
206 MathStream & operator<<(MathStream & ms, MathAtom const & at)
213 MathStream & operator<<(MathStream & ms, MathData const & ar)
220 MathStream & operator<<(MathStream & ms, char const * s)
227 MathStream & operator<<(MathStream & ms, char c)
234 MathStream & operator<<(MathStream & ms, MTag const & t)
238 ms.os() << '<' << from_ascii(t.tag_) << '>';
243 MathStream & operator<<(MathStream & ms, ETag const & t)
248 ms.os() << "</" << from_ascii(t.tag_) << '>';
253 void MathStream::cr()
256 for (int i = 0; i < tab(); ++i)
261 MathStream & operator<<(MathStream & ms, docstring const & s)
267 //////////////////////////////////////////////////////////////////////
270 MapleStream & operator<<(MapleStream & ms, MathAtom const & at)
277 MapleStream & operator<<(MapleStream & ms, MathData const & ar)
284 MapleStream & operator<<(MapleStream & ms, char const * s)
291 MapleStream & operator<<(MapleStream & ms, char c)
298 MapleStream & operator<<(MapleStream & ms, int i)
305 MapleStream & operator<<(MapleStream & ms, char_type c)
312 MapleStream & operator<<(MapleStream & ms, docstring const & s)
319 //////////////////////////////////////////////////////////////////////
322 MaximaStream & operator<<(MaximaStream & ms, MathAtom const & at)
329 MaximaStream & operator<<(MaximaStream & ms, MathData const & ar)
336 MaximaStream & operator<<(MaximaStream & ms, char const * s)
343 MaximaStream & operator<<(MaximaStream & ms, char c)
350 MaximaStream & operator<<(MaximaStream & ms, int i)
357 MaximaStream & operator<<(MaximaStream & ms, docstring const & s)
364 MaximaStream & operator<<(MaximaStream & ms, char_type c)
371 //////////////////////////////////////////////////////////////////////
374 MathematicaStream & operator<<(MathematicaStream & ms, MathAtom const & at)
381 MathematicaStream & operator<<(MathematicaStream & ms, MathData const & ar)
388 MathematicaStream & operator<<(MathematicaStream & ms, char const * s)
395 MathematicaStream & operator<<(MathematicaStream & ms, char c)
402 MathematicaStream & operator<<(MathematicaStream & ms, int i)
409 MathematicaStream & operator<<(MathematicaStream & ms, docstring const & s)
416 MathematicaStream & operator<<(MathematicaStream & ms, char_type c)
423 //////////////////////////////////////////////////////////////////////
426 OctaveStream & operator<<(OctaveStream & ns, MathAtom const & at)
433 OctaveStream & operator<<(OctaveStream & ns, MathData const & ar)
440 OctaveStream & operator<<(OctaveStream & ns, char const * s)
447 OctaveStream & operator<<(OctaveStream & ns, char c)
454 OctaveStream & operator<<(OctaveStream & ns, int i)
461 OctaveStream & operator<<(OctaveStream & ns, docstring const & s)
468 OctaveStream & operator<<(OctaveStream & ns, char_type c)
475 OctaveStream & operator<<(OctaveStream & os, string const & s)
477 os.os() << from_utf8(s);