@@ -65,15 +65,6 @@ const char16_t Char16String::_null = 0;
65
65
const char32_t String::_null = 0 ;
66
66
const char32_t String::_replacement_char = 0xfffd ;
67
67
68
- // strlen equivalent function for char32_t * arguments.
69
- _FORCE_INLINE_ size_t strlen (const char32_t *p_str) {
70
- const char32_t *ptr = p_str;
71
- while (*ptr != 0 ) {
72
- ++ptr;
73
- }
74
- return ptr - p_str;
75
- }
76
-
77
68
bool select_word (const String &p_s, int p_col, int &r_beg, int &r_end) {
78
69
const String &s = p_s;
79
70
int beg = CLAMP (p_col, 0 , s.length ());
@@ -313,80 +304,32 @@ Error String::parse_url(String &r_scheme, String &r_host, int &r_port, String &r
313
304
return OK;
314
305
}
315
306
316
- void String::copy_from (const char *p_cstr) {
317
- // copy Latin-1 encoded c-string directly
318
- if (!p_cstr) {
307
+ void String::copy_from (const StrRange<char > &p_cstr) {
308
+ if (p_cstr.len == 0 ) {
319
309
resize (0 );
320
310
return ;
321
311
}
322
312
323
- const size_t len = strlen (p_cstr);
313
+ resize (p_cstr. len + 1 ); // include 0
324
314
325
- if (len == 0 ) {
326
- resize (0 );
327
- return ;
328
- }
329
-
330
- resize (len + 1 ); // include 0
331
-
332
- const char *end = p_cstr + len;
315
+ const char *src = p_cstr.c_str ;
316
+ const char *end = src + p_cstr.len ;
333
317
char32_t *dst = ptrw ();
334
318
335
- for (; p_cstr < end; ++p_cstr , ++dst) {
319
+ for (; src < end; ++src , ++dst) {
336
320
// If char is int8_t, a set sign bit will be reinterpreted as 256 - val implicitly.
337
- *dst = static_cast <uint8_t >(*p_cstr );
321
+ *dst = static_cast <uint8_t >(*src );
338
322
}
339
323
*dst = 0 ;
340
324
}
341
325
342
- void String::copy_from (const char *p_cstr, const int p_clip_to) {
343
- // copy Latin-1 encoded c-string directly
344
- if (!p_cstr) {
345
- resize (0 );
346
- return ;
347
- }
348
-
349
- int len = 0 ;
350
- const char *ptr = p_cstr;
351
- while ((p_clip_to < 0 || len < p_clip_to) && *(ptr++) != 0 ) {
352
- len++;
353
- }
354
-
355
- if (len == 0 ) {
326
+ void String::copy_from (const StrRange<char32_t > &p_cstr) {
327
+ if (p_cstr.len == 0 ) {
356
328
resize (0 );
357
329
return ;
358
330
}
359
331
360
- resize (len + 1 ); // include 0
361
-
362
- const char *end = p_cstr + len;
363
- char32_t *dst = ptrw ();
364
-
365
- for (; p_cstr < end; ++p_cstr, ++dst) {
366
- // If char is int8_t, a set sign bit will be reinterpreted as 256 - val implicitly.
367
- *dst = static_cast <uint8_t >(*p_cstr);
368
- }
369
- *dst = 0 ;
370
- }
371
-
372
- void String::copy_from (const wchar_t *p_cstr) {
373
- #ifdef WINDOWS_ENABLED
374
- // wchar_t is 16-bit, parse as UTF-16
375
- parse_utf16 ((const char16_t *)p_cstr);
376
- #else
377
- // wchar_t is 32-bit, copy directly
378
- copy_from ((const char32_t *)p_cstr);
379
- #endif
380
- }
381
-
382
- void String::copy_from (const wchar_t *p_cstr, const int p_clip_to) {
383
- #ifdef WINDOWS_ENABLED
384
- // wchar_t is 16-bit, parse as UTF-16
385
- parse_utf16 ((const char16_t *)p_cstr, p_clip_to);
386
- #else
387
- // wchar_t is 32-bit, copy directly
388
- copy_from ((const char32_t *)p_cstr, p_clip_to);
389
- #endif
332
+ copy_from_unchecked (p_cstr.c_str , p_cstr.len );
390
333
}
391
334
392
335
void String::copy_from (const char32_t &p_char) {
@@ -412,42 +355,6 @@ void String::copy_from(const char32_t &p_char) {
412
355
dst[1 ] = 0 ;
413
356
}
414
357
415
- void String::copy_from (const char32_t *p_cstr) {
416
- if (!p_cstr) {
417
- resize (0 );
418
- return ;
419
- }
420
-
421
- const int len = strlen (p_cstr);
422
-
423
- if (len == 0 ) {
424
- resize (0 );
425
- return ;
426
- }
427
-
428
- copy_from_unchecked (p_cstr, len);
429
- }
430
-
431
- void String::copy_from (const char32_t *p_cstr, const int p_clip_to) {
432
- if (!p_cstr) {
433
- resize (0 );
434
- return ;
435
- }
436
-
437
- int len = 0 ;
438
- const char32_t *ptr = p_cstr;
439
- while ((p_clip_to < 0 || len < p_clip_to) && *(ptr++) != 0 ) {
440
- len++;
441
- }
442
-
443
- if (len == 0 ) {
444
- resize (0 );
445
- return ;
446
- }
447
-
448
- copy_from_unchecked (p_cstr, len);
449
- }
450
-
451
358
// assumes the following have already been validated:
452
359
// p_char != nullptr
453
360
// p_length > 0
@@ -475,18 +382,6 @@ void String::copy_from_unchecked(const char32_t *p_char, const int p_length) {
475
382
*dst = 0 ;
476
383
}
477
384
478
- void String::operator =(const char *p_str) {
479
- copy_from (p_str);
480
- }
481
-
482
- void String::operator =(const char32_t *p_str) {
483
- copy_from (p_str);
484
- }
485
-
486
- void String::operator =(const wchar_t *p_str) {
487
- copy_from (p_str);
488
- }
489
-
490
385
String String::operator +(const String &p_str) const {
491
386
String res = *this ;
492
387
res += p_str;
@@ -697,7 +592,7 @@ bool String::operator==(const String &p_str) const {
697
592
return true ;
698
593
}
699
594
700
- bool String::operator ==(const StrRange &p_str_range) const {
595
+ bool String::operator ==(const StrRange< char32_t > &p_str_range) const {
701
596
int len = p_str_range.len ;
702
597
703
598
if (length () != len) {
@@ -2512,37 +2407,6 @@ Char16String String::utf16() const {
2512
2407
return utf16s;
2513
2408
}
2514
2409
2515
- String::String (const char *p_str) {
2516
- copy_from (p_str);
2517
- }
2518
-
2519
- String::String (const wchar_t *p_str) {
2520
- copy_from (p_str);
2521
- }
2522
-
2523
- String::String (const char32_t *p_str) {
2524
- copy_from (p_str);
2525
- }
2526
-
2527
- String::String (const char *p_str, int p_clip_to_len) {
2528
- copy_from (p_str, p_clip_to_len);
2529
- }
2530
-
2531
- String::String (const wchar_t *p_str, int p_clip_to_len) {
2532
- copy_from (p_str, p_clip_to_len);
2533
- }
2534
-
2535
- String::String (const char32_t *p_str, int p_clip_to_len) {
2536
- copy_from (p_str, p_clip_to_len);
2537
- }
2538
-
2539
- String::String (const StrRange &p_range) {
2540
- if (!p_range.c_str ) {
2541
- return ;
2542
- }
2543
- copy_from (p_range.c_str , p_range.len );
2544
- }
2545
-
2546
2410
int64_t String::hex_to_int () const {
2547
2411
int len = length ();
2548
2412
if (len == 0 ) {
0 commit comments