686 } while (searchstr.length > 0 && found < replmax); |
686 } while (searchstr.length > 0 && found < replmax); |
687 |
687 |
688 // Allocate result string |
688 // Allocate result string |
689 cxmutstr result; |
689 cxmutstr result; |
690 { |
690 { |
691 ssize_t adjlen = (ssize_t) replacement.length - (ssize_t) pattern.length; |
691 long long adjlen = (long long) replacement.length - (long long) pattern.length; |
692 size_t rcount = 0; |
692 size_t rcount = 0; |
693 curbuf = &ibuf; |
693 curbuf = &ibuf; |
694 do { |
694 do { |
695 rcount += curbuf->len; |
695 rcount += curbuf->len; |
696 curbuf = curbuf->next; |
696 curbuf = curbuf->next; |
897 int cx_strtoi64_lc_(cxstring str, int64_t *output, int base, const char *groupsep) { |
897 int cx_strtoi64_lc_(cxstring str, int64_t *output, int base, const char *groupsep) { |
898 assert(sizeof(long long) == sizeof(int64_t)); // should be true on all platforms |
898 assert(sizeof(long long) == sizeof(int64_t)); // should be true on all platforms |
899 return cx_strtoll_lc(str, (long long*) output, base, groupsep); |
899 return cx_strtoll_lc(str, (long long*) output, base, groupsep); |
900 } |
900 } |
901 |
901 |
902 int cx_strtoz_lc_(cxstring str, ssize_t *output, int base, const char *groupsep) { |
|
903 #if SSIZE_MAX == INT32_MAX |
|
904 return cx_strtoi32_lc_(str, (int32_t*) output, base, groupsep); |
|
905 #elif SSIZE_MAX == INT64_MAX |
|
906 return cx_strtoll_lc_(str, (long long*) output, base, groupsep); |
|
907 #else |
|
908 #error "unsupported ssize_t size" |
|
909 #endif |
|
910 } |
|
911 |
|
912 #define cx_strtoX_unsigned_impl(rtype, rmax) \ |
902 #define cx_strtoX_unsigned_impl(rtype, rmax) \ |
913 uint64_t result; \ |
903 uint64_t result; \ |
914 if (cx_strtou64_lc(str, &result, base, groupsep)) { \ |
904 if (cx_strtou64_lc(str, &result, base, groupsep)) { \ |
915 return -1; \ |
905 return -1; \ |
916 } \ |
906 } \ |
1027 int cx_strtou64_lc_(cxstring str, uint64_t *output, int base, const char *groupsep) { |
1017 int cx_strtou64_lc_(cxstring str, uint64_t *output, int base, const char *groupsep) { |
1028 assert(sizeof(unsigned long long) == sizeof(uint64_t)); // should be true on all platforms |
1018 assert(sizeof(unsigned long long) == sizeof(uint64_t)); // should be true on all platforms |
1029 return cx_strtoull_lc(str, (unsigned long long*) output, base, groupsep); |
1019 return cx_strtoull_lc(str, (unsigned long long*) output, base, groupsep); |
1030 } |
1020 } |
1031 |
1021 |
1032 int cx_strtouz_lc_(cxstring str, size_t *output, int base, const char *groupsep) { |
1022 int cx_strtoz_lc_(cxstring str, size_t *output, int base, const char *groupsep) { |
1033 #if SIZE_MAX == UINT32_MAX |
1023 #if SIZE_MAX == UINT32_MAX |
1034 return cx_strtou32_lc_(str, (uint32_t*) output, base, groupsep); |
1024 return cx_strtou32_lc_(str, (uint32_t*) output, base, groupsep); |
1035 #elif SIZE_MAX == UINT64_MAX |
1025 #elif SIZE_MAX == UINT64_MAX |
1036 return cx_strtoull_lc_(str, (unsigned long long *) output, base, groupsep); |
1026 return cx_strtoull_lc_(str, (unsigned long long *) output, base, groupsep); |
1037 #else |
1027 #else |