Skip to content

Commit

Permalink
Merge pull request #11 from SimonCropp/re-use-slice
Browse files Browse the repository at this point in the history
re use slice
  • Loading branch information
neuecc authored Dec 17, 2023
2 parents b9cab9b + 8963319 commit bcdab31
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 9 deletions.
17 changes: 10 additions & 7 deletions src/Utf8StringInterpolation/Shims.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public static bool TryFormat(this char value, Span<byte> utf8Destination, out in
}
#endif
}

#if !NET8_0_OR_GREATER
public static bool TryFormat(this DateTime value, Span<byte> utf8Destination, out int bytesWritten, string? format, IFormatProvider? formatProvider)
{
Expand All @@ -46,14 +46,15 @@ public static bool TryFormat(this DateTime value, Span<byte> utf8Destination, ou
}
}

var count = Encoding.UTF8.GetByteCount(charDest.Slice(0, charWritten));
var slice = charDest.Slice(0, charWritten);
var count = Encoding.UTF8.GetByteCount(slice);
if (utf8Destination.Length < count)
{
bytesWritten = 0;
return false;
}

bytesWritten = Encoding.UTF8.GetBytes(charDest.Slice(0, charWritten), utf8Destination);
bytesWritten = Encoding.UTF8.GetBytes(slice, utf8Destination);
return true;
}

Expand All @@ -73,14 +74,15 @@ public static bool TryFormat(this DateTimeOffset value, Span<byte> utf8Destinati
}
}

var count = Encoding.UTF8.GetByteCount(charDest.Slice(0, charWritten));
var slice = charDest.Slice(0, charWritten);
var count = Encoding.UTF8.GetByteCount(slice);
if (utf8Destination.Length < count)
{
bytesWritten = 0;
return false;
}

bytesWritten = Encoding.UTF8.GetBytes(charDest.Slice(0, charWritten), utf8Destination);
bytesWritten = Encoding.UTF8.GetBytes(slice, utf8Destination);
return true;
}

Expand All @@ -100,14 +102,15 @@ public static bool TryFormat(this TimeSpan value, Span<byte> utf8Destination, ou
}
}

var count = Encoding.UTF8.GetByteCount(charDest.Slice(0, charWritten));
var slice = charDest.Slice(0, charWritten);
var count = Encoding.UTF8.GetByteCount(slice);
if (utf8Destination.Length < count)
{
bytesWritten = 0;
return false;
}

bytesWritten = Encoding.UTF8.GetBytes(charDest.Slice(0, charWritten), utf8Destination);
bytesWritten = Encoding.UTF8.GetBytes(slice, utf8Destination);
return true;
}
#endif
Expand Down
5 changes: 3 additions & 2 deletions src/Utf8StringInterpolation/Utf8StringWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -351,9 +351,10 @@ int AppendSpanFormattable<T>(T value, string? format)
}
}

var count = Encoding.UTF8.GetByteCount(charDest.Slice(0, charWritten));
var slice = charDest.Slice(0, charWritten);
var count = Encoding.UTF8.GetByteCount(slice);
TryGrow(count);
var bytesWritten = Encoding.UTF8.GetBytes(charDest.Slice(0, charWritten), destination);
var bytesWritten = Encoding.UTF8.GetBytes(slice, destination);
destination = destination.Slice(bytesWritten);
currentWritten += bytesWritten;
return bytesWritten;
Expand Down

0 comments on commit bcdab31

Please sign in to comment.