protected Index(Tangle <TValue> tangle, string name, Delegate function) { IndexFunction = function as IndexFunc <TIndexKey, TValue>; IndexMultipleFunction = function as IndexMultipleFunc <TIndexKey, TValue>; if ((IndexFunction == null) && (IndexMultipleFunction == null)) { throw new InvalidOperationException("An index must have either an IndexFunc or IndexMultipleFunc"); } Tangle = tangle; Name = name; KeyConverter = TangleKey.GetConverter <TIndexKey>(); IndexBase <TValue> temp; if (tangle.Indices.TryGetValue(name, out temp)) { throw new InvalidOperationException("An index with that name already exists"); } BTree = new BTree(tangle.Storage, Name + "_"); tangle.Indices.Add(name, this); if (tangle.Count != BTree.MutationSentinel) { Populate(); } }
public CascadingGetMultipleThunk(IEnumerable <Tangle <T> .JoinBarrierThunk> barriers, IEnumerable <Tangle <T> > cascades, IEnumerable <TKey> keys) { Barriers = barriers; Cascades = cascades; Keys = keys; KeyConverter = TangleKey.GetConverter <TKey>(); }
public MapReduceThunk( IEnumerable <TKey> keys, Func <TKey, T, TMapped> map, Func <TMapped, TMapped, TMapped> reduce, TMapped initialValue, TMapped defaultValue ) { Keys = keys; KeyConverter = TangleKey.GetConverter <TKey>(); Map = map; Reduce = reduce; InitialValue = initialValue; DefaultValue = defaultValue; }
public JoinThunk( Tangle <TRight> .JoinBarrierThunk rightBarrier, Tangle <TRight> right, IEnumerable <TLeftKey> keys, JoinKeySelector <TLeftKey, T, TRightKey> keySelector, JoinValueSelector <TLeftKey, T, TRightKey, TRight, TOut> valueSelector ) { RightBarrier = rightBarrier; Right = right; Keys = keys; KeySelector = keySelector; ValueSelector = valueSelector; LeftKeyConverter = TangleKey.GetConverter <TLeftKey>(); RightKeyConverter = TangleKey.GetConverter <TRightKey>(); }
public ForEachThunk(IEnumerable <TKey> keys, Action <TKey, T> function) { Keys = keys; KeyConverter = TangleKey.GetConverter <TKey>(); Function = function; }
public GetMultipleThunk(IEnumerable <TKey> keys) { Keys = keys; KeyConverter = TangleKey.GetConverter <TKey>(); }