|
34 | 34 | #endif
|
35 | 35 | #define BIN 2
|
36 | 36 |
|
| 37 | +#define _always_inline __attribute__ ((__always_inline__)) // undefined at end |
| 38 | + |
37 | 39 | class Print
|
38 | 40 | {
|
39 | 41 | private:
|
@@ -68,24 +70,26 @@ class Print
|
68 | 70 | size_t print(unsigned long, int = DEC);
|
69 | 71 | size_t print(double, int = 2);
|
70 | 72 |
|
71 |
| - size_t print(const char str[]) { return write(str); } |
72 |
| - size_t print(const char c) { return write(c); } |
73 |
| - size_t print(const Printable &x) { return x.printTo(*this); } |
| 73 | + _always_inline size_t print(const char str[]) { return write(str); } |
| 74 | + _always_inline size_t print(const char c) { return write(c); } |
| 75 | + _always_inline size_t print(const Printable &x) { return x.printTo(*this); } |
74 | 76 |
|
75 |
| - size_t print( signed char n, int f = DEC) { return print(( signed long) n, f); } |
76 |
| - size_t print( signed short n, int f = DEC) { return print(( signed long) n, f); } |
77 |
| - size_t print( signed int n, int f = DEC) { return print(( signed long) n, f); } |
78 |
| - size_t print(unsigned char n, int f = DEC) { return print((unsigned long) n, f); } |
79 |
| - size_t print(unsigned short n, int f = DEC) { return print((unsigned long) n, f); } |
80 |
| - size_t print(unsigned int n, int f = DEC) { return print((unsigned long) n, f); } |
81 |
| - size_t print( float n, int f = 2 ) { return print(( double ) n, f); } |
| 77 | + _always_inline size_t print( signed char n, int f = DEC) { return print(( signed long) n, f); } |
| 78 | + _always_inline size_t print( signed short n, int f = DEC) { return print(( signed long) n, f); } |
| 79 | + _always_inline size_t print( signed int n, int f = DEC) { return print(( signed long) n, f); } |
| 80 | + _always_inline size_t print(unsigned char n, int f = DEC) { return print((unsigned long) n, f); } |
| 81 | + _always_inline size_t print(unsigned short n, int f = DEC) { return print((unsigned long) n, f); } |
| 82 | + _always_inline size_t print(unsigned int n, int f = DEC) { return print((unsigned long) n, f); } |
| 83 | + _always_inline size_t print( float n, int f = 2 ) { return print(( double ) n, f); } |
82 | 84 |
|
83 | 85 | size_t println(void);
|
84 | 86 |
|
85 | 87 | virtual void flush() { /* Empty implementation for backward compatibility */ }
|
86 | 88 |
|
87 |
| - template<typename T> size_t println(const T &arg) { size_t t = print(arg); return t + println(); } |
88 |
| - template<typename T> size_t println(const T &n, int f) { size_t t = print(n, f); return t + println(); } |
| 89 | + template<typename T> _always_inline size_t println(const T &arg) { size_t t = print(arg); return t + println(); } |
| 90 | + template<typename T> _always_inline size_t println(const T &n, int f) { size_t t = print(n, f); return t + println(); } |
89 | 91 | };
|
90 | 92 |
|
| 93 | +#undef _always_inline |
| 94 | + |
91 | 95 | #endif
|
0 commit comments