1
1
/*
2
- Print.cpp - Base class that provides print() and println()
2
+ Print.cpp - Base class that provides print(), println()
3
+ and printlf()
3
4
Copyright (c) 2008 David A. Mellis. All right reserved.
4
-
5
+
5
6
This library is free software; you can redistribute it and/or
6
7
modify it under the terms of the GNU Lesser General Public
7
8
License as published by the Free Software Foundation; either
8
9
version 2.1 of the License, or (at your option) any later version.
9
-
10
+
10
11
This library is distributed in the hope that it will be useful,
11
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
14
Lesser General Public License for more details.
14
-
15
+
15
16
You should have received a copy of the GNU Lesser General Public
16
17
License along with this library; if not, write to the Free Software
17
18
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
-
19
+
19
20
Modified 23 November 2006 by David A. Mellis
20
21
Modified 03 August 2015 by Chuck Todd
21
22
*/
@@ -198,6 +199,93 @@ size_t Print::println(const Printable& x)
198
199
return n;
199
200
}
200
201
202
+
203
+ // printlf
204
+
205
+ size_t Print::printlf (void )
206
+ {
207
+ return write (" \n " );
208
+ }
209
+
210
+ size_t Print::printlf (const __FlashStringHelper *ifsh)
211
+ {
212
+ size_t n = print (ifsh);
213
+ n += printlf ();
214
+ return n;
215
+ }
216
+
217
+
218
+ size_t Print::printlf (const String &s)
219
+ {
220
+ size_t n = print (s);
221
+ n += printlf ();
222
+ return n;
223
+ }
224
+
225
+ size_t Print::printlf (const char c[])
226
+ {
227
+ size_t n = print (c);
228
+ n += printlf ();
229
+ return n;
230
+ }
231
+
232
+ size_t Print::printlf (char c)
233
+ {
234
+ size_t n = print (c);
235
+ n += printlf ();
236
+ return n;
237
+ }
238
+
239
+ size_t Print::printlf (unsigned char b, int base)
240
+ {
241
+ size_t n = print (b, base);
242
+ n += printlf ();
243
+ return n;
244
+ }
245
+
246
+ size_t Print::printlf (int num, int base)
247
+ {
248
+ size_t n = print (num, base);
249
+ n += printlf ();
250
+ return n;
251
+ }
252
+
253
+ size_t Print::printlf (unsigned int num, int base)
254
+ {
255
+ size_t n = print (num, base);
256
+ n += printlf ();
257
+ return n;
258
+ }
259
+
260
+ size_t Print::printlf (long num, int base)
261
+ {
262
+ size_t n = print (num, base);
263
+ n += printlf ();
264
+ return n;
265
+ }
266
+
267
+ size_t Print::printlf (unsigned long num, int base)
268
+ {
269
+ size_t n = print (num, base);
270
+ n += printlf ();
271
+ return n;
272
+ }
273
+
274
+ size_t Print::printlf (double num, int digits)
275
+ {
276
+ size_t n = print (num, digits);
277
+ n += printlf ();
278
+ return n;
279
+ }
280
+
281
+ size_t Print::printlf (const Printable& x)
282
+ {
283
+ size_t n = print (x);
284
+ n += printlf ();
285
+ return n;
286
+ }
287
+
288
+
201
289
// Private Methods /////////////////////////////////////////////////////////////
202
290
203
291
size_t Print::printNumber (unsigned long n, uint8_t base)
@@ -220,15 +308,15 @@ size_t Print::printNumber(unsigned long n, uint8_t base)
220
308
return write (str);
221
309
}
222
310
223
- size_t Print::printFloat (double number, uint8_t digits)
224
- {
311
+ size_t Print::printFloat (double number, uint8_t digits)
312
+ {
225
313
size_t n = 0 ;
226
-
314
+
227
315
if (isnan (number)) return print (" nan" );
228
316
if (isinf (number)) return print (" inf" );
229
317
if (number > 4294967040.0 ) return print (" ovf" ); // constant determined empirically
230
318
if (number <-4294967040.0 ) return print (" ovf" ); // constant determined empirically
231
-
319
+
232
320
// Handle negative numbers
233
321
if (number < 0.0 )
234
322
{
@@ -240,7 +328,7 @@ size_t Print::printFloat(double number, uint8_t digits)
240
328
double rounding = 0.5 ;
241
329
for (uint8_t i=0 ; i<digits; ++i)
242
330
rounding /= 10.0 ;
243
-
331
+
244
332
number += rounding;
245
333
246
334
// Extract the integer part of the number and print it
@@ -250,7 +338,7 @@ size_t Print::printFloat(double number, uint8_t digits)
250
338
251
339
// Print the decimal point, but only if there are digits beyond
252
340
if (digits > 0 ) {
253
- n += print (' .' );
341
+ n += print (' .' );
254
342
}
255
343
256
344
// Extract digits from the remainder one at a time
@@ -259,8 +347,8 @@ size_t Print::printFloat(double number, uint8_t digits)
259
347
remainder *= 10.0 ;
260
348
unsigned int toPrint = (unsigned int )(remainder);
261
349
n += print (toPrint);
262
- remainder -= toPrint;
263
- }
264
-
350
+ remainder -= toPrint;
351
+ }
352
+
265
353
return n;
266
354
}
0 commit comments