3030// Public Methods //////////////////////////////////////////////////////////////
3131
3232/* default implementation: may be overridden */
33- ssize_t Print::write (const char *str)
33+ size_t Print::write (const char *str)
3434{
35- ssize_t n = 0 ;
35+ size_t n = 0 ;
3636 while (*str) {
37- if (write (*str++) <= 0 ) break ;
38- n++;
37+ n += write (*str++);
3938 }
4039 return n;
4140}
4241
4342/* 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)
4544{
46- ssize_t n = 0 ;
45+ size_t n = 0 ;
4746 while (size--) {
48- if (write (*buffer++) <= 0 ) break ;
49- n++;
47+ n += write (*buffer++);
5048 }
5149 return n;
5250}
5351
54- ssize_t Print::print (const __FlashStringHelper *ifsh)
52+ size_t Print::print (const __FlashStringHelper *ifsh)
5553{
5654 const prog_char *p = (const prog_char *)ifsh;
57- ssize_t n = 0 ;
55+ size_t n = 0 ;
5856 while (1 ) {
5957 unsigned char c = pgm_read_byte (p++);
6058 if (c == 0 ) break ;
61- if (write (c) <= 0 ) break ;
62- n++;
59+ n += write (c);
6360 }
6461 return n;
6562}
6663
67- ssize_t Print::print (const String &s)
64+ size_t Print::print (const String &s)
6865{
69- ssize_t n = 0 ;
66+ size_t n = 0 ;
7067 for (int i = 0 ; i < s.length (); i++) {
71- if (write (s[i]) < 0 ) break ;
72- n++;
68+ n += write (s[i]);
7369 }
7470 return n;
7571}
7672
77- ssize_t Print::print (const char str[])
73+ size_t Print::print (const char str[])
7874{
7975 return write (str);
8076}
8177
82- ssize_t Print::print (char c)
78+ size_t Print::print (char c)
8379{
8480 return write (c);
8581}
8682
87- ssize_t Print::print (unsigned char b, int base)
83+ size_t Print::print (unsigned char b, int base)
8884{
8985 return print ((unsigned long ) b, base);
9086}
9187
92- ssize_t Print::print (int n, int base)
88+ size_t Print::print (int n, int base)
9389{
9490 return print ((long ) n, base);
9591}
9692
97- ssize_t Print::print (unsigned int n, int base)
93+ size_t Print::print (unsigned int n, int base)
9894{
9995 return print ((unsigned long ) n, base);
10096}
10197
102- ssize_t Print::print (long n, int base)
98+ size_t Print::print (long n, int base)
10399{
104100 if (base == 0 ) {
105101 return write (n);
106102 } else if (base == 10 ) {
107103 if (n < 0 ) {
108104 int t = print (' -' );
109- if (t <= 0 ) return t;
110105 n = -n;
111- return printNumber (n, 10 ) + 1 ;
106+ return printNumber (n, 10 ) + t ;
112107 }
113108 return printNumber (n, 10 );
114109 } else {
115110 return printNumber (n, base);
116111 }
117112}
118113
119- ssize_t Print::print (unsigned long n, int base)
114+ size_t Print::print (unsigned long n, int base)
120115{
121116 if (base == 0 ) return write (n);
122117 else return printNumber (n, base);
123118}
124119
125- ssize_t Print::print (double n, int digits)
120+ size_t Print::print (double n, int digits)
126121{
127122 return printFloat (n, digits);
128123}
129124
130- ssize_t Print::println (const __FlashStringHelper *ifsh)
125+ size_t Print::println (const __FlashStringHelper *ifsh)
131126{
132- ssize_t n = print (ifsh);
133- if (n >= 0 ) n += println ();
127+ size_t n = print (ifsh);
128+ n += println ();
134129 return n;
135130}
136131
137- ssize_t Print::print (const Printable& x)
132+ size_t Print::print (const Printable& x)
138133{
139134 return x.printTo (*this );
140135}
141136
142- ssize_t Print::println (void )
137+ size_t Print::println (void )
143138{
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;
148142}
149143
150- ssize_t Print::println (const String &s)
144+ size_t Print::println (const String &s)
151145{
152- ssize_t n = print (s);
153- if (n >= 0 ) n += println ();
146+ size_t n = print (s);
147+ n += println ();
154148 return n;
155149}
156150
157- ssize_t Print::println (const char c[])
151+ size_t Print::println (const char c[])
158152{
159- ssize_t n = print (c);
160- if (n >= 0 ) n += println ();
153+ size_t n = print (c);
154+ n += println ();
161155 return n;
162156}
163157
164- ssize_t Print::println (char c)
158+ size_t Print::println (char c)
165159{
166- ssize_t n = print (c);
167- if (n > 0 ) n += println ();
160+ size_t n = print (c);
161+ n += println ();
168162 return n;
169163}
170164
171- ssize_t Print::println (unsigned char b, int base)
165+ size_t Print::println (unsigned char b, int base)
172166{
173- ssize_t n = print (b, base);
174- if (n >= 0 ) n += println ();
167+ size_t n = print (b, base);
168+ n += println ();
175169 return n;
176170}
177171
178- ssize_t Print::println (int num, int base)
172+ size_t Print::println (int num, int base)
179173{
180- ssize_t n = print (num, base);
181- if (n >= 0 ) n += println ();
174+ size_t n = print (num, base);
175+ n += println ();
182176 return n;
183177}
184178
185- ssize_t Print::println (unsigned int num, int base)
179+ size_t Print::println (unsigned int num, int base)
186180{
187- ssize_t n = print (num, base);
188- if (n >= 0 ) n += println ();
181+ size_t n = print (num, base);
182+ n += println ();
189183 return n;
190184}
191185
192- ssize_t Print::println (long num, int base)
186+ size_t Print::println (long num, int base)
193187{
194- ssize_t n = print (num, base);
195- if (n >= 0 ) n += println ();
188+ size_t n = print (num, base);
189+ n += println ();
196190 return n;
197191}
198192
199- ssize_t Print::println (unsigned long num, int base)
193+ size_t Print::println (unsigned long num, int base)
200194{
201- ssize_t n = print (num, base);
202- if (n >= 0 ) n += println ();
195+ size_t n = print (num, base);
196+ n += println ();
203197 return n;
204198}
205199
206- ssize_t Print::println (double num, int digits)
200+ size_t Print::println (double num, int digits)
207201{
208- ssize_t n = print (num, digits);
209- if (n >= 0 ) n += println ();
202+ size_t n = print (num, digits);
203+ n += println ();
210204 return n;
211205}
212206
213- ssize_t Print::println (const Printable& x)
207+ size_t Print::println (const Printable& x)
214208{
215- ssize_t n = print (x);
216- if (n >= 0 ) n += println ();
209+ size_t n = print (x);
210+ n += println ();
217211 return n;
218212}
219213
220214// Private Methods /////////////////////////////////////////////////////////////
221215
222- ssize_t Print::printNumber (unsigned long n, uint8_t base) {
216+ size_t Print::printNumber (unsigned long n, uint8_t base) {
223217 char buf[8 * sizeof (long ) + 1 ]; // Assumes 8-bit chars plus zero byte.
224218 char *str = &buf[sizeof (buf) - 1 ];
225219
@@ -238,14 +232,14 @@ ssize_t Print::printNumber(unsigned long n, uint8_t base) {
238232 return write (str);
239233}
240234
241- ssize_t Print::printFloat (double number, uint8_t digits)
235+ size_t Print::printFloat (double number, uint8_t digits)
242236{
243- ssize_t n = 0 , t ;
237+ size_t n = 0 ;
244238
245239 // Handle negative numbers
246240 if (number < 0.0 )
247241 {
248- if ((n = print (' -' )) <= 0 ) return n ;
242+ n + = print (' -' );
249243 number = -number;
250244 }
251245
@@ -259,25 +253,19 @@ ssize_t Print::printFloat(double number, uint8_t digits)
259253 // Extract the integer part of the number and print it
260254 unsigned long int_part = (unsigned long )number;
261255 double remainder = number - (double )int_part;
262- if ((t = print (int_part)) < 0 ) return n;
263-
264- n += t;
256+ n += print (int_part);
265257
266258 // Print the decimal point, but only if there are digits beyond
267259 if (digits > 0 ) {
268- t = print (" ." );
269- if (t <= 0 ) return n;
270- n += t;
260+ n += print (" ." );
271261 }
272262
273263 // Extract digits from the remainder one at a time
274264 while (digits-- > 0 )
275265 {
276266 remainder *= 10.0 ;
277267 int toPrint = int (remainder);
278- t = print (toPrint);
279- if (t <= 0 ) return n;
280- n += t;
268+ n += print (toPrint);
281269 remainder -= toPrint;
282270 }
283271
0 commit comments