- Deprecated DString.append_chars, use DString.append_string

- Deprecated `DString.append_string` for DStrings, use `DString.append_dstring` instead.
- Added `DString.append_char_buffer`.
This commit is contained in:
Christoffer Lerno
2025-12-16 20:17:54 +01:00
parent 996f8a6a4d
commit 415c9639e7
4 changed files with 38 additions and 13 deletions

View File

@@ -95,7 +95,7 @@ fn void DString.replace(&self, String needle, String replacement)
match++;
if (match == needle_len)
{
self.append_chars(replacement);
self.append_string(replacement);
match = 0;
continue;
}
@@ -103,12 +103,12 @@ fn void DString.replace(&self, String needle, String replacement)
}
if (match > 0)
{
self.append_chars(str[i - match:match]);
self.append_string(str[i - match:match]);
match = 0;
}
self.append_char(c);
}
if (match > 0) self.append_chars(str[^match:match]);
if (match > 0) self.append_string(str[^match:match]);
};
}
@@ -305,13 +305,18 @@ fn bool DString.less(self, DString other_string)
return true;
}
fn void DString.append_chars(&self, String str)
fn void DString.append_chars(&self, String str) @deprecated("Use append_string")
{
self.append_char_buffer(str);
}
fn void DString.append_char_buffer(&self, char[] str)
{
usz other_len = str.len;
if (!other_len) return;
if (!*self)
{
*self = temp(str);
*self = temp((String)str);
return;
}
self.reserve(other_len);
@@ -325,7 +330,24 @@ fn Char32[] DString.copy_utf32(&self, Allocator allocator)
return self.str_view().to_utf32(allocator) @inline!!;
}
fn void DString.append_string(&self, DString str)
<*
@require $typeof(str) == String || $typeof(str) == DString : "Expected string or DString"
*>
macro void DString.append_string(&self, str)
{
$if $typeof(str) == String:
self.append_char_buffer(str);
$else
self.append_string_deprecated(str);
$endif
}
macro void DString.append_string_deprecated(&self, DString str) @deprecated("Use .append_dstring()")
{
self.append_dstring(str);
}
fn void DString.append_dstring(&self, DString str)
{
StringData* other = str.data();
if (!other) return;
@@ -340,7 +362,7 @@ fn void DString.clear(self)
fn usz? DString.write(&self, char[] buffer) @dynamic
{
self.append_chars((String)buffer);
self.append_char_buffer(buffer);
return buffer.len;
}
@@ -400,9 +422,9 @@ macro void DString.append(&self, value)
$case ichar:
self.append_char(value);
$case DString:
self.append_string(value);
self.append_dstring(value);
$case String:
self.append_chars(value);
self.append_string(value);
$case Char32:
self.append_char32(value);
$default:
@@ -410,7 +432,7 @@ macro void DString.append(&self, value)
$case $defined((Char32)value):
self.append_char32((Char32)value);
$case $defined((String)value):
self.append_chars((String)value);
self.append_string((String)value);
$default:
$error "Unsupported type for append use appendf instead.";
$endswitch

View File

@@ -35,6 +35,9 @@
- Add `poly1305` one-time Message Authentication Code and associated tests. #2639
- Add `Elf32_Shdr` and `Elf64_Shdr` to `std::os::linux`.
- Add `any.to` and `any.as`.
- Deprecated `DString.append_chars`, use `DString.append_string`
- Deprecated `DString.append_string` for DStrings, use `DString.append_dstring` instead.
- Added `DString.append_char_buffer`.
## 0.7.8 Change list

View File

@@ -20,7 +20,7 @@ fn void main()
ms.dyn[i].tinit();
}
ms.dyn[0].append_chars("sad");
ms.dyn[0].append_string("sad");
ms.dyn[0].append("sad");
};
}

View File

@@ -96,7 +96,7 @@ fn void test_append()
assert(s == "éèà", "got '%s'; want 'éèà'", s);
str.clear();
str.append_chars("foo");
str.append_string("foo");
s = str.str_view();
assert(s == "foo", "got '%s'; want 'foo'", s);
str.clear();
@@ -113,7 +113,7 @@ fn void test_append()
assert(s == "xxxyyy", "got '%s'; want 'xxxyyy'", s);
str3.clear();
str3.append_string(str2);
str3.append_dstring(str2);
s = str3.str_view();
assert(s == "yyy", "got '%s'; want 'yyy'", s);
}