Skip to content

Commit ceee9e9

Browse files
Add print(signed char | short | float) explicitly
Add explicit print() support for signed char, unsigned/signed short, and float. Also, add `signed` keyword explicitly to int and long (even if unnecessary). Notice that `char` and `signed char` are considered different types, even if their ranges are the same (ditto for `unsigned char` in SAM). Both AVR and SAM seem to define [u]int8_t explicitly as [un]signed char and not as char, so printing them will print them as numbers as expected. (This does not apply to `int` and `signed int`; those are the same type.)
1 parent d6058b9 commit ceee9e9

File tree

4 files changed

+14
-6
lines changed

4 files changed

+14
-6
lines changed

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ size_t Print::print(const String &s)
5959
return write(s.c_str(), s.length());
6060
}
6161

62-
size_t Print::print(long n, int base)
62+
size_t Print::print(signed long n, int base)
6363
{
6464
if (base == 0) {
6565
return write(n);

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

+6-2
Original file line numberDiff line numberDiff line change
@@ -57,17 +57,21 @@ class Print
5757

5858
size_t print(const __FlashStringHelper *);
5959
size_t print(const String &);
60-
size_t print(long, int = DEC);
60+
size_t print( signed long, int = DEC);
6161
size_t print(unsigned long, int = DEC);
6262
size_t print(double, int = 2);
6363

6464
size_t print(const char str[]) { return write(str); }
6565
size_t print(const char c) { return write(c); }
6666
size_t print(const Printable &x) { return x.printTo(*this); }
6767

68+
size_t print( signed char n, int f = DEC) { return print(( signed long) n, f); }
69+
size_t print( signed short n, int f = DEC) { return print(( signed long) n, f); }
70+
size_t print( signed int n, int f = DEC) { return print(( signed long) n, f); }
6871
size_t print(unsigned char n, int f = DEC) { return print((unsigned long) n, f); }
69-
size_t print( int n, int f = DEC) { return print(( long) n, f); }
72+
size_t print(unsigned short n, int f = DEC) { return print((unsigned long) n, f); }
7073
size_t print(unsigned int n, int f = DEC) { return print((unsigned long) n, f); }
74+
size_t print( float n, int f = 2 ) { return print(( double ) n, f); }
7175

7276
size_t println(void);
7377

hardware/arduino/sam/cores/arduino/Print.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ size_t Print::print(const String &s)
5151
return write(s.c_str(), s.length());
5252
}
5353

54-
size_t Print::print(long n, int base)
54+
size_t Print::print(signed long n, int base)
5555
{
5656
if (base == 0) {
5757
return write(n);

hardware/arduino/sam/cores/arduino/Print.h

+6-2
Original file line numberDiff line numberDiff line change
@@ -57,17 +57,21 @@ class Print
5757

5858
size_t print(const __FlashStringHelper *);
5959
size_t print(const String &);
60-
size_t print(long, int = DEC);
60+
size_t print( signed long, int = DEC);
6161
size_t print(unsigned long, int = DEC);
6262
size_t print(double, int = 2);
6363

6464
size_t print(const char str[]) { return write(str); }
6565
size_t print(const char c) { return write(c); }
6666
size_t print(const Printable &x) { return x.printTo(*this); }
6767

68+
size_t print( signed char n, int f = DEC) { return print(( signed long) n, f); }
69+
size_t print( signed short n, int f = DEC) { return print(( signed long) n, f); }
70+
size_t print( signed int n, int f = DEC) { return print(( signed long) n, f); }
6871
size_t print(unsigned char n, int f = DEC) { return print((unsigned long) n, f); }
69-
size_t print( int n, int f = DEC) { return print(( long) n, f); }
72+
size_t print(unsigned short n, int f = DEC) { return print((unsigned long) n, f); }
7073
size_t print(unsigned int n, int f = DEC) { return print((unsigned long) n, f); }
74+
size_t print( float n, int f = 2 ) { return print(( double ) n, f); }
7175

7276
size_t println(void);
7377

0 commit comments

Comments
 (0)