source: git/Singular/PrettyPrinter.cc @ f2dcd1

spielwiese
Last change on this file since f2dcd1 was f2dcd1, checked in by Frank Seelisch <seelisch@…>, 14 years ago
more stuff for C++ wrapper implementation git-svn-id: file:///usr/local/Singular/svn/trunk@12152 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 5.5 KB
Line 
1#include "mod2.h"
2
3#if defined(HAVE_MINOR) || defined(HAVE_WRAPPERS)
4
5#include <string>
6#include <fstream>
7#include "febase.h"
8#include "PrettyPrinter.h"
9
10PrettyPrinter::PrettyPrinter (const char* fileName1, const char* fileName2,   // choose filename "" for no output file
11                              const bool append1, const bool append2,
12                              const int console, const char* baseIndent)
13{
14  m_baseIndent = new char[200];
15  m_fileName1 = new char[200];
16  m_fileName2 = new char[200];
17  m_indent = new char[10];
18
19  strcpy(m_baseIndent, baseIndent);
20  strcpy(m_fileName1, fileName1);
21  strcpy(m_fileName2, fileName2);
22  strcpy(m_indent, "");
23  if (strcmp(m_fileName1, "") != 0)
24  {
25    if (append1) m_file1.open(m_fileName1, std::fstream::app);
26    else         m_file1.open(m_fileName1);
27  }
28  if (strcmp(m_fileName2, "") != 0)
29  { 
30    if (append2) m_file2.open(m_fileName2, std::fstream::app);
31    else         m_file2.open(m_fileName2);
32  }
33  m_console = console;
34  m_indents = 0;
35}
36
37PrettyPrinter::~PrettyPrinter ()
38{
39  if (strcmp(m_fileName1, "") != 0) m_file1.close();
40  if (strcmp(m_fileName2, "") != 0) m_file2.close();
41  delete m_baseIndent;
42  delete m_fileName1;
43  delete m_fileName2;
44  delete m_indent;
45}
46
47PrettyPrinter& PrettyPrinter::operator< (const char* s)
48{
49  if (strcmp(m_fileName1, "") != 0)
50  {
51    m_file1 << s;
52  }
53  if (m_console == 0 || m_console == 1)
54  {
55    PrintS(s);
56  }
57  return *this;
58}
59
60PrettyPrinter& PrettyPrinter::operator<< (const char* s)
61{
62  if (strcmp(m_fileName1, "") != 0)
63  {
64    m_file1 << s;
65  }
66  if (strcmp(m_fileName2, "") != 0)
67  {
68    m_file2 << s;
69  }
70  if (m_console == 0 || m_console == 1 || m_console == 2)
71  {
72    PrintS(s);
73  }
74  return *this;
75}
76
77PrettyPrinter& PrettyPrinter::operator< (const std::string s)
78{
79  return (*this) < s.c_str();
80}
81
82PrettyPrinter& PrettyPrinter::operator<< (const std::string s)
83{
84  return (*this) << s.c_str();
85}
86
87PrettyPrinter& PrettyPrinter::operator> (const std::string s)
88{
89  return (*this) > s.c_str();
90}
91
92PrettyPrinter& PrettyPrinter::operator>> (const std::string s)
93{
94  return (*this) >> s.c_str();
95}
96
97PrettyPrinter& PrettyPrinter::operator< (const int i)
98{
99  char h[10];
100  sprintf(h, "%d", i);
101  return (*this) < h;
102}
103
104PrettyPrinter& PrettyPrinter::operator<< (const int i)
105{
106  char h[10];
107  sprintf(h, "%d", i);
108  return (*this) << h;
109}
110
111PrettyPrinter& PrettyPrinter::operator> (const int i)
112{
113  char h[10];
114  sprintf(h, "%d", i);
115  return (*this) > h;
116}
117
118PrettyPrinter& PrettyPrinter::operator>> (const int i)
119{
120  char h[10];
121  sprintf(h, "%d", i);
122  return (*this) >> h;
123}
124
125PrettyPrinter& PrettyPrinter::operator< (const long l)
126{
127  char h[10];
128  sprintf(h, "%ld", l);
129  return (*this) < h;
130}
131
132PrettyPrinter& PrettyPrinter::operator<< (const long l)
133{
134  char h[10];
135  sprintf(h, "%ld", l);
136  return (*this) << h;
137}
138
139PrettyPrinter& PrettyPrinter::operator> (const long l)
140{
141  char h[10];
142  sprintf(h, "%ld", l);
143  return (*this) > h;
144}
145
146PrettyPrinter& PrettyPrinter::operator>> (const long l)
147{
148  char h[10];
149  sprintf(h, "%ld", l);
150  return (*this) >> h;
151}
152
153PrettyPrinter& PrettyPrinter::operator< (const unsigned long ul)
154{
155  char h[10];
156  sprintf(h, "%lu", ul);
157  return (*this) < h;
158}
159
160PrettyPrinter& PrettyPrinter::operator<< (const unsigned long ul)
161{
162  char h[10];
163  sprintf(h, "%lu", ul);
164  return (*this) << h;
165}
166
167PrettyPrinter& PrettyPrinter::operator> (const unsigned long ul)
168{
169  char h[10];
170  sprintf(h, "%lu", ul);
171  return (*this) > h;
172}
173
174PrettyPrinter& PrettyPrinter::operator>> (const unsigned long ul)
175{
176  char h[10];
177  sprintf(h, "%lu", ul);
178  return (*this) >> h;
179}
180
181PrettyPrinter& PrettyPrinter::operator+ ()
182{
183  if (strcmp(m_fileName1, "") != 0)
184  {
185    m_file1 << "\n";
186  }
187  if (m_console == 0 || m_console == 1)
188  {
189    PrintLn();
190  }
191  return *this;
192}
193
194PrettyPrinter& PrettyPrinter::operator++ ()
195{
196  if (strcmp(m_fileName1, "") != 0)
197  {
198    m_file1 << "\n";
199  }
200  if (strcmp(m_fileName2, "") != 0)
201  {
202    m_file2 << "\n";
203  }
204  if (m_console == 0 || m_console == 1 || m_console == 2)
205  {
206    PrintLn();
207  }
208  return *this;
209}
210
211PrettyPrinter& PrettyPrinter::operator> (const char* s)
212{
213  if (strcmp(m_fileName1, "") != 0)
214  {
215    m_file1 << m_indent;
216    m_file1 << s;
217  }
218  if (m_console == 0 || m_console == 1)
219  {
220    PrintS(m_indent);
221    PrintS(s);
222  }
223  return *this;
224}
225
226PrettyPrinter& PrettyPrinter::operator>> (const char* s)
227{
228  if (strcmp(m_fileName1, "") != 0)
229  {
230    m_file1 << m_indent;
231    m_file1 << s;
232  }
233  if (strcmp(m_fileName2, "") != 0)
234  {
235    m_file2 << m_indent;
236    m_file2 << s;
237  }
238  if (m_console == 0 || m_console == 1 || m_console == 2)
239  {
240    PrintS(m_indent);
241    PrintS(s);
242  }
243  return *this;
244}
245
246PrettyPrinter& PrettyPrinter::operator+ (const int i)
247{
248  m_indents += i;
249  if (m_indents < 0) m_indents = 0;
250  delete m_indent;
251  m_indent = new char[0];
252  strcpy(m_indent, "");
253  for (int j = 0; j < m_indents; j++) strcat(m_indent, m_baseIndent);
254  return *this;
255}
256
257PrettyPrinter& PrettyPrinter::operator- (const int i)
258{
259  m_indents -= i;
260  if (m_indents < 0) m_indents = 0;
261  delete m_indent;
262  m_indent = new char[0];
263  strcpy(m_indent, "");
264  for (int j = 0; j < m_indents; j++) strcat(m_indent, m_baseIndent);
265  return *this;
266}
267
268void PrettyPrinter::setBaseIndent (const char* baseIndent)
269{
270  strcpy(m_baseIndent, baseIndent);
271}
272
273char* PrettyPrinter::getBaseIndent () const
274{
275  return m_baseIndent;
276}
277
278void PrettyPrinter::setConsole (const int console)
279{
280  m_console = console;
281}
282
283int PrettyPrinter::getConsole () const
284{
285  return m_console;
286}
287
288#endif // defined(HAVE_MINOR) || defined(HAVE_WRAPPERS)
Note: See TracBrowser for help on using the repository browser.