36
36
size_t Print::write (const uint8_t *buffer, size_t size)
37
37
{
38
38
size_t n = 0 ;
39
- while (size--) {
40
- if (write (*buffer++)) n++;
41
- else break ;
39
+
40
+ while (size--)
41
+ {
42
+ if (write (*buffer++))
43
+ n++;
44
+ else
45
+ break ;
42
46
}
47
+
43
48
return n;
44
49
}
45
50
@@ -80,46 +85,64 @@ size_t Print::print(unsigned int n, int base)
80
85
81
86
size_t Print::print (long n, int base)
82
87
{
83
- if (base == 0 ) {
88
+ if (base == 0 )
89
+ {
84
90
return write (n);
85
- } else if (base == 10 ) {
86
- if (n < 0 ) {
91
+ }
92
+ else if (base == 10 )
93
+ {
94
+ if (n < 0 )
95
+ {
87
96
int t = print (' -' );
88
97
n = -n;
89
98
return printNumber (n, 10 ) + t;
90
99
}
100
+
91
101
return printNumber (n, 10 );
92
- } else {
102
+ }
103
+ else
104
+ {
93
105
return printNumber (n, base);
94
106
}
95
107
}
96
108
97
109
size_t Print::print (unsigned long n, int base)
98
110
{
99
- if (base == 0 ) return write (n);
100
- else return printNumber (n, base);
111
+ if (base == 0 )
112
+ return write (n);
113
+ else
114
+ return printNumber (n, base);
101
115
}
102
116
103
117
size_t Print::print (long long n, int base)
104
118
{
105
- if (base == 0 ) {
119
+ if (base == 0 )
120
+ {
106
121
return write (n);
107
- } else if (base == 10 ) {
108
- if (n < 0 ) {
122
+ }
123
+ else if (base == 10 )
124
+ {
125
+ if (n < 0 )
126
+ {
109
127
int t = print (' -' );
110
128
n = -n;
111
129
return printULLNumber (n, 10 ) + t;
112
130
}
131
+
113
132
return printULLNumber (n, 10 );
114
- } else {
133
+ }
134
+ else
135
+ {
115
136
return printULLNumber (n, base);
116
137
}
117
138
}
118
139
119
140
size_t Print::print (unsigned long long n, int base)
120
141
{
121
- if (base == 0 ) return write (n);
122
- else return printULLNumber (n, base);
142
+ if (base == 0 )
143
+ return write (n);
144
+ else
145
+ return printULLNumber (n, base);
123
146
}
124
147
125
148
size_t Print::print (double n, int digits)
@@ -253,38 +276,40 @@ size_t Print::printNumber(unsigned long n, uint8_t base)
253
276
*str = ' \0 ' ;
254
277
255
278
// prevent crash if called with base == 1
256
- if (base < 2 ) base = 10 ;
279
+ if (base < 2 )
280
+ base = 10 ;
257
281
258
- do {
282
+ do
283
+ {
259
284
char c = n % base;
260
285
n /= base;
261
286
262
287
*--str = c < 10 ? c + ' 0' : c + ' A' - 10 ;
263
- } while (n);
288
+ } while (n);
264
289
265
290
return write (str);
266
291
}
267
292
268
293
// REFERENCE IMPLEMENTATION FOR ULL
269
294
// size_t Print::printULLNumber(unsigned long long n, uint8_t base)
270
295
// {
271
- // // if limited to base 10 and 16 the bufsize can be smaller
272
- // char buf[65];
273
- // char *str = &buf[64];
296
+ // // if limited to base 10 and 16 the bufsize can be smaller
297
+ // char buf[65];
298
+ // char *str = &buf[64];
274
299
275
- // *str = '\0';
300
+ // *str = '\0';
276
301
277
- // // prevent crash if called with base == 1
278
- // if (base < 2) base = 10;
302
+ // // prevent crash if called with base == 1
303
+ // if (base < 2) base = 10;
279
304
280
- // do {
281
- // unsigned long long t = n / base;
282
- // char c = n - t * base; // faster than c = n%base;
283
- // n = t;
284
- // *--str = c < 10 ? c + '0' : c + 'A' - 10;
285
- // } while(n);
305
+ // do {
306
+ // unsigned long long t = n / base;
307
+ // char c = n - t * base; // faster than c = n%base;
308
+ // n = t;
309
+ // *--str = c < 10 ? c + '0' : c + 'A' - 10;
310
+ // } while(n);
286
311
287
- // return write(str);
312
+ // return write(str);
288
313
// }
289
314
290
315
// FAST IMPLEMENTATION FOR ULL
@@ -296,11 +321,13 @@ size_t Print::printULLNumber(unsigned long long n64, uint8_t base)
296
321
uint8_t innerLoops = 0 ;
297
322
298
323
// prevent crash if called with base == 1
299
- if (base < 2 ) base = 10 ;
324
+ if (base < 2 )
325
+ base = 10 ;
300
326
301
327
// process chunks that fit in "16 bit math".
302
328
uint16_t top = 0xFFFF / base;
303
329
uint16_t th16 = 1 ;
330
+
304
331
while (th16 < top)
305
332
{
306
333
th16 *= base;
@@ -311,31 +338,33 @@ size_t Print::printULLNumber(unsigned long long n64, uint8_t base)
311
338
{
312
339
// 64 bit math part
313
340
uint64_t q = n64 / th16;
314
- uint16_t r = n64 - q* th16;
341
+ uint16_t r = n64 - q * th16;
315
342
n64 = q;
316
343
317
344
// 16 bit math loop to do remainder. (note buffer is filled reverse)
318
- for (uint8_t j= 0 ; j < innerLoops; j++)
345
+ for (uint8_t j = 0 ; j < innerLoops; j++)
319
346
{
320
- uint16_t qq = r/ base;
321
- buf[i++] = r - qq* base;
347
+ uint16_t qq = r / base;
348
+ buf[i++] = r - qq * base;
322
349
r = qq;
323
350
}
324
351
}
325
352
326
353
uint16_t n16 = n64;
354
+
327
355
while (n16 > 0 )
328
356
{
329
- uint16_t qq = n16/ base;
330
- buf[i++] = n16 - qq* base;
357
+ uint16_t qq = n16 / base;
358
+ buf[i++] = n16 - qq * base;
331
359
n16 = qq;
332
360
}
333
361
334
362
size_t bytes = i;
363
+
335
364
for (; i > 0 ; i--)
336
365
write ((char ) (buf[i - 1 ] < 10 ?
337
- ' 0' + buf[i - 1 ] :
338
- ' A' + buf[i - 1 ] - 10 ));
366
+ ' 0' + buf[i - 1 ] :
367
+ ' A' + buf[i - 1 ] - 10 ));
339
368
340
369
return bytes;
341
370
}
@@ -347,21 +376,29 @@ size_t Print::printFloat(double number, int digits)
347
376
348
377
size_t n = 0 ;
349
378
350
- if (isnan (number)) return print (" nan" );
351
- if (isinf (number)) return print (" inf" );
352
- if (number > 4294967040.0 ) return print (" ovf" ); // constant determined empirically
353
- if (number <-4294967040.0 ) return print (" ovf" ); // constant determined empirically
379
+ if (isnan (number))
380
+ return print (" nan" );
381
+
382
+ if (isinf (number))
383
+ return print (" inf" );
384
+
385
+ if (number > 4294967040.0 )
386
+ return print (" ovf" ); // constant determined empirically
387
+
388
+ if (number < -4294967040.0 )
389
+ return print (" ovf" ); // constant determined empirically
354
390
355
391
// Handle negative numbers
356
392
if (number < 0.0 )
357
393
{
358
- n += print (' -' );
359
- number = -number;
394
+ n += print (' -' );
395
+ number = -number;
360
396
}
361
397
362
398
// Round correctly so that print(1.999, 2) prints as "2.00"
363
399
double rounding = 0.5 ;
364
- for (uint8_t i=0 ; i<digits; ++i)
400
+
401
+ for (uint8_t i = 0 ; i < digits; ++i)
365
402
rounding /= 10.0 ;
366
403
367
404
number += rounding;
@@ -372,7 +409,8 @@ size_t Print::printFloat(double number, int digits)
372
409
n += print (int_part);
373
410
374
411
// Print the decimal point, but only if there are digits beyond
375
- if (digits > 0 ) {
412
+ if (digits > 0 )
413
+ {
376
414
n += print (" ." );
377
415
}
378
416
@@ -390,31 +428,39 @@ size_t Print::printFloat(double number, int digits)
390
428
391
429
size_t Print::printBuffer (uint8_t const buffer[], int len, char delim, int byteline)
392
430
{
393
- if (buffer == NULL || len == 0 ) return 0 ;
431
+ if (buffer == NULL || len == 0 )
432
+ return 0 ;
394
433
395
- for (int i= 0 ; i< len; i++)
434
+ for (int i = 0 ; i < len; i++)
396
435
{
397
- if ( i != 0 ) print (delim);
398
- if ( byteline && (i%byteline == 0 ) ) println ();
436
+ if ( i != 0 )
437
+ print (delim);
438
+
439
+ if ( byteline && (i % byteline == 0 ) )
440
+ println ();
399
441
400
442
this ->printf (" %02X" , buffer[i]);
401
443
}
402
444
403
- return (len* 3 - 1 );
445
+ return (len * 3 - 1 );
404
446
}
405
447
406
448
size_t Print::printBufferReverse (uint8_t const buffer[], int len, char delim, int byteline)
407
449
{
408
- if (buffer == NULL || len == 0 ) return 0 ;
450
+ if (buffer == NULL || len == 0 )
451
+ return 0 ;
409
452
410
- for (int i= 0 ; i< len; i++)
453
+ for (int i = 0 ; i < len; i++)
411
454
{
412
- if (i != 0 ) print (delim);
413
- if ( byteline && (i%byteline == 0 ) ) println ();
455
+ if (i != 0 )
456
+ print (delim);
457
+
458
+ if ( byteline && (i % byteline == 0 ) )
459
+ println ();
414
460
415
- this ->printf (" %02X" , buffer[len- 1 - i]);
461
+ this ->printf (" %02X" , buffer[len - 1 - i]);
416
462
}
417
463
418
- return (len* 3 - 1 );
464
+ return (len * 3 - 1 );
419
465
}
420
466
0 commit comments