@@ -178,7 +178,7 @@ size_t Print::print(unsigned long long n, int base) {
178
178
}
179
179
180
180
size_t Print::print (double n, int digits) {
181
- return printFloat (n, digits);
181
+ return printNumber (n, digits);
182
182
}
183
183
184
184
size_t Print::print (const Printable& x) {
@@ -243,29 +243,14 @@ size_t Print::println(const Printable& x) {
243
243
244
244
// Private Methods /////////////////////////////////////////////////////////////
245
245
246
- size_t Print::printNumber (unsigned long n, uint8_t base) {
247
- char buf[8 * sizeof (n) + 1 ]; // Assumes 8-bit chars plus zero byte.
248
- char *str = &buf[sizeof (buf) - 1 ];
249
-
250
- *str = ' \0 ' ;
251
-
252
- // prevent crash if called with base == 1
253
- if (base < 2 ) {
254
- base = 10 ;
255
- }
256
-
257
- do {
258
- auto m = n;
259
- n /= base;
260
- char c = m - base * n;
261
-
262
- *--str = c < 10 ? c + ' 0' : c + ' A' - 10 ;
263
- } while (n);
264
-
265
- return write (str);
266
- }
246
+ template <typename T, typename ... P> inline size_t Print::_println (T v, P... args)
247
+ {
248
+ size_t n = print (v, args...);
249
+ n += println ();
250
+ return n;
251
+ };
267
252
268
- size_t Print::printNumber (unsigned long long n, uint8_t base) {
253
+ template < typename T> size_t Print::printNumber (T n, uint8_t base) {
269
254
char buf[8 * sizeof (n) + 1 ]; // Assumes 8-bit chars plus zero byte.
270
255
char * str = &buf[sizeof (buf) - 1 ];
271
256
@@ -287,7 +272,7 @@ size_t Print::printNumber(unsigned long long n, uint8_t base) {
287
272
return write (str);
288
273
}
289
274
290
- size_t Print::printFloat (double number, uint8_t digits) {
275
+ template <> size_t Print::printNumber (double number, uint8_t digits) {
291
276
char buf[40 ];
292
277
return write (dtostrf (number, 0 , digits, buf));
293
278
}
0 commit comments