Qualia  0.2
Print.h
Go to the documentation of this file.
1 /*
2  Print.h - Base class that provides print() and println()
3  Copyright (c) 2008 David A. Mellis. All right reserved.
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Lesser General Public
7  License as published by the Free Software Foundation; either
8  version 2.1 of the License, or (at your option) any later version.
9 
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public
16  License along with this library; if not, write to the Free Software
17  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19 
20 #ifndef Print_Compat_h
21 #define Print_Compat_h
22 
23 #include <qualia/core/common.h>
24 
25 #if !is_arduino()
26 
27 #include <inttypes.h>
28 #include <stdio.h> // for size_t
29 
30 #include <qualia/compat/WString.h>
32 
33 #define DEC 10
34 #define HEX 16
35 #define OCT 8
36 #define BIN 2
37 
38 class String;
39 class __FlashStringHelper;
40 
41 class Print
42 {
43  private:
45  size_t printNumber(unsigned long, uint8_t);
46  size_t printFloat(double, uint8_t);
47  protected:
48  void setWriteError(int err = 1) { write_error = err; }
49  public:
50  Print() : write_error(0) {}
51 
52  int getWriteError() { return write_error; }
54 
55  virtual size_t write(uint8_t) = 0;
56  size_t write(const char *str) {
57  if (str == NULL) return 0;
58  return write((const uint8_t *)str, strlen(str));
59  }
60  virtual size_t write(const uint8_t *buffer, size_t size);
61 
62 #if is_avr()
63  size_t print(const __FlashStringHelper *);
64 #endif
65  size_t print(const String &);
66  size_t print(const char[]);
67  size_t print(char);
68  size_t print(unsigned char, int = DEC);
69  size_t print(int, int = DEC);
70  size_t print(unsigned int, int = DEC);
71  size_t print(long, int = DEC);
72  size_t print(unsigned long, int = DEC);
73  size_t print(double, int = 2);
74  size_t print(const Printable&);
75 
76  #if is_avr()
77  size_t println(const __FlashStringHelper *);
78 #endif
79  size_t println(const String &s);
80  size_t println(const char[]);
81  size_t println(char);
82  size_t println(unsigned char, int = DEC);
83  size_t println(int, int = DEC);
84  size_t println(unsigned int, int = DEC);
85  size_t println(long, int = DEC);
86  size_t println(unsigned long, int = DEC);
87  size_t println(double, int = 2);
88  size_t println(const Printable&);
89  size_t println(void);
90 };
91 
92 #endif // !is_arduino()
93 
94 #endif