public override TrieVector <TOut> .Node Apply <TOut>(Func <TValue, TOut> transform, Lineage lineage) { var newArr = new TrieVector <TOut> .Node[ArrSize]; for (var i = 0; i < ArrSize; i++) { newArr[i] = Arr[i].Apply(transform, lineage); } return(new TrieVector <TOut> .Parent(Height, Length, newArr, lineage, ArrSize)); }
public void AddRange(IEnumerable <T> items) { items.CheckNotNull("items"); if (_inner.Length == 0) { var vector = items as ImmVector <T>; if (vector != null) { _inner = vector; return; } } int len; var arr = items.ToArrayFast(out len); var s = 0; _inner = _inner.AddRange(arr, _lineage, 6, ref s, ref len); }
public bool Add(T item) { _inner = _inner.Add(item, _lineage); return(true); }
internal Builder(ImmVector <T> inner) { _inner = inner.Root; _lineage = Lineage.Mutable(); }
/// <summary> /// Initializes a new instance of the <see cref="ImmVector{T}" /> class. /// </summary> /// <param name="root">The root.</param> internal ImmVector(TrieVector <T> .Node root) { Root = root; }
public static ImmVector <T> Wrap <T>(this TrieVector <T> .Node inner) { return(new ImmVector <T>(inner)); }