4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
9 * Full author contact details are available in file CREDITS.
12 #ifndef MATH_MATHMLSTREAM_H
13 #define MATH_MATHMLSTREAM_H
16 // Please keep all four streams in one file until the interface has
20 #include "metricsinfo.h"
21 #include "support/docstream.h"
22 #include "support/docstring.h"
38 WriteStream(odocstream & os, bool fragile, bool latex);
40 explicit WriteStream(odocstream & os);
44 int line() const { return line_; }
46 bool fragile() const { return fragile_; }
48 bool latex() const { return latex_; }
50 odocstream & os() { return os_; }
52 bool & firstitem() { return firstitem_; }
54 void addlines(unsigned int);
55 /// writes space if next thing is isalpha()
56 void pendingSpace(bool how);
57 /// writes space if next thing is isalpha()
58 bool pendingSpace() const { return pendingspace_; }
62 /// do we have to write \\protect sometimes
64 /// are we at the beginning of an MathArray?
66 /// are we writing to .tex?
68 /// do we have a space pending?
75 WriteStream & operator<<(WriteStream &, MathAtom const &);
77 WriteStream & operator<<(WriteStream &, MathArray const &);
79 WriteStream & operator<<(WriteStream &, docstring const &);
81 WriteStream & operator<<(WriteStream &, char const * const);
83 WriteStream & operator<<(WriteStream &, char);
85 WriteStream & operator<<(WriteStream &, int);
87 WriteStream & operator<<(WriteStream &, unsigned int);
98 MTag(docstring const tag) : tag_(tag) {}
100 MTag(char const * const tag) : tag_(from_ascii(tag)) {}
102 docstring const tag_;
108 ETag(docstring const tag) : tag_(tag) {}
110 ETag(char const * const tag) : tag_(from_ascii(tag)) {}
112 docstring const tag_;
118 explicit MathStream(odocstream & os);
122 odocstream & os() { return os_; }
124 int line() const { return line_; }
126 int & tab() { return tab_; }
128 friend MathStream & operator<<(MathStream &, char const *);
141 MathStream & operator<<(MathStream &, MathAtom const &);
143 MathStream & operator<<(MathStream &, MathArray const &);
145 MathStream & operator<<(MathStream &, docstring const &);
147 MathStream & operator<<(MathStream &, char const *);
149 MathStream & operator<<(MathStream &, char);
151 MathStream & operator<<(MathStream &, MTag const &);
153 MathStream & operator<<(MathStream &, ETag const &);
164 explicit NormalStream(odocstream & os) : os_(os) {}
166 odocstream & os() { return os_; }
173 NormalStream & operator<<(NormalStream &, MathAtom const &);
175 NormalStream & operator<<(NormalStream &, MathArray const &);
177 NormalStream & operator<<(NormalStream &, docstring const &);
179 NormalStream & operator<<(NormalStream &, char const *);
181 NormalStream & operator<<(NormalStream &, char);
183 NormalStream & operator<<(NormalStream &, int);
194 explicit MapleStream(odocstream & os) : os_(os) {}
196 odocstream & os() { return os_; }
204 MapleStream & operator<<(MapleStream &, MathAtom const &);
206 MapleStream & operator<<(MapleStream &, MathArray const &);
208 MapleStream & operator<<(MapleStream &, docstring const &);
210 MapleStream & operator<<(MapleStream &, char_type);
212 MapleStream & operator<<(MapleStream &, char const *);
214 MapleStream & operator<<(MapleStream &, char);
216 MapleStream & operator<<(MapleStream &, int);
227 explicit MaximaStream(odocstream & os) : os_(os) {}
229 odocstream & os() { return os_; }
237 MaximaStream & operator<<(MaximaStream &, MathAtom const &);
239 MaximaStream & operator<<(MaximaStream &, MathArray const &);
241 MaximaStream & operator<<(MaximaStream &, docstring const &);
243 MaximaStream & operator<<(MaximaStream &, char_type);
245 MaximaStream & operator<<(MaximaStream &, char const *);
247 MaximaStream & operator<<(MaximaStream &, char);
249 MaximaStream & operator<<(MaximaStream &, int);
257 class MathematicaStream {
260 explicit MathematicaStream(odocstream & os) : os_(os) {}
262 odocstream & os() { return os_; }
270 MathematicaStream & operator<<(MathematicaStream &, MathAtom const &);
272 MathematicaStream & operator<<(MathematicaStream &, MathArray const &);
274 MathematicaStream & operator<<(MathematicaStream &, docstring const &);
276 MathematicaStream & operator<<(MathematicaStream &, char const *);
278 MathematicaStream & operator<<(MathematicaStream &, char);
280 MathematicaStream & operator<<(MathematicaStream &, int);
291 explicit OctaveStream(odocstream & os) : os_(os) {}
293 odocstream & os() { return os_; }
300 OctaveStream & operator<<(OctaveStream &, MathAtom const &);
302 OctaveStream & operator<<(OctaveStream &, MathArray const &);
304 OctaveStream & operator<<(OctaveStream &, docstring const &);
306 OctaveStream & operator<<(OctaveStream &, char_type);
308 OctaveStream & operator<<(OctaveStream &, char const *);
310 OctaveStream & operator<<(OctaveStream &, char);
312 OctaveStream & operator<<(OctaveStream &, int);