@@ -176,26 +176,25 @@ void String::invalidate(void) {
176
176
init ();
177
177
}
178
178
179
- unsigned char String::reserve (unsigned int size) {
179
+ bool String::reserve (unsigned int size) {
180
180
if (buffer () && capacity () >= size)
181
- return 1 ;
181
+ return true ;
182
182
if (changeBuffer (size)) {
183
183
if (len () == 0 )
184
184
wbuffer ()[0 ] = 0 ;
185
- return 1 ;
185
+ return true ;
186
186
}
187
- return 0 ;
187
+ return false ;
188
188
}
189
189
190
- unsigned char String::changeBuffer (unsigned int maxStrLen) {
190
+ bool String::changeBuffer (unsigned int maxStrLen) {
191
191
// Can we use SSO here to avoid allocation?
192
192
if (maxStrLen < sizeof (sso.buff ) - 1 ) {
193
193
if (isSSO () || !buffer ()) {
194
194
// Already using SSO, nothing to do
195
- uint16_t oldLen = len ();
195
+ uint16_t oldLen = len ();
196
196
setSSO (true );
197
197
setLen (oldLen);
198
- return 1 ;
199
198
} else { // if bufptr && !isSSO()
200
199
// Using bufptr, need to shrink into sso.buff
201
200
char temp[sizeof (sso.buff )];
@@ -205,8 +204,8 @@ unsigned char String::changeBuffer(unsigned int maxStrLen) {
205
204
setSSO (true );
206
205
memcpy (wbuffer (), temp, maxStrLen);
207
206
setLen (oldLen);
208
- return 1 ;
209
207
}
208
+ return true ;
210
209
}
211
210
// Fallthrough to normal allocator
212
211
size_t newSize = (maxStrLen + 16 ) & (~0xf );
@@ -230,9 +229,9 @@ unsigned char String::changeBuffer(unsigned int maxStrLen) {
230
229
setCapacity (newSize - 1 );
231
230
setBuffer (newbuffer);
232
231
setLen (oldLen); // Needed in case of SSO where len() never existed
233
- return 1 ;
232
+ return true ;
234
233
}
235
- return 0 ;
234
+ return false ;
236
235
}
237
236
238
237
// /*********************************************/
@@ -338,114 +337,117 @@ String & String::operator =(const __FlashStringHelper *pstr) {
338
337
// /* concat */
339
338
// /*********************************************/
340
339
341
- unsigned char String::concat (const String &s) {
340
+ bool String::concat (const String &s) {
342
341
// Special case if we're concatting ourself (s += s;) since we may end up
343
342
// realloc'ing the buffer and moving s.buffer in the method called
344
343
if (&s == this ) {
345
344
unsigned int newlen = 2 * len ();
346
345
if (!s.buffer ())
347
- return 0 ;
346
+ return false ;
348
347
if (s.len () == 0 )
349
- return 1 ;
348
+ return true ;
350
349
if (!reserve (newlen))
351
- return 0 ;
350
+ return false ;
352
351
memmove (wbuffer () + len (), buffer (), len ());
353
352
setLen (newlen);
354
353
wbuffer ()[len ()] = 0 ;
355
- return 1 ;
354
+ return true ;
356
355
} else {
357
356
return concat (s.buffer (), s.len ());
358
357
}
359
358
}
360
359
361
- unsigned char String::concat (const char *cstr, unsigned int length) {
360
+ bool String::concat (const char *cstr, unsigned int length) {
362
361
unsigned int newlen = len () + length;
363
362
if (!cstr)
364
- return 0 ;
363
+ return false ;
365
364
if (length == 0 )
366
- return 1 ;
365
+ return true ;
367
366
if (!reserve (newlen))
368
- return 0 ;
367
+ return false ;
369
368
if (cstr >= wbuffer () && cstr < wbuffer () + len ())
370
369
// compatible with SSO in ram #6155 (case "x += x.c_str()")
371
370
memmove (wbuffer () + len (), cstr, length + 1 );
372
371
else
373
372
// compatible with source in flash #6367
374
373
memcpy_P (wbuffer () + len (), cstr, length + 1 );
375
374
setLen (newlen);
376
- return 1 ;
375
+ return true ;
377
376
}
378
377
379
- unsigned char String::concat (const char *cstr) {
378
+ bool String::concat (const char *cstr) {
380
379
if (!cstr)
381
- return 0 ;
380
+ return false ;
382
381
return concat (cstr, strlen (cstr));
383
382
}
384
383
385
- unsigned char String::concat (char c) {
384
+ bool String::concat (char c) {
386
385
char buf[] = { c, ' \0 ' };
387
386
return concat (buf, 1 );
388
387
}
389
388
390
- unsigned char String::concat (unsigned char num) {
389
+ bool String::concat (unsigned char num) {
391
390
char buf[1 + 3 * sizeof (unsigned char )];
392
391
return concat (buf, sprintf (buf, " %d" , num));
393
392
}
394
393
395
- unsigned char String::concat (int num) {
394
+ bool String::concat (int num) {
396
395
char buf[2 + 3 * sizeof (int )];
397
396
return concat (buf, sprintf (buf, " %d" , num));
398
397
}
399
398
400
- unsigned char String::concat (unsigned int num) {
399
+ bool String::concat (unsigned int num) {
401
400
char buf[1 + 3 * sizeof (unsigned int )];
402
401
utoa (num, buf, 10 );
403
402
return concat (buf, strlen (buf));
404
403
}
405
404
406
- unsigned char String::concat (long num) {
405
+ bool String::concat (long num) {
407
406
char buf[2 + 3 * sizeof (long )];
408
407
return concat (buf, sprintf (buf, " %ld" , num));
409
408
}
410
409
411
- unsigned char String::concat (unsigned long num) {
410
+ bool String::concat (unsigned long num) {
412
411
char buf[1 + 3 * sizeof (unsigned long )];
413
412
ultoa (num, buf, 10 );
414
413
return concat (buf, strlen (buf));
415
414
}
416
415
417
- unsigned char String::concat (float num) {
416
+ bool String::concat (float num) {
418
417
char buf[20 ];
419
418
char * string = dtostrf (num, 4 , 2 , buf);
420
419
return concat (string, strlen (string));
421
420
}
422
421
423
- unsigned char String::concat (double num) {
422
+ bool String::concat (double num) {
424
423
char buf[20 ];
425
424
char * string = dtostrf (num, 4 , 2 , buf);
426
425
return concat (string, strlen (string));
427
426
}
428
427
429
- unsigned char String::concat (long long num) {
428
+ bool String::concat (long long num) {
430
429
char buf[2 + 3 * sizeof (long long )];
431
430
return concat (buf, sprintf (buf, " %lld" , num)); // NOT SURE - NewLib Nano ... does it support %lld?
432
431
}
433
432
434
- unsigned char String::concat (unsigned long long num) {
433
+ bool String::concat (unsigned long long num) {
435
434
char buf[1 + 3 * sizeof (unsigned long long )];
436
435
ulltoa (num, buf, 10 );
437
436
return concat (buf, strlen (buf));
438
437
}
439
438
440
- unsigned char String::concat (const __FlashStringHelper * str) {
441
- if (!str) return 0 ;
439
+ bool String::concat (const __FlashStringHelper * str) {
440
+ if (!str)
441
+ return false ;
442
442
int length = strlen_P ((PGM_P)str);
443
- if (length == 0 ) return 1 ;
443
+ if (length == 0 )
444
+ return true ;
444
445
unsigned int newlen = len () + length;
445
- if (!reserve (newlen)) return 0 ;
446
+ if (!reserve (newlen))
447
+ return false ;
446
448
memcpy_P (wbuffer () + len (), (PGM_P)str, length + 1 );
447
449
setLen (newlen);
448
- return 1 ;
450
+ return true ;
449
451
}
450
452
451
453
/* ********************************************/
@@ -559,48 +561,48 @@ int String::compareTo(const String &s) const {
559
561
return strcmp (buffer (), s.buffer ());
560
562
}
561
563
562
- unsigned char String::equals (const String &s2) const {
564
+ bool String::equals (const String &s2) const {
563
565
return (len () == s2.len () && compareTo (s2) == 0 );
564
566
}
565
567
566
- unsigned char String::equals (const char *cstr) const {
568
+ bool String::equals (const char *cstr) const {
567
569
if (len () == 0 )
568
570
return (cstr == NULL || *cstr == 0 );
569
571
if (cstr == NULL )
570
572
return buffer ()[0 ] == 0 ;
571
573
return strcmp (buffer (), cstr) == 0 ;
572
574
}
573
575
574
- unsigned char String::operator <(const String &rhs) const {
576
+ bool String::operator <(const String &rhs) const {
575
577
return compareTo (rhs) < 0 ;
576
578
}
577
579
578
- unsigned char String::operator >(const String &rhs) const {
580
+ bool String::operator >(const String &rhs) const {
579
581
return compareTo (rhs) > 0 ;
580
582
}
581
583
582
- unsigned char String::operator <=(const String &rhs) const {
584
+ bool String::operator <=(const String &rhs) const {
583
585
return compareTo (rhs) <= 0 ;
584
586
}
585
587
586
- unsigned char String::operator >=(const String &rhs) const {
588
+ bool String::operator >=(const String &rhs) const {
587
589
return compareTo (rhs) >= 0 ;
588
590
}
589
591
590
- unsigned char String::equalsIgnoreCase (const String &s2) const {
592
+ bool String::equalsIgnoreCase (const String &s2) const {
591
593
if (this == &s2)
592
- return 1 ;
594
+ return true ;
593
595
if (len () != s2.len ())
594
- return 0 ;
596
+ return false ;
595
597
if (len () == 0 )
596
- return 1 ;
598
+ return true ;
597
599
const char *p1 = buffer ();
598
600
const char *p2 = s2.buffer ();
599
601
while (*p1) {
600
602
if (tolower (*p1++) != tolower (*p2++))
601
- return 0 ;
603
+ return false ;
602
604
}
603
- return 1 ;
605
+ return true ;
604
606
}
605
607
606
608
unsigned char String::equalsConstantTime (const String &s2) const {
@@ -630,21 +632,21 @@ unsigned char String::equalsConstantTime(const String &s2) const {
630
632
return (equalcond & diffcond); // bitwise AND
631
633
}
632
634
633
- unsigned char String::startsWith (const String &s2) const {
635
+ bool String::startsWith (const String &s2) const {
634
636
if (len () < s2.len ())
635
- return 0 ;
637
+ return false ;
636
638
return startsWith (s2, 0 );
637
639
}
638
640
639
- unsigned char String::startsWith (const String &s2, unsigned int offset) const {
641
+ bool String::startsWith (const String &s2, unsigned int offset) const {
640
642
if (offset > (unsigned )(len () - s2.len ()) || !buffer () || !s2.buffer ())
641
- return 0 ;
643
+ return false ;
642
644
return strncmp (&buffer ()[offset], s2.buffer (), s2.len ()) == 0 ;
643
645
}
644
646
645
- unsigned char String::endsWith (const String &s2) const {
647
+ bool String::endsWith (const String &s2) const {
646
648
if (len () < s2.len () || !buffer () || !s2.buffer ())
647
- return 0 ;
649
+ return false ;
648
650
return strcmp (&buffer ()[len () - s2.len ()], s2.buffer ()) == 0 ;
649
651
}
650
652
0 commit comments