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/lyxalgo.h"
25 return ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z');
38 //////////////////////////////////////////////////////////////////////
41 NormalStream & operator<<(NormalStream & ns, MathAtom const & at)
48 NormalStream & operator<<(NormalStream & ns, MathArray const & ar)
55 NormalStream & operator<<(NormalStream & ns, docstring const & s)
62 NormalStream & operator<<(NormalStream & ns, const std::string & s)
64 ns.os() << from_utf8(s);
69 NormalStream & operator<<(NormalStream & ns, char const * s)
76 NormalStream & operator<<(NormalStream & ns, char c)
83 NormalStream & operator<<(NormalStream & ns, int i)
91 /////////////////////////////////////////////////////////////////
94 WriteStream & operator<<(WriteStream & ws, docstring const & s)
101 WriteStream::WriteStream(odocstream & os, bool fragile, bool latex)
102 : os_(os), fragile_(fragile), firstitem_(false), latex_(latex),
103 pendingspace_(false), line_(0)
107 WriteStream::WriteStream(odocstream & os)
108 : os_(os), fragile_(false), firstitem_(false), latex_(false),
109 pendingspace_(false), line_(0)
113 WriteStream::~WriteStream()
120 void WriteStream::addlines(unsigned int n)
126 void WriteStream::pendingSpace(bool how)
132 WriteStream & operator<<(WriteStream & ws, MathAtom const & at)
139 WriteStream & operator<<(WriteStream & ws, MathArray const & ar)
146 WriteStream & operator<<(WriteStream & ws, char const * s)
148 if (ws.pendingSpace() && strlen(s) > 0) {
151 ws.pendingSpace(false);
154 ws.addlines(int(count(s, s + strlen(s), '\n')));
159 WriteStream & operator<<(WriteStream & ws, char c)
161 if (ws.pendingSpace()) {
164 ws.pendingSpace(false);
173 WriteStream & operator<<(WriteStream & ws, int i)
180 WriteStream & operator<<(WriteStream & ws, unsigned int i)
187 //////////////////////////////////////////////////////////////////////
190 MathStream::MathStream(odocstream & os)
191 : os_(os), tab_(0), line_(0), lastchar_(0)
195 MathStream & operator<<(MathStream & ms, MathAtom const & at)
202 MathStream & operator<<(MathStream & ms, MathArray const & ar)
209 MathStream & operator<<(MathStream & ms, char const * s)
216 MathStream & operator<<(MathStream & ms, char c)
223 MathStream & operator<<(MathStream & ms, MTag const & t)
227 ms.os() << '<' << t.tag_ << '>';
232 MathStream & operator<<(MathStream & ms, ETag const & t)
237 ms.os() << "</" << t.tag_ << '>';
242 void MathStream::cr()
245 for (int i = 0; i < tab(); ++i)
250 MathStream & operator<<(MathStream & ms, docstring const & s)
256 //////////////////////////////////////////////////////////////////////
259 MapleStream & operator<<(MapleStream & ms, MathAtom const & at)
266 MapleStream & operator<<(MapleStream & ms, MathArray const & ar)
273 MapleStream & operator<<(MapleStream & ms, char const * s)
280 MapleStream & operator<<(MapleStream & ms, char c)
287 MapleStream & operator<<(MapleStream & ms, int i)
294 MapleStream & operator<<(MapleStream & ms, char_type c)
301 MapleStream & operator<<(MapleStream & ms, docstring const & s)
308 //////////////////////////////////////////////////////////////////////
311 MaximaStream & operator<<(MaximaStream & ms, MathAtom const & at)
318 MaximaStream & operator<<(MaximaStream & ms, MathArray const & ar)
325 MaximaStream & operator<<(MaximaStream & ms, char const * s)
332 MaximaStream & operator<<(MaximaStream & ms, char c)
339 MaximaStream & operator<<(MaximaStream & ms, int i)
346 MaximaStream & operator<<(MaximaStream & ms, docstring const & s)
353 MaximaStream & operator<<(MaximaStream & ms, char_type c)
360 //////////////////////////////////////////////////////////////////////
363 MathematicaStream & operator<<(MathematicaStream & ms, MathAtom const & at)
370 MathematicaStream & operator<<(MathematicaStream & ms, MathArray const & ar)
377 MathematicaStream & operator<<(MathematicaStream & ms, char const * s)
384 MathematicaStream & operator<<(MathematicaStream & ms, char c)
391 MathematicaStream & operator<<(MathematicaStream & ms, int i)
398 MathematicaStream & operator<<(MathematicaStream & ms, docstring const & s)
405 MathematicaStream & operator<<(MathematicaStream & ms, char_type c)
412 //////////////////////////////////////////////////////////////////////
415 OctaveStream & operator<<(OctaveStream & ns, MathAtom const & at)
422 OctaveStream & operator<<(OctaveStream & ns, MathArray const & ar)
429 OctaveStream & operator<<(OctaveStream & ns, char const * s)
436 OctaveStream & operator<<(OctaveStream & ns, char c)
443 OctaveStream & operator<<(OctaveStream & ns, int i)
450 OctaveStream & operator<<(OctaveStream & ns, docstring const & s)
457 OctaveStream & operator<<(OctaveStream & ns, char_type c)
464 OctaveStream & operator<<(OctaveStream & os, std::string const & s)
466 os.os() << from_utf8(s);