Skip to content

Commit 092240a

Browse files
committed
Merge branch 'master' of https://github.com/mykeul/Arduino into mykeul-master
# Conflicts: # cores/esp8266/Print.cpp
2 parents 60b18bf + 34ce078 commit 092240a

File tree

2 files changed

+25
-9
lines changed

2 files changed

+25
-9
lines changed

cores/esp8266/Print.cpp

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -105,15 +105,21 @@ size_t Print::print(long n, int base) {
105105
} else if(base == 10) {
106106
if(n < 0) {
107107
int t = print('-');
108-
n = -n;
109-
return printNumber(n, 10) + t;
108+
return printNumber<unsigned long>(-n, 10) + t;
110109
}
111-
return printNumber(n, 10);
110+
return printNumber<unsigned long>(n, 10);
112111
} else {
113-
return printNumber(n, base);
112+
return printNumber<unsigned long>(n, base);
114113
}
115114
}
116115

116+
size_t Print::print(uint64_t n, int base) {
117+
if(base == 0)
118+
return write(n);
119+
else
120+
return printNumber(n, base);
121+
}
122+
117123
size_t Print::print(unsigned long n, int base) {
118124
if(base == 0)
119125
return write(n);
@@ -181,6 +187,12 @@ size_t Print::println(long num, int base) {
181187
return n;
182188
}
183189

190+
size_t Print::println(uint64_t num, int base) {
191+
size_t n = print(num, base);
192+
n += println();
193+
return n;
194+
}
195+
184196
size_t Print::println(unsigned long num, int base) {
185197
size_t n = print(num, base);
186198
n += println();
@@ -201,9 +213,10 @@ size_t Print::println(const Printable& x) {
201213

202214
// Private Methods /////////////////////////////////////////////////////////////
203215

204-
size_t Print::printNumber(unsigned long n, uint8_t base) {
205-
char buf[8 * sizeof(long) + 1]; // Assumes 8-bit chars plus zero byte.
206-
char *str = &buf[sizeof(buf) - 1];
216+
template<typename UINT_T>
217+
size_t Print::printNumber(UINT_T n, uint8_t base) {
218+
char buf[8 * sizeof(n) + 1]; // Assumes 8-bit chars plus zero byte.
219+
char *str = buf + sizeof(buf) - 1;
207220

208221
*str = '\0';
209222

@@ -212,7 +225,7 @@ size_t Print::printNumber(unsigned long n, uint8_t base) {
212225
base = 10;
213226

214227
do {
215-
unsigned long m = n;
228+
UINT_T m = n;
216229
n /= base;
217230
char c = m - base * n;
218231
*--str = c < 10 ? c + '0' : c + 'A' - 10;

cores/esp8266/Print.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@
3434
class Print {
3535
private:
3636
int write_error;
37-
size_t printNumber(unsigned long, uint8_t);
37+
template<typename UINT_T>
38+
size_t printNumber(UINT_T, uint8_t);
3839
size_t printFloat(double, uint8_t);
3940
protected:
4041
void setWriteError(int err = 1) {
@@ -72,6 +73,7 @@ class Print {
7273
size_t print(int, int = DEC);
7374
size_t print(unsigned int, int = DEC);
7475
size_t print(long, int = DEC);
76+
size_t print(uint64_t, int = DEC);
7577
size_t print(unsigned long, int = DEC);
7678
size_t print(double, int = 2);
7779
size_t print(const Printable&);
@@ -84,6 +86,7 @@ class Print {
8486
size_t println(int, int = DEC);
8587
size_t println(unsigned int, int = DEC);
8688
size_t println(long, int = DEC);
89+
size_t println(uint64_t, int = DEC);
8790
size_t println(unsigned long, int = DEC);
8891
size_t println(double, int = 2);
8992
size_t println(const Printable&);

0 commit comments

Comments
 (0)