Skip to content

Commit 69b3460

Browse files
committed
printlf: prinln with only \n and not \r\n
1 parent 6b4a3a6 commit 69b3460

File tree

2 files changed

+117
-16
lines changed

2 files changed

+117
-16
lines changed

hardware/arduino/avr/cores/arduino/Print.cpp

Lines changed: 102 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
/*
2-
Print.cpp - Base class that provides print() and println()
2+
Print.cpp - Base class that provides print(), println()
3+
and printlf()
34
Copyright (c) 2008 David A. Mellis. All right reserved.
4-
5+
56
This library is free software; you can redistribute it and/or
67
modify it under the terms of the GNU Lesser General Public
78
License as published by the Free Software Foundation; either
89
version 2.1 of the License, or (at your option) any later version.
9-
10+
1011
This library is distributed in the hope that it will be useful,
1112
but WITHOUT ANY WARRANTY; without even the implied warranty of
1213
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1314
Lesser General Public License for more details.
14-
15+
1516
You should have received a copy of the GNU Lesser General Public
1617
License along with this library; if not, write to the Free Software
1718
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18-
19+
1920
Modified 23 November 2006 by David A. Mellis
2021
Modified 03 August 2015 by Chuck Todd
2122
*/
@@ -198,6 +199,93 @@ size_t Print::println(const Printable& x)
198199
return n;
199200
}
200201

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+
201289
// Private Methods /////////////////////////////////////////////////////////////
202290

203291
size_t Print::printNumber(unsigned long n, uint8_t base)
@@ -220,15 +308,15 @@ size_t Print::printNumber(unsigned long n, uint8_t base)
220308
return write(str);
221309
}
222310

223-
size_t Print::printFloat(double number, uint8_t digits)
224-
{
311+
size_t Print::printFloat(double number, uint8_t digits)
312+
{
225313
size_t n = 0;
226-
314+
227315
if (isnan(number)) return print("nan");
228316
if (isinf(number)) return print("inf");
229317
if (number > 4294967040.0) return print ("ovf"); // constant determined empirically
230318
if (number <-4294967040.0) return print ("ovf"); // constant determined empirically
231-
319+
232320
// Handle negative numbers
233321
if (number < 0.0)
234322
{
@@ -240,7 +328,7 @@ size_t Print::printFloat(double number, uint8_t digits)
240328
double rounding = 0.5;
241329
for (uint8_t i=0; i<digits; ++i)
242330
rounding /= 10.0;
243-
331+
244332
number += rounding;
245333

246334
// Extract the integer part of the number and print it
@@ -250,7 +338,7 @@ size_t Print::printFloat(double number, uint8_t digits)
250338

251339
// Print the decimal point, but only if there are digits beyond
252340
if (digits > 0) {
253-
n += print('.');
341+
n += print('.');
254342
}
255343

256344
// Extract digits from the remainder one at a time
@@ -259,8 +347,8 @@ size_t Print::printFloat(double number, uint8_t digits)
259347
remainder *= 10.0;
260348
unsigned int toPrint = (unsigned int)(remainder);
261349
n += print(toPrint);
262-
remainder -= toPrint;
263-
}
264-
350+
remainder -= toPrint;
351+
}
352+
265353
return n;
266354
}

hardware/arduino/avr/cores/arduino/Print.h

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ class Print
4444
void setWriteError(int err = 1) { write_error = err; }
4545
public:
4646
Print() : write_error(0) {}
47-
47+
4848
int getWriteError() { return write_error; }
4949
void clearWriteError() { setWriteError(0); }
50-
50+
5151
virtual size_t write(uint8_t) = 0;
5252
size_t write(const char *str) {
5353
if (str == NULL) return 0;
@@ -87,6 +87,19 @@ class Print
8787
size_t println(const Printable&);
8888
size_t println(void);
8989

90+
size_t printlf(const __FlashStringHelper *);
91+
size_t printlf(const String &s);
92+
size_t printlf(const char[]);
93+
size_t printlf(char);
94+
size_t printlf(unsigned char, int = DEC);
95+
size_t printlf(int, int = DEC);
96+
size_t printlf(unsigned int, int = DEC);
97+
size_t printlf(long, int = DEC);
98+
size_t printlf(unsigned long, int = DEC);
99+
size_t printlf(double, int = 2);
100+
size_t printlf(const Printable&);
101+
size_t printlf(void);
102+
90103
virtual void flush() { /* Empty implementation for backward compatibility */ }
91104
};
92105

0 commit comments

Comments
 (0)