1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-06-17 22:23:10 +03:00

Improved portability of String class (maniacbug)

This commit is contained in:
Cristian Maglie
2013-12-31 22:30:55 +01:00
parent e2d373ed61
commit 673847c8b6
3 changed files with 21 additions and 21 deletions

View File

@ -13,6 +13,7 @@ ARDUINO 1.5.6 BETA
* sam: Fixed regression in analogRead() (fails to read multiple channels) (Mark Tillotson) * sam: Fixed regression in analogRead() (fails to read multiple channels) (Mark Tillotson)
* sam: Optimized delayMicroseconds() (Rob Tillaart) #1121 * sam: Optimized delayMicroseconds() (Rob Tillaart) #1121
* Optimized Print::print(String&) method, now uses internal string buffer to perform block write * Optimized Print::print(String&) method, now uses internal string buffer to perform block write
* Improved portability of String class (maniacbug) #695
ARDUINO 1.5.5 BETA 2013.11.28 ARDUINO 1.5.5 BETA 2013.11.28

View File

@ -21,7 +21,6 @@
#include "WString.h" #include "WString.h"
/*********************************************/ /*********************************************/
/* Constructors */ /* Constructors */
/*********************************************/ /*********************************************/
@ -69,7 +68,7 @@ String::String(char c)
String::String(unsigned char value, unsigned char base) String::String(unsigned char value, unsigned char base)
{ {
init(); init();
char buf[9]; char buf[1 + 8 * sizeof(unsigned char)];
utoa(value, buf, base); utoa(value, buf, base);
*this = buf; *this = buf;
} }
@ -77,7 +76,7 @@ String::String(unsigned char value, unsigned char base)
String::String(int value, unsigned char base) String::String(int value, unsigned char base)
{ {
init(); init();
char buf[18]; char buf[2 + 8 * sizeof(int)];
itoa(value, buf, base); itoa(value, buf, base);
*this = buf; *this = buf;
} }
@ -85,7 +84,7 @@ String::String(int value, unsigned char base)
String::String(unsigned int value, unsigned char base) String::String(unsigned int value, unsigned char base)
{ {
init(); init();
char buf[17]; char buf[1 + 8 * sizeof(unsigned int)];
utoa(value, buf, base); utoa(value, buf, base);
*this = buf; *this = buf;
} }
@ -93,7 +92,7 @@ String::String(unsigned int value, unsigned char base)
String::String(long value, unsigned char base) String::String(long value, unsigned char base)
{ {
init(); init();
char buf[34]; char buf[2 + 8 * sizeof(long)];
ltoa(value, buf, base); ltoa(value, buf, base);
*this = buf; *this = buf;
} }
@ -101,7 +100,7 @@ String::String(long value, unsigned char base)
String::String(unsigned long value, unsigned char base) String::String(unsigned long value, unsigned char base)
{ {
init(); init();
char buf[33]; char buf[1 + 8 * sizeof(unsigned long)];
ultoa(value, buf, base); ultoa(value, buf, base);
*this = buf; *this = buf;
} }
@ -288,35 +287,35 @@ unsigned char String::concat(char c)
unsigned char String::concat(unsigned char num) unsigned char String::concat(unsigned char num)
{ {
char buf[4]; char buf[1 + 3 * sizeof(unsigned char)];
itoa(num, buf, 10); itoa(num, buf, 10);
return concat(buf, strlen(buf)); return concat(buf, strlen(buf));
} }
unsigned char String::concat(int num) unsigned char String::concat(int num)
{ {
char buf[12]; char buf[2 + 3 * sizeof(int)];
itoa(num, buf, 10); itoa(num, buf, 10);
return concat(buf, strlen(buf)); return concat(buf, strlen(buf));
} }
unsigned char String::concat(unsigned int num) unsigned char String::concat(unsigned int num)
{ {
char buf[11]; char buf[1 + 3 * sizeof(unsigned int)];
utoa(num, buf, 10); utoa(num, buf, 10);
return concat(buf, strlen(buf)); return concat(buf, strlen(buf));
} }
unsigned char String::concat(long num) unsigned char String::concat(long num)
{ {
char buf[12]; char buf[2 + 3 * sizeof(long)];
ltoa(num, buf, 10); ltoa(num, buf, 10);
return concat(buf, strlen(buf)); return concat(buf, strlen(buf));
} }
unsigned char String::concat(unsigned long num) unsigned char String::concat(unsigned long num)
{ {
char buf[11]; char buf[1 + 3 * sizeof(unsigned long)];
ultoa(num, buf, 10); ultoa(num, buf, 10);
return concat(buf, strlen(buf)); return concat(buf, strlen(buf));
} }

View File

@ -70,7 +70,7 @@ String::String(char c)
String::String(unsigned char value, unsigned char base) String::String(unsigned char value, unsigned char base)
{ {
init(); init();
char buf[9]; char buf[1 + 8 * sizeof(unsigned char)];
utoa(value, buf, base); utoa(value, buf, base);
*this = buf; *this = buf;
} }
@ -78,7 +78,7 @@ String::String(unsigned char value, unsigned char base)
String::String(int value, unsigned char base) String::String(int value, unsigned char base)
{ {
init(); init();
char buf[18]; char buf[2 + 8 * sizeof(int)];
itoa(value, buf, base); itoa(value, buf, base);
*this = buf; *this = buf;
} }
@ -86,7 +86,7 @@ String::String(int value, unsigned char base)
String::String(unsigned int value, unsigned char base) String::String(unsigned int value, unsigned char base)
{ {
init(); init();
char buf[17]; char buf[1 + 8 * sizeof(unsigned int)];
utoa(value, buf, base); utoa(value, buf, base);
*this = buf; *this = buf;
} }
@ -94,7 +94,7 @@ String::String(unsigned int value, unsigned char base)
String::String(long value, unsigned char base) String::String(long value, unsigned char base)
{ {
init(); init();
char buf[34]; char buf[2 + 8 * sizeof(long)];
ltoa(value, buf, base); ltoa(value, buf, base);
*this = buf; *this = buf;
} }
@ -102,7 +102,7 @@ String::String(long value, unsigned char base)
String::String(unsigned long value, unsigned char base) String::String(unsigned long value, unsigned char base)
{ {
init(); init();
char buf[33]; char buf[1 + 8 * sizeof(unsigned long)];
ultoa(value, buf, base); ultoa(value, buf, base);
*this = buf; *this = buf;
} }
@ -289,35 +289,35 @@ unsigned char String::concat(char c)
unsigned char String::concat(unsigned char num) unsigned char String::concat(unsigned char num)
{ {
char buf[4]; char buf[1 + 3 * sizeof(unsigned char)];
itoa(num, buf, 10); itoa(num, buf, 10);
return concat(buf, strlen(buf)); return concat(buf, strlen(buf));
} }
unsigned char String::concat(int num) unsigned char String::concat(int num)
{ {
char buf[12]; char buf[2 + 3 * sizeof(int)];
itoa(num, buf, 10); itoa(num, buf, 10);
return concat(buf, strlen(buf)); return concat(buf, strlen(buf));
} }
unsigned char String::concat(unsigned int num) unsigned char String::concat(unsigned int num)
{ {
char buf[11]; char buf[1 + 3 * sizeof(unsigned int)];
utoa(num, buf, 10); utoa(num, buf, 10);
return concat(buf, strlen(buf)); return concat(buf, strlen(buf));
} }
unsigned char String::concat(long num) unsigned char String::concat(long num)
{ {
char buf[12]; char buf[2 + 3 * sizeof(long)];
ltoa(num, buf, 10); ltoa(num, buf, 10);
return concat(buf, strlen(buf)); return concat(buf, strlen(buf));
} }
unsigned char String::concat(unsigned long num) unsigned char String::concat(unsigned long num)
{ {
char buf[11]; char buf[1 + 3 * sizeof(unsigned long)];
ultoa(num, buf, 10); ultoa(num, buf, 10);
return concat(buf, strlen(buf)); return concat(buf, strlen(buf));
} }