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"
19 #include "support/textutils.h"
29 //////////////////////////////////////////////////////////////////////
32 NormalStream & operator<<(NormalStream & ns, MathAtom const & at)
39 NormalStream & operator<<(NormalStream & ns, MathData const & ar)
46 NormalStream & operator<<(NormalStream & ns, docstring const & s)
53 NormalStream & operator<<(NormalStream & ns, const std::string & s)
55 ns.os() << from_utf8(s);
60 NormalStream & operator<<(NormalStream & ns, char const * s)
67 NormalStream & operator<<(NormalStream & ns, char c)
74 NormalStream & operator<<(NormalStream & ns, int i)
82 /////////////////////////////////////////////////////////////////
85 WriteStream & operator<<(WriteStream & ws, docstring const & s)
87 if (ws.pendingSpace() && s.length() > 0) {
88 if (isAlphaASCII(s[0]))
90 ws.pendingSpace(false);
94 docstring::const_iterator dit = s.begin();
95 docstring::const_iterator end = s.end();
96 for (; dit != end; ++dit)
104 WriteStream::WriteStream(odocstream & os, bool fragile, bool latex)
105 : os_(os), fragile_(fragile), firstitem_(false), latex_(latex),
106 pendingspace_(false), line_(0)
110 WriteStream::WriteStream(odocstream & os)
111 : os_(os), fragile_(false), firstitem_(false), latex_(false),
112 pendingspace_(false), line_(0)
116 WriteStream::~WriteStream()
123 void WriteStream::addlines(unsigned int n)
129 void WriteStream::pendingSpace(bool how)
135 WriteStream & operator<<(WriteStream & ws, MathAtom const & at)
142 WriteStream & operator<<(WriteStream & ws, MathData const & ar)
149 WriteStream & operator<<(WriteStream & ws, char const * s)
151 if (ws.pendingSpace() && strlen(s) > 0) {
152 if (isAlphaASCII(s[0]))
154 ws.pendingSpace(false);
157 ws.addlines(int(count(s, s + strlen(s), '\n')));
162 WriteStream & operator<<(WriteStream & ws, char c)
164 if (ws.pendingSpace()) {
167 ws.pendingSpace(false);
176 WriteStream & operator<<(WriteStream & ws, int i)
183 WriteStream & operator<<(WriteStream & ws, unsigned int i)
190 //////////////////////////////////////////////////////////////////////
193 MathStream::MathStream(odocstream & os)
194 : os_(os), tab_(0), line_(0), lastchar_(0)
198 MathStream & operator<<(MathStream & ms, MathAtom const & at)
205 MathStream & operator<<(MathStream & ms, MathData const & ar)
212 MathStream & operator<<(MathStream & ms, char const * s)
219 MathStream & operator<<(MathStream & ms, char c)
226 MathStream & operator<<(MathStream & ms, MTag const & t)
230 ms.os() << '<' << t.tag_ << '>';
235 MathStream & operator<<(MathStream & ms, ETag const & t)
240 ms.os() << "</" << t.tag_ << '>';
245 void MathStream::cr()
248 for (int i = 0; i < tab(); ++i)
253 MathStream & operator<<(MathStream & ms, docstring const & s)
259 //////////////////////////////////////////////////////////////////////
262 MapleStream & operator<<(MapleStream & ms, MathAtom const & at)
269 MapleStream & operator<<(MapleStream & ms, MathData const & ar)
276 MapleStream & operator<<(MapleStream & ms, char const * s)
283 MapleStream & operator<<(MapleStream & ms, char c)
290 MapleStream & operator<<(MapleStream & ms, int i)
297 MapleStream & operator<<(MapleStream & ms, char_type c)
304 MapleStream & operator<<(MapleStream & ms, docstring const & s)
311 //////////////////////////////////////////////////////////////////////
314 MaximaStream & operator<<(MaximaStream & ms, MathAtom const & at)
321 MaximaStream & operator<<(MaximaStream & ms, MathData const & ar)
328 MaximaStream & operator<<(MaximaStream & ms, char const * s)
335 MaximaStream & operator<<(MaximaStream & ms, char c)
342 MaximaStream & operator<<(MaximaStream & ms, int i)
349 MaximaStream & operator<<(MaximaStream & ms, docstring const & s)
356 MaximaStream & operator<<(MaximaStream & ms, char_type c)
363 //////////////////////////////////////////////////////////////////////
366 MathematicaStream & operator<<(MathematicaStream & ms, MathAtom const & at)
373 MathematicaStream & operator<<(MathematicaStream & ms, MathData const & ar)
380 MathematicaStream & operator<<(MathematicaStream & ms, char const * s)
387 MathematicaStream & operator<<(MathematicaStream & ms, char c)
394 MathematicaStream & operator<<(MathematicaStream & ms, int i)
401 MathematicaStream & operator<<(MathematicaStream & ms, docstring const & s)
408 MathematicaStream & operator<<(MathematicaStream & ms, char_type c)
415 //////////////////////////////////////////////////////////////////////
418 OctaveStream & operator<<(OctaveStream & ns, MathAtom const & at)
425 OctaveStream & operator<<(OctaveStream & ns, MathData const & ar)
432 OctaveStream & operator<<(OctaveStream & ns, char const * s)
439 OctaveStream & operator<<(OctaveStream & ns, char c)
446 OctaveStream & operator<<(OctaveStream & ns, int i)
453 OctaveStream & operator<<(OctaveStream & ns, docstring const & s)
460 OctaveStream & operator<<(OctaveStream & ns, char_type c)
467 OctaveStream & operator<<(OctaveStream & os, std::string const & s)
469 os.os() << from_utf8(s);