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)
107 : os_(os), fragile_(fragile), firstitem_(false), latex_(latex),
108 pendingspace_(false), line_(0)
112 WriteStream::WriteStream(odocstream & os)
113 : os_(os), fragile_(false), firstitem_(false), latex_(false),
114 pendingspace_(false), line_(0)
118 WriteStream::~WriteStream()
125 void WriteStream::addlines(unsigned int n)
131 void WriteStream::pendingSpace(bool how)
137 WriteStream & operator<<(WriteStream & ws, MathAtom const & at)
144 WriteStream & operator<<(WriteStream & ws, MathData const & ar)
151 WriteStream & operator<<(WriteStream & ws, char const * s)
153 if (ws.pendingSpace() && strlen(s) > 0) {
154 if (isAlphaASCII(s[0]))
156 ws.pendingSpace(false);
159 ws.addlines(int(count(s, s + strlen(s), '\n')));
164 WriteStream & operator<<(WriteStream & ws, char c)
166 if (ws.pendingSpace()) {
169 ws.pendingSpace(false);
178 WriteStream & operator<<(WriteStream & ws, int i)
185 WriteStream & operator<<(WriteStream & ws, unsigned int i)
192 //////////////////////////////////////////////////////////////////////
195 MathStream::MathStream(odocstream & os)
196 : os_(os), tab_(0), line_(0), lastchar_(0)
200 MathStream & operator<<(MathStream & ms, MathAtom const & at)
207 MathStream & operator<<(MathStream & ms, MathData const & ar)
214 MathStream & operator<<(MathStream & ms, char const * s)
221 MathStream & operator<<(MathStream & ms, char c)
228 MathStream & operator<<(MathStream & ms, MTag const & t)
232 ms.os() << '<' << from_ascii(t.tag_) << '>';
237 MathStream & operator<<(MathStream & ms, ETag const & t)
242 ms.os() << "</" << from_ascii(t.tag_) << '>';
247 void MathStream::cr()
250 for (int i = 0; i < tab(); ++i)
255 MathStream & operator<<(MathStream & ms, docstring const & s)
261 //////////////////////////////////////////////////////////////////////
264 MapleStream & operator<<(MapleStream & ms, MathAtom const & at)
271 MapleStream & operator<<(MapleStream & ms, MathData const & ar)
278 MapleStream & operator<<(MapleStream & ms, char const * s)
285 MapleStream & operator<<(MapleStream & ms, char c)
292 MapleStream & operator<<(MapleStream & ms, int i)
299 MapleStream & operator<<(MapleStream & ms, char_type c)
306 MapleStream & operator<<(MapleStream & ms, docstring const & s)
313 //////////////////////////////////////////////////////////////////////
316 MaximaStream & operator<<(MaximaStream & ms, MathAtom const & at)
323 MaximaStream & operator<<(MaximaStream & ms, MathData const & ar)
330 MaximaStream & operator<<(MaximaStream & ms, char const * s)
337 MaximaStream & operator<<(MaximaStream & ms, char c)
344 MaximaStream & operator<<(MaximaStream & ms, int i)
351 MaximaStream & operator<<(MaximaStream & ms, docstring const & s)
358 MaximaStream & operator<<(MaximaStream & ms, char_type c)
365 //////////////////////////////////////////////////////////////////////
368 MathematicaStream & operator<<(MathematicaStream & ms, MathAtom const & at)
375 MathematicaStream & operator<<(MathematicaStream & ms, MathData const & ar)
382 MathematicaStream & operator<<(MathematicaStream & ms, char const * s)
389 MathematicaStream & operator<<(MathematicaStream & ms, char c)
396 MathematicaStream & operator<<(MathematicaStream & ms, int i)
403 MathematicaStream & operator<<(MathematicaStream & ms, docstring const & s)
410 MathematicaStream & operator<<(MathematicaStream & ms, char_type c)
417 //////////////////////////////////////////////////////////////////////
420 OctaveStream & operator<<(OctaveStream & ns, MathAtom const & at)
427 OctaveStream & operator<<(OctaveStream & ns, MathData const & ar)
434 OctaveStream & operator<<(OctaveStream & ns, char const * s)
441 OctaveStream & operator<<(OctaveStream & ns, char c)
448 OctaveStream & operator<<(OctaveStream & ns, int i)
455 OctaveStream & operator<<(OctaveStream & ns, docstring const & s)
462 OctaveStream & operator<<(OctaveStream & ns, char_type c)
469 OctaveStream & operator<<(OctaveStream & os, string const & s)
471 os.os() << from_utf8(s);