コード例 #1
0
ファイル: VectorParent.cs プロジェクト: stjordanis/Imms
            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));
            }
コード例 #2
0
            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);
            }
コード例 #3
0
 public bool Add(T item)
 {
     _inner = _inner.Add(item, _lineage);
     return(true);
 }
コード例 #4
0
 internal Builder(ImmVector <T> inner)
 {
     _inner   = inner.Root;
     _lineage = Lineage.Mutable();
 }
コード例 #5
0
ファイル: ImmVector.cs プロジェクト: stjordanis/Imms
 /// <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;
 }
コード例 #6
0
ファイル: Convertion.cs プロジェクト: mattwarren/Imms
 public static ImmVector <T> Wrap <T>(this TrieVector <T> .Node inner)
 {
     return(new ImmVector <T>(inner));
 }