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  Print() {}
40  virtual ~Print() {}
41 
45  int getWriteError() { return write_error; }
46 
50 
51  // pure virtual - must be implemented by derived class
52  //virtual void write(uint8_t) = 0;
53 
54  // virtual - can be redefined (polymorphic class)
55  //virtual void write(const char *str);
56  //virtual void write(const uint8_t *buffer, size_t size);
57 
62  virtual size_t write(uint8_t) = 0;
63 
68  size_t write(const char *str) {
69  if (str == NULL) return 0;
70  return write((const uint8_t *)str, strlen(str));
71  }
72 
78  virtual size_t write(const uint8_t *buffer, size_t size);
79 
85  size_t write(const char *buffer, size_t size) {
86  return write((const uint8_t *)buffer, size);
87  }
88 
93  size_t print(char c)
94  {
95  return write(c);
96  }
97 
102  size_t print(const char str[])
103  {
104  return write(str);
105  }
106 
114  size_t print(unsigned long num, int base = DEC)
115  {
116  if (base == 0) {
117  return write(num);
118  } else {
119  return printNumber(num, base);
120  }
121  }
122 
123  size_t print(const unsigned long long& num, int base = DEC)
124  {
125  return printNumber(num, base);
126  }
127 
128  size_t print(long, int base = DEC);
129 
130  size_t print(const long long&, int base = DEC);
131 
132  size_t print(unsigned int num, int base = DEC)
133  {
134  return print((unsigned long)num, base);
135  }
136 
137  size_t print(unsigned char num, int base = DEC)
138  {
139  return print((unsigned long)num, base);
140  }
141 
142  size_t print(int num, int base = DEC)
143  {
144  return print((long)num, base);
145  }
153  size_t print(double num, int digits = 2)
154  {
155  return printFloat(num, digits);
156  }
157 
162  size_t print(const Printable &p)
163  {
164  return p.printTo(*this);
165  }
166 
171  size_t print(const String &s)
172  {
173  return write(s.c_str(), s.length());
174  }
175 
179  size_t println()
180  {
181  return print("\r\n");
182  }
183 
188  size_t println(const char str[])
189  {
190  return print(str) + println();
191  }
192 
197  size_t println(char c)
198  {
199  return print(c) + println();
200  }
201 
209  size_t println(unsigned char num, int base = DEC)
210  {
211  return print(num, base) + println();
212  }
213 
214  size_t println(unsigned int num, int base = DEC)
215  {
216  return print(num, base) + println();
217  }
218 
219  size_t println(unsigned long num, int base = DEC)
220  {
221  return print(num, base) + println();
222  }
223 
224  size_t println(const unsigned long long& num, int base = DEC)
225  {
226  return print(num, base) + println();
227  }
228 
229  size_t println(int num, int base = DEC)
230  {
231  return print(num, base) + println();
232  }
233 
234  size_t println(long num, int base = DEC)
235  {
236  return print(num, base) + println();
237  }
238 
239  size_t println(const long long& num, int base = DEC)
240  {
241  return print(num, base) + println();
242  }
250  size_t println(double num, int digits = 2)
251  {
252  return print(num, digits) + println();
253  }
254 
259  size_t println(const Printable &p)
260  {
261  return print(p) + println();
262  }
263 
268  size_t println(const String &s)
269  {
270  return print(s) + println();
271  }
272 
279  size_t printf(const char *fmt, ...) __attribute__ ((format (printf, 2, 3)));
280 
281  private:
282  int write_error = 0;
283  size_t printNumber(unsigned long num, uint8_t base);
284  size_t printNumber(const unsigned long long& num, uint8_t base);
285  size_t printFloat(double num, uint8_t digits);
286  protected:
287  void setWriteError(int err = 1) { write_error = err; }
288 };
289 
292 #endif // __cplusplus
size_t print(const String &s)
Prints a String to output stream.
Definition: Print.h:171
void clearWriteError()
Clears the last write error.
Definition: Print.h:49
void setWriteError(int err=1)
Definition: Print.h:287
size_t println(unsigned long num, int base=DEC)
Definition: Print.h:219
size_t print(const char str[])
Prints a c-string to output stream.
Definition: Print.h:102
size_t print(unsigned long num, int base=DEC)
Definition: Print.h:114
size_t println(const long long &num, int base=DEC)
Definition: Print.h:239
virtual size_t printTo(Print &p) const =0
size_t print(char c)
Prints a single character to output stream.
Definition: Print.h:93
const char * c_str() const
Get a constant (un-modifiable) pointer to String content.
Definition: WString.h:600
virtual size_t write(uint8_t)=0
Writes a single character to output stream.
size_t println(unsigned char num, int base=DEC)
Definition: Print.h:209
#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:250
size_t println(unsigned int num, int base=DEC)
Definition: Print.h:214
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:259
size_t println(char c)
Prints a single character to output stream, appending newline.
Definition: Print.h:197
size_t println()
Prints a newline to output stream.
Definition: Print.h:179
virtual ~Print()
Definition: Print.h:40
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:234
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:268
size_t write(const char *buffer, size_t size)
Writes characters from a buffer to output stream.
Definition: Print.h:85
size_t length(void) const
Obtain the String length in characters, excluding NUL terminator.
Definition: WString.h:228
int getWriteError()
Gets last error.
Definition: Print.h:45
size_t print(int num, int base=DEC)
Definition: Print.h:142
Definition: Printable.h:42
Print()
Definition: Print.h:39
size_t println(int num, int base=DEC)
Definition: Print.h:229
size_t print(double num, int digits=2)
Print a floating-point number to output stream.
Definition: Print.h:153
size_t print(const Printable &p)
Prints a Printable object to output stream.
Definition: Print.h:162
size_t println(const unsigned long long &num, int base=DEC)
Definition: Print.h:224
#define DEC
Definition: WConstants.h:65
size_t println(const char str[])
Prints a c-string to output stream, appending newline.
Definition: Print.h:188
size_t print(unsigned char num, int base=DEC)
Definition: Print.h:137
size_t print(const unsigned long long &num, int base=DEC)
Definition: Print.h:123
size_t print(unsigned int num, int base=DEC)
Definition: Print.h:132