From 877b363381f81621307147c818585da27f720c59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Lema=C5=84czyk?= Date: Thu, 10 Jul 2025 12:03:34 +0200 Subject: [PATCH] Add EnsureCapacity method --- Recyclable.Collections/RecyclableList.cs | 34 +++++++++++++++++------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/Recyclable.Collections/RecyclableList.cs b/Recyclable.Collections/RecyclableList.cs index 4593fd6..db0cfcd 100644 --- a/Recyclable.Collections/RecyclableList.cs +++ b/Recyclable.Collections/RecyclableList.cs @@ -190,12 +190,12 @@ namespace Recyclable.Collections } } - internal int _count; - public int Count - { - get => _count; - set - { + internal int _count; + public int Count + { + get => _count; + set + { if (_count != value) { if (value > _capacity) @@ -206,10 +206,26 @@ namespace Recyclable.Collections _count = value; _version++; } - } - } + } + } - public bool IsReadOnly => false; + /// + /// Ensures that the capacity of this list is at least the specified value. + /// + /// The minimum capacity to ensure. + /// The new capacity of the list. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int EnsureCapacity(int capacity) + { + if (capacity > _capacity) + { + _capacity = RecyclableListHelpers.EnsureCapacity(this, _count, checked((int)BitOperations.RoundUpToPowerOf2((uint)capacity))); + } + + return _capacity; + } + + public bool IsReadOnly => false; [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Add(T item)