30
30
// Public Methods //////////////////////////////////////////////////////////////
31
31
32
32
/* default implementation: may be overridden */
33
- ssize_t Print::write (const char *str)
33
+ size_t Print::write (const char *str)
34
34
{
35
- ssize_t n = 0 ;
35
+ size_t n = 0 ;
36
36
while (*str) {
37
- if (write (*str++) <= 0 ) break ;
38
- n++;
37
+ n += write (*str++);
39
38
}
40
39
return n;
41
40
}
42
41
43
42
/* default implementation: may be overridden */
44
- ssize_t Print::write (const uint8_t *buffer, size_t size)
43
+ size_t Print::write (const uint8_t *buffer, size_t size)
45
44
{
46
- ssize_t n = 0 ;
45
+ size_t n = 0 ;
47
46
while (size--) {
48
- if (write (*buffer++) <= 0 ) break ;
49
- n++;
47
+ n += write (*buffer++);
50
48
}
51
49
return n;
52
50
}
53
51
54
- ssize_t Print::print (const __FlashStringHelper *ifsh)
52
+ size_t Print::print (const __FlashStringHelper *ifsh)
55
53
{
56
54
const prog_char *p = (const prog_char *)ifsh;
57
- ssize_t n = 0 ;
55
+ size_t n = 0 ;
58
56
while (1 ) {
59
57
unsigned char c = pgm_read_byte (p++);
60
58
if (c == 0 ) break ;
61
- if (write (c) <= 0 ) break ;
62
- n++;
59
+ n += write (c);
63
60
}
64
61
return n;
65
62
}
66
63
67
- ssize_t Print::print (const String &s)
64
+ size_t Print::print (const String &s)
68
65
{
69
- ssize_t n = 0 ;
66
+ size_t n = 0 ;
70
67
for (int i = 0 ; i < s.length (); i++) {
71
- if (write (s[i]) < 0 ) break ;
72
- n++;
68
+ n += write (s[i]);
73
69
}
74
70
return n;
75
71
}
76
72
77
- ssize_t Print::print (const char str[])
73
+ size_t Print::print (const char str[])
78
74
{
79
75
return write (str);
80
76
}
81
77
82
- ssize_t Print::print (char c)
78
+ size_t Print::print (char c)
83
79
{
84
80
return write (c);
85
81
}
86
82
87
- ssize_t Print::print (unsigned char b, int base)
83
+ size_t Print::print (unsigned char b, int base)
88
84
{
89
85
return print ((unsigned long ) b, base);
90
86
}
91
87
92
- ssize_t Print::print (int n, int base)
88
+ size_t Print::print (int n, int base)
93
89
{
94
90
return print ((long ) n, base);
95
91
}
96
92
97
- ssize_t Print::print (unsigned int n, int base)
93
+ size_t Print::print (unsigned int n, int base)
98
94
{
99
95
return print ((unsigned long ) n, base);
100
96
}
101
97
102
- ssize_t Print::print (long n, int base)
98
+ size_t Print::print (long n, int base)
103
99
{
104
100
if (base == 0 ) {
105
101
return write (n);
106
102
} else if (base == 10 ) {
107
103
if (n < 0 ) {
108
104
int t = print (' -' );
109
- if (t <= 0 ) return t;
110
105
n = -n;
111
- return printNumber (n, 10 ) + 1 ;
106
+ return printNumber (n, 10 ) + t ;
112
107
}
113
108
return printNumber (n, 10 );
114
109
} else {
115
110
return printNumber (n, base);
116
111
}
117
112
}
118
113
119
- ssize_t Print::print (unsigned long n, int base)
114
+ size_t Print::print (unsigned long n, int base)
120
115
{
121
116
if (base == 0 ) return write (n);
122
117
else return printNumber (n, base);
123
118
}
124
119
125
- ssize_t Print::print (double n, int digits)
120
+ size_t Print::print (double n, int digits)
126
121
{
127
122
return printFloat (n, digits);
128
123
}
129
124
130
- ssize_t Print::println (const __FlashStringHelper *ifsh)
125
+ size_t Print::println (const __FlashStringHelper *ifsh)
131
126
{
132
- ssize_t n = print (ifsh);
133
- if (n >= 0 ) n += println ();
127
+ size_t n = print (ifsh);
128
+ n += println ();
134
129
return n;
135
130
}
136
131
137
- ssize_t Print::print (const Printable& x)
132
+ size_t Print::print (const Printable& x)
138
133
{
139
134
return x.printTo (*this );
140
135
}
141
136
142
- ssize_t Print::println (void )
137
+ size_t Print::println (void )
143
138
{
144
- ssize_t t = print (' \r ' );
145
- if (t <= 0 ) return t;
146
- if (print (' \n ' ) <= 0 ) return 1 ;
147
- return 2 ;
139
+ size_t n = print (' \r ' );
140
+ n += print (' \n ' );
141
+ return n;
148
142
}
149
143
150
- ssize_t Print::println (const String &s)
144
+ size_t Print::println (const String &s)
151
145
{
152
- ssize_t n = print (s);
153
- if (n >= 0 ) n += println ();
146
+ size_t n = print (s);
147
+ n += println ();
154
148
return n;
155
149
}
156
150
157
- ssize_t Print::println (const char c[])
151
+ size_t Print::println (const char c[])
158
152
{
159
- ssize_t n = print (c);
160
- if (n >= 0 ) n += println ();
153
+ size_t n = print (c);
154
+ n += println ();
161
155
return n;
162
156
}
163
157
164
- ssize_t Print::println (char c)
158
+ size_t Print::println (char c)
165
159
{
166
- ssize_t n = print (c);
167
- if (n > 0 ) n += println ();
160
+ size_t n = print (c);
161
+ n += println ();
168
162
return n;
169
163
}
170
164
171
- ssize_t Print::println (unsigned char b, int base)
165
+ size_t Print::println (unsigned char b, int base)
172
166
{
173
- ssize_t n = print (b, base);
174
- if (n >= 0 ) n += println ();
167
+ size_t n = print (b, base);
168
+ n += println ();
175
169
return n;
176
170
}
177
171
178
- ssize_t Print::println (int num, int base)
172
+ size_t Print::println (int num, int base)
179
173
{
180
- ssize_t n = print (num, base);
181
- if (n >= 0 ) n += println ();
174
+ size_t n = print (num, base);
175
+ n += println ();
182
176
return n;
183
177
}
184
178
185
- ssize_t Print::println (unsigned int num, int base)
179
+ size_t Print::println (unsigned int num, int base)
186
180
{
187
- ssize_t n = print (num, base);
188
- if (n >= 0 ) n += println ();
181
+ size_t n = print (num, base);
182
+ n += println ();
189
183
return n;
190
184
}
191
185
192
- ssize_t Print::println (long num, int base)
186
+ size_t Print::println (long num, int base)
193
187
{
194
- ssize_t n = print (num, base);
195
- if (n >= 0 ) n += println ();
188
+ size_t n = print (num, base);
189
+ n += println ();
196
190
return n;
197
191
}
198
192
199
- ssize_t Print::println (unsigned long num, int base)
193
+ size_t Print::println (unsigned long num, int base)
200
194
{
201
- ssize_t n = print (num, base);
202
- if (n >= 0 ) n += println ();
195
+ size_t n = print (num, base);
196
+ n += println ();
203
197
return n;
204
198
}
205
199
206
- ssize_t Print::println (double num, int digits)
200
+ size_t Print::println (double num, int digits)
207
201
{
208
- ssize_t n = print (num, digits);
209
- if (n >= 0 ) n += println ();
202
+ size_t n = print (num, digits);
203
+ n += println ();
210
204
return n;
211
205
}
212
206
213
- ssize_t Print::println (const Printable& x)
207
+ size_t Print::println (const Printable& x)
214
208
{
215
- ssize_t n = print (x);
216
- if (n >= 0 ) n += println ();
209
+ size_t n = print (x);
210
+ n += println ();
217
211
return n;
218
212
}
219
213
220
214
// Private Methods /////////////////////////////////////////////////////////////
221
215
222
- ssize_t Print::printNumber (unsigned long n, uint8_t base) {
216
+ size_t Print::printNumber (unsigned long n, uint8_t base) {
223
217
char buf[8 * sizeof (long ) + 1 ]; // Assumes 8-bit chars plus zero byte.
224
218
char *str = &buf[sizeof (buf) - 1 ];
225
219
@@ -238,14 +232,14 @@ ssize_t Print::printNumber(unsigned long n, uint8_t base) {
238
232
return write (str);
239
233
}
240
234
241
- ssize_t Print::printFloat (double number, uint8_t digits)
235
+ size_t Print::printFloat (double number, uint8_t digits)
242
236
{
243
- ssize_t n = 0 , t ;
237
+ size_t n = 0 ;
244
238
245
239
// Handle negative numbers
246
240
if (number < 0.0 )
247
241
{
248
- if ((n = print (' -' )) <= 0 ) return n ;
242
+ n + = print (' -' );
249
243
number = -number;
250
244
}
251
245
@@ -259,25 +253,19 @@ ssize_t Print::printFloat(double number, uint8_t digits)
259
253
// Extract the integer part of the number and print it
260
254
unsigned long int_part = (unsigned long )number;
261
255
double remainder = number - (double )int_part;
262
- if ((t = print (int_part)) < 0 ) return n;
263
-
264
- n += t;
256
+ n += print (int_part);
265
257
266
258
// Print the decimal point, but only if there are digits beyond
267
259
if (digits > 0 ) {
268
- t = print (" ." );
269
- if (t <= 0 ) return n;
270
- n += t;
260
+ n += print (" ." );
271
261
}
272
262
273
263
// Extract digits from the remainder one at a time
274
264
while (digits-- > 0 )
275
265
{
276
266
remainder *= 10.0 ;
277
267
int toPrint = int (remainder );
278
- t = print (toPrint);
279
- if (t <= 0 ) return n;
280
- n += t;
268
+ n += print (toPrint);
281
269
remainder -= toPrint;
282
270
}
283
271
0 commit comments