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 MTag(char const * const tag) : tag_(tag) {}
26 char const * const tag_;
31 ETag(char const * const tag) : tag_(tag) {}
33 char const * const tag_;
39 explicit MathMLStream(std::ostream & os);
43 std::ostream & os() { return os_; }
45 int line() const { return line_; }
47 int & tab() { return tab_; }
49 friend MathMLStream & operator<<(MathMLStream &, char const *);
62 MathMLStream & operator<<(MathMLStream &, MathAtom const &);
64 MathMLStream & operator<<(MathMLStream &, MathArray const &);
66 MathMLStream & operator<<(MathMLStream &, char const *);
68 MathMLStream & operator<<(MathMLStream &, char);
70 MathMLStream & operator<<(MathMLStream &, MTag const &);
72 MathMLStream & operator<<(MathMLStream &, ETag const &);
83 explicit NormalStream(std::ostream & os) : os_(os) {}
85 std::ostream & os() { return os_; }
92 NormalStream & operator<<(NormalStream &, MathAtom const &);
94 NormalStream & operator<<(NormalStream &, MathArray const &);
96 NormalStream & operator<<(NormalStream &, char const *);
98 NormalStream & operator<<(NormalStream &, char);
100 NormalStream & operator<<(NormalStream &, int);
113 explicit MapleStream(std::ostream & os) : os_(os) {}
115 std::ostream & os() { return os_; }
123 MapleStream & operator<<(MapleStream &, MathAtom const &);
125 MapleStream & operator<<(MapleStream &, MathArray const &);
127 MapleStream & operator<<(MapleStream &, char const *);
129 MapleStream & operator<<(MapleStream &, char);
131 MapleStream & operator<<(MapleStream &, int);
139 class MathematicaStream {
142 explicit MathematicaStream(std::ostream & os) : os_(os) {}
144 std::ostream & os() { return os_; }
152 MathematicaStream & operator<<(MathematicaStream &, MathAtom const &);
154 MathematicaStream & operator<<(MathematicaStream &, MathArray const &);
156 MathematicaStream & operator<<(MathematicaStream &, char const *);
158 MathematicaStream & operator<<(MathematicaStream &, char);
160 MathematicaStream & operator<<(MathematicaStream &, int);
171 explicit OctaveStream(std::ostream & os) : os_(os) {}
173 std::ostream & os() { return os_; }
180 OctaveStream & operator<<(OctaveStream &, MathAtom const &);
182 OctaveStream & operator<<(OctaveStream &, MathArray const &);
184 OctaveStream & operator<<(OctaveStream &, char const *);
186 OctaveStream & operator<<(OctaveStream &, char);
188 OctaveStream & operator<<(OctaveStream &, int);
199 WriteStream(std::ostream & os, bool fragile, bool latex);
201 explicit WriteStream(std::ostream & os_);
203 int line() const { return line_; }
205 bool fragile() const { return fragile_; }
207 bool latex() const { return latex_; }
209 std::ostream & os() { return os_; }
211 bool & firstitem() { return firstitem_; }
213 void addlines(unsigned int);
219 /// are we writing to .tex?
221 /// are we at the beginning of an MathArray?
228 WriteStream & operator<<(WriteStream &, MathAtom const &);
230 WriteStream & operator<<(WriteStream &, MathArray const &);
232 WriteStream & operator<<(WriteStream &, char const *);
234 WriteStream & operator<<(WriteStream &, char);
236 WriteStream & operator<<(WriteStream &, int);
238 WriteStream & operator<<(WriteStream &, unsigned int);