make public API take ReadOnlySpan<byte> without "ref"

pull/8473/head
Jan Tattermusch 4 years ago
parent 5095b68183
commit 89244fe167
  1. 15
      csharp/src/Google.Protobuf.Test/MessageParsingHelpers.cs
  2. 2
      csharp/src/Google.Protobuf/MessageExtensions.cs
  3. 4
      csharp/src/Google.Protobuf/MessageParser.cs

@ -53,8 +53,7 @@ namespace Google.Protobuf
assert(parsedBuffer);
// Load content as ReadOnlySpan
ReadOnlySpan<byte> bytesSpan = bytes.AsSpan();
parsedBuffer = parser.ParseFrom(ref bytesSpan);
parsedBuffer = parser.ParseFrom(new ReadOnlySpan<byte>(bytes));
assert(parsedBuffer);
}
@ -72,8 +71,7 @@ namespace Google.Protobuf
assert(parsedBuffer);
// Load content as ReadOnlySpan
ReadOnlySpan<byte> bytesSpan = bytes.AsSpan();
parsedBuffer = parser.ParseFrom(ref bytesSpan);
parsedBuffer = parser.ParseFrom(new ReadOnlySpan<byte>(bytes));
assert(parsedBuffer);
}
@ -85,11 +83,7 @@ namespace Google.Protobuf
Assert.Throws<TException>(() => parser.ParseFrom(new ReadOnlySequence<byte>(bytes)));
Assert.Throws<TException>(() =>
{
ReadOnlySpan<byte> bytesSpan = bytes.AsSpan();
parser.ParseFrom(ref bytesSpan);
});
Assert.Throws<TException>(() => parser.ParseFrom(new ReadOnlySpan<byte>(bytes)));
}
public static void AssertRoundtrip<T>(MessageParser<T> parser, T message, Action<T> additionalAssert = null) where T : IMessage<T>
@ -116,8 +110,7 @@ namespace Google.Protobuf
additionalAssert?.Invoke(parsedBuffer);
// Load content as ReadOnlySpan
ReadOnlySpan<byte> bytesSpan = bytes.AsSpan();
parsedBuffer = parser.ParseFrom(ref bytesSpan);
parsedBuffer = parser.ParseFrom(new ReadOnlySpan<byte>(bytes));
Assert.AreEqual(message, parsedBuffer);
additionalAssert?.Invoke(parsedBuffer);
}

@ -85,7 +85,7 @@ namespace Google.Protobuf
/// <param name="message">The message to merge the data into.</param>
/// <param name="span">Span containing the data to merge, which must be protobuf-encoded binary data.</param>
[SecuritySafeCritical]
public static void MergeFrom(this IMessage message, ref ReadOnlySpan<byte> span) =>
public static void MergeFrom(this IMessage message, ReadOnlySpan<byte> span) =>
MergeFrom(message, ref span, false, null);
/// <summary>

@ -134,7 +134,7 @@ namespace Google.Protobuf
/// <param name="data">The data to parse.</param>
/// <returns>The parsed message.</returns>
[SecuritySafeCritical]
public IMessage ParseFrom(ref ReadOnlySpan<byte> data)
public IMessage ParseFrom(ReadOnlySpan<byte> data)
{
IMessage message = factory();
message.MergeFrom(ref data, DiscardUnknownFields, Extensions);
@ -334,7 +334,7 @@ namespace Google.Protobuf
/// <param name="data">The data to parse.</param>
/// <returns>The parsed message.</returns>
[SecuritySafeCritical]
public new T ParseFrom(ref ReadOnlySpan<byte> data)
public new T ParseFrom(ReadOnlySpan<byte> data)
{
T message = factory();
message.MergeFrom(ref data, DiscardUnknownFields, Extensions);

Loading…
Cancel
Save