Print.h
Go to the documentation of this file.
1 /* $Id: Print.h 1156 2011-06-07 04:01:16Z bhagman $
2 ||
3 || @author Hernando Barragan <b@wiring.org.co>
4 || @url http://wiring.org.co/
5 || @contribution Nicholas Zambetti
6 || @contribution Brett Hagman <bhagman@wiring.org.co>
7 || @contribution Alexander Brevig <abrevig@wiring.org.co>
8 ||
9 || @description
10 || | Print library.
11 || |
12 || | Wiring Common API
13 || #
14 ||
15 || @license Please see cores/Common/License.txt.
16 ||
17 */
18 
19 #pragma once
20 
21 #ifdef __cplusplus
22 
23 #include "Printable.h"
24 #include "WString.h"
25 
26 #define INITIAL_PRINTF_BUFFSIZE 128
27 
36 class Print
37 {
38 public:
39  virtual ~Print()
40  {
41  }
42 
47  {
48  return write_error;
49  }
50 
54  {
55  setWriteError(0);
56  }
57 
62  virtual size_t write(uint8_t c) = 0;
63 
68  size_t write(const char* str)
69  {
70  if(str == nullptr) {
71  return 0;
72  }
73  return write(reinterpret_cast<const uint8_t*>(str), strlen(str));
74  }
75 
81  virtual size_t write(const uint8_t* buffer, size_t size);
82 
88  size_t write(const char* buffer, size_t size)
89  {
90  return write((const uint8_t*)buffer, size);
91  }
92 
97  size_t print(char c)
98  {
99  return write(c);
100  }
101 
106  size_t print(const char str[])
107  {
108  return write(str);
109  }
110 
118  size_t print(unsigned long num, int base = DEC)
119  {
120  if(base == 0) {
121  return write(num);
122  } else {
123  return printNumber(num, base);
124  }
125  }
126 
127  size_t print(const unsigned long long& num, int base = DEC)
128  {
129  return printNumber(num, base);
130  }
131 
132  size_t print(long, int base = DEC);
133 
134  size_t print(const long long&, int base = DEC);
135 
136  size_t print(unsigned int num, int base = DEC)
137  {
138  return print((unsigned long)num, base);
139  }
140 
141  size_t print(unsigned char num, int base = DEC)
142  {
143  return print((unsigned long)num, base);
144  }
145 
146  size_t print(int num, int base = DEC)
147  {
148  return print((long)num, base);
149  }
157  size_t print(double num, int digits = 2)
158  {
159  return printFloat(num, digits);
160  }
161 
166  size_t print(const Printable& p)
167  {
168  return p.printTo(*this);
169  }
170 
175  size_t print(const String& s)
176  {
177  return write(s.c_str(), s.length());
178  }
179 
183  size_t println()
184  {
185  return print("\r\n");
186  }
187 
192  size_t println(const char str[])
193  {
194  return print(str) + println();
195  }
196 
201  size_t println(char c)
202  {
203  return print(c) + println();
204  }
205 
213  size_t println(unsigned char num, int base = DEC)
214  {
215  return print(num, base) + println();
216  }
217 
218  size_t println(unsigned int num, int base = DEC)
219  {
220  return print(num, base) + println();
221  }
222 
223  size_t println(unsigned long num, int base = DEC)
224  {
225  return print(num, base) + println();
226  }
227 
228  size_t println(const unsigned long long& num, int base = DEC)
229  {
230  return print(num, base) + println();
231  }
232 
233  size_t println(int num, int base = DEC)
234  {
235  return print(num, base) + println();
236  }
237 
238  size_t println(long num, int base = DEC)
239  {
240  return print(num, base) + println();
241  }
242 
243  size_t println(const long long& num, int base = DEC)
244  {
245  return print(num, base) + println();
246  }
254  size_t println(double num, int digits = 2)
255  {
256  return print(num, digits) + println();
257  }
258 
263  size_t println(const Printable& p)
264  {
265  return print(p) + println();
266  }
267 
272  size_t println(const String& s)
273  {
274  return print(s) + println();
275  }
276 
283  size_t printf(const char* fmt, ...) __attribute__((format(printf, 2, 3)));
284 
285 private:
286  int write_error = 0;
287  size_t printNumber(unsigned long num, uint8_t base);
288  size_t printNumber(const unsigned long long& num, uint8_t base);
289  size_t printFloat(double num, uint8_t digits);
290 
291 protected:
292  void setWriteError(int err = 1)
293  {
294  write_error = err;
295  }
296 };
297 
300 #endif // __cplusplus
size_t print(const String &s)
Prints a String to output stream.
Definition: Print.h:175
void clearWriteError()
Clears the last write error.
Definition: Print.h:53
void setWriteError(int err=1)
Definition: Print.h:292
size_t println(unsigned long num, int base=DEC)
Definition: Print.h:223
size_t print(const char str[])
Prints a c-string to output stream.
Definition: Print.h:106
size_t print(unsigned long num, int base=DEC)
Definition: Print.h:118
size_t println(const long long &num, int base=DEC)
Definition: Print.h:243
virtual size_t printTo(Print &p) const =0
size_t print(char c)
Prints a single character to output stream.
Definition: Print.h:97
const char * c_str() const
Get a constant (un-modifiable) pointer to String content.
Definition: WString.h:641
size_t println(unsigned char num, int base=DEC)
Definition: Print.h:213
#define str(s)
Definition: testrunner.h:124
size_t println(double num, int digits=2)
Print a floating-point number to output stream, appending newline.
Definition: Print.h:254
size_t println(unsigned int num, int base=DEC)
Definition: Print.h:218
size_t printf(const char *fmt,...) __attribute__((format(printf
Prints a formatted c-string to output stream.
size_t println(const Printable &p)
Prints a Printable object to output stream, appending newline.
Definition: Print.h:263
size_t println(char c)
Prints a single character to output stream, appending newline.
Definition: Print.h:201
size_t println()
Prints a newline to output stream.
Definition: Print.h:183
virtual ~Print()
Definition: Print.h:39
The String class.
Definition: WString.h:136
size_t write(const char *str)
Writes a c-string to output stream.
Definition: Print.h:68
size_t println(long num, int base=DEC)
Definition: Print.h:238
Provides formatted output to stream.
Definition: Print.h:36
size_t println(const String &s)
Prints a String to output stream, appending newline.
Definition: Print.h:272
size_t write(const char *buffer, size_t size)
Writes characters from a buffer to output stream.
Definition: Print.h:88
size_t length(void) const
Obtain the String length in characters, excluding NUL terminator.
Definition: WString.h:237
int getWriteError()
Gets last error.
Definition: Print.h:46
size_t print(int num, int base=DEC)
Definition: Print.h:146
Definition: Printable.h:42
size_t println(int num, int base=DEC)
Definition: Print.h:233
size_t print(double num, int digits=2)
Print a floating-point number to output stream.
Definition: Print.h:157
size_t print(const Printable &p)
Prints a Printable object to output stream.
Definition: Print.h:166
size_t println(const unsigned long long &num, int base=DEC)
Definition: Print.h:228
#define DEC
Definition: WConstants.h:66
virtual size_t write(uint8_t c)=0
Writes a single character to output stream.
size_t println(const char str[])
Prints a c-string to output stream, appending newline.
Definition: Print.h:192
size_t print(unsigned char num, int base=DEC)
Definition: Print.h:141
size_t print(const unsigned long long &num, int base=DEC)
Definition: Print.h:127
size_t print(unsigned int num, int base=DEC)
Definition: Print.h:136
struct __attribute__((packed)) Compression
A compression descriptor.
Definition: Compression.h:38