blob: 83ae21b35b99700a9f4b6bad3a7ab842d6d44c18 [file] [log] [blame]
#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);
}
}
}