| #region Copyright notice and license |
| // Protocol Buffers - Google's data interchange format |
| // Copyright 2015 Google Inc. All rights reserved. |
| // |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file or at |
| // https://developers.google.com/open-source/licenses/bsd |
| #endregion |
| |
| using System; |
| using System.Security; |
| using Google.Protobuf.Collections; |
| |
| // Note: The choice of the namespace here is important because it's rare that people will directly reference Google.Protobuf.Collections |
| // in their app as they're typically using collections created by generated code. We are keeping the extension method in the Google.Protobuf |
| // namespace so that it is discoverable by most users. |
| |
| namespace Google.Protobuf |
| { |
| /// <summary> |
| /// A set of extension methods on <see cref="RepeatedField{T}"/> |
| /// </summary> |
| public static class RepeatedFieldExtensions |
| { |
| // Note: This method is an extension method to avoid ambiguous overload conflict with existing AddRange(IEnumerable<T>) when the source is an array. |
| /// <summary>Adds the elements of the specified span to the end of the <see cref="RepeatedField{T}"/>.</summary> |
| /// <typeparam name="T">The type of elements in the <see cref="RepeatedField{T}"/>.</typeparam> |
| /// <param name="repeatedField">The list to which the elements should be added.</param> |
| /// <param name="source">The span whose elements should be added to the end of the <see cref="RepeatedField{T}"/>.</param> |
| /// <exception cref="ArgumentNullException">The <paramref name="repeatedField"/> is null.</exception> |
| [SecuritySafeCritical] |
| public static void AddRange<T>(this RepeatedField<T> repeatedField, ReadOnlySpan<T> source) |
| { |
| ProtoPreconditions.CheckNotNull(repeatedField, nameof(repeatedField)); |
| repeatedField.AddRangeSpan(source); |
| } |
| } |
| } |