1 #ifndef MATH_MATHMLSTREAM_H
2 #define MATH_MATHMLSTREAM_H
5 // Please keep all four streams in one file until the interface has
9 #include "math_metricsinfo.h"
24 WriteStream(std::ostream & os, bool fragile, bool latex);
26 explicit WriteStream(std::ostream & os_);
28 int line() const { return line_; }
30 bool fragile() const { return fragile_; }
32 bool latex() const { return latex_; }
34 std::ostream & os() { return os_; }
36 bool & firstitem() { return firstitem_; }
38 void addlines(unsigned int);
39 /// writes space if next thing is isalpha()
40 void pendingSpace(bool how) { pendingspace_ = how; }
41 /// writes space if next thing is isalpha()
42 bool pendingSpace() const { return pendingspace_; }
46 /// do we have to write \\protect sometimes
48 /// are we at the beginning of an MathArray?
50 /// are we writing to .tex?
52 /// do we have a space pending?
59 WriteStream & operator<<(WriteStream &, MathAtom const &);
61 WriteStream & operator<<(WriteStream &, MathArray const &);
63 WriteStream & operator<<(WriteStream &, char const *);
65 WriteStream & operator<<(WriteStream &, char);
67 WriteStream & operator<<(WriteStream &, int);
69 WriteStream & operator<<(WriteStream &, unsigned int);
79 MTag(char const * const tag) : tag_(tag) {}
81 char const * const tag_;
86 ETag(char const * const tag) : tag_(tag) {}
88 char const * const tag_;
94 explicit MathMLStream(std::ostream & os);
98 std::ostream & os() { return os_; }
100 int line() const { return line_; }
102 int & tab() { return tab_; }
104 friend MathMLStream & operator<<(MathMLStream &, char const *);
117 MathMLStream & operator<<(MathMLStream &, MathAtom const &);
119 MathMLStream & operator<<(MathMLStream &, MathArray const &);
121 MathMLStream & operator<<(MathMLStream &, char const *);
123 MathMLStream & operator<<(MathMLStream &, char);
125 MathMLStream & operator<<(MathMLStream &, MTag const &);
127 MathMLStream & operator<<(MathMLStream &, ETag const &);
138 explicit NormalStream(std::ostream & os) : os_(os) {}
140 std::ostream & os() { return os_; }
147 NormalStream & operator<<(NormalStream &, MathAtom const &);
149 NormalStream & operator<<(NormalStream &, MathArray const &);
151 NormalStream & operator<<(NormalStream &, char const *);
153 NormalStream & operator<<(NormalStream &, char);
155 NormalStream & operator<<(NormalStream &, int);
168 explicit MapleStream(std::ostream & os) : os_(os) {}
170 std::ostream & os() { return os_; }
178 MapleStream & operator<<(MapleStream &, MathAtom const &);
180 MapleStream & operator<<(MapleStream &, MathArray const &);
182 MapleStream & operator<<(MapleStream &, char const *);
184 MapleStream & operator<<(MapleStream &, char);
186 MapleStream & operator<<(MapleStream &, int);
194 class MathematicaStream {
197 explicit MathematicaStream(std::ostream & os) : os_(os) {}
199 std::ostream & os() { return os_; }
207 MathematicaStream & operator<<(MathematicaStream &, MathAtom const &);
209 MathematicaStream & operator<<(MathematicaStream &, MathArray const &);
211 MathematicaStream & operator<<(MathematicaStream &, char const *);
213 MathematicaStream & operator<<(MathematicaStream &, char);
215 MathematicaStream & operator<<(MathematicaStream &, int);
226 explicit OctaveStream(std::ostream & os) : os_(os) {}
228 std::ostream & os() { return os_; }
235 OctaveStream & operator<<(OctaveStream &, MathAtom const &);
237 OctaveStream & operator<<(OctaveStream &, MathArray const &);
239 OctaveStream & operator<<(OctaveStream &, char const *);
241 OctaveStream & operator<<(OctaveStream &, char);
243 OctaveStream & operator<<(OctaveStream &, int);