Exemple #1
0
        Tuple <IIndex <K>, VectorConstruction> IIndexBuilder.GetRange <K>(Tuple <IIndex <K>, VectorConstruction> _arg12, Tuple <FSharpOption <Tuple <K, BoundaryBehavior> >, FSharpOption <Tuple <K, BoundaryBehavior> > > _arg13)
        {
            Tuple <IIndex <K>, VectorConstruction> tuple1 = _arg12;
            VectorConstruction vectorConstruction         = tuple1.Item2;
            IIndex <K>         index = tuple1.Item1;
            Tuple <FSharpOption <Tuple <K, BoundaryBehavior> >, FSharpOption <Tuple <K, BoundaryBehavior> > > tuple2 = _arg13;
            FSharpOption <Tuple <K, BoundaryBehavior> > fsharpOption1 = tuple2.Item1;
            FSharpOption <Tuple <K, BoundaryBehavior> > fsharpOption2 = tuple2.Item2;
            Tuple <long, long> tuple3 = new Tuple <long, long>(0L, index.KeyCount - 1L);
            long num1 = tuple3.Item1;
            long num2 = tuple3.Item2;
            FSharpOption <Tuple <K, BoundaryBehavior> > fsharpOption3 = fsharpOption1;
            long num3;

            if (fsharpOption3 != null)
            {
                FSharpOption <Tuple <K, BoundaryBehavior> > fsharpOption4 = fsharpOption3;
                K      key    = fsharpOption4.get_Value().Item1;
                Lookup lookup = !fsharpOption4.get_Value().Item2.Equals((object)BoundaryBehavior.get_Exclusive(), LanguagePrimitives.get_GenericEqualityComparer()) ? Lookup.ExactOrGreater : Lookup.Greater;
                FSharpChoice <Unit, Tuple <K, long> > fsharpChoice = OptionalValueModule.MissingPresent <Tuple <K, long> >(index.Lookup(key, lookup, (Func <long, bool>) new LinearIndex.loBound()));
                num3 = !(fsharpChoice is FSharpChoice <Unit, Tuple <K, long> > .Choice1Of2) ? ((FSharpChoice <Unit, Tuple <K, long> > .Choice2Of2)fsharpChoice).get_Item().Item2 : num2 + 1L;
            }
            else
            {
                num3 = num1;
            }
            long startAddress = num3;
            FSharpOption <Tuple <K, BoundaryBehavior> > fsharpOption5 = fsharpOption2;
            long num4;

            if (fsharpOption5 != null)
            {
                FSharpOption <Tuple <K, BoundaryBehavior> > fsharpOption4 = fsharpOption5;
                K      key    = fsharpOption4.get_Value().Item1;
                Lookup lookup = !fsharpOption4.get_Value().Item2.Equals((object)BoundaryBehavior.get_Exclusive(), LanguagePrimitives.get_GenericEqualityComparer()) ? Lookup.ExactOrSmaller : Lookup.Smaller;
                FSharpChoice <Unit, Tuple <K, long> > fsharpChoice = OptionalValueModule.MissingPresent <Tuple <K, long> >(index.Lookup(key, lookup, (Func <long, bool>) new LinearIndex.hiBound()));
                num4 = !(fsharpChoice is FSharpChoice <Unit, Tuple <K, long> > .Choice1Of2) ? ((FSharpChoice <Unit, Tuple <K, long> > .Choice2Of2)fsharpChoice).get_Item().Item2 : num1 - 1L;
            }
            else
            {
                num4 = num2;
            }
            long endAddress = num4;

            if (endAddress < startAddress)
            {
                return(new Tuple <IIndex <K>, VectorConstruction>((IIndex <K>) new LinearIndex <K>(System.Array.AsReadOnly <K>(new K[0]), (IIndexBuilder)this, FSharpOption <bool> .Some(true)), VectorConstruction.NewEmpty(0L)));
            }
            return(new Tuple <IIndex <K>, VectorConstruction>((IIndex <K>) new LinearRangeIndex <K>(index, startAddress, endAddress), VectorConstruction.NewGetRange(vectorConstruction, RangeRestriction <long> .NewFixed(startAddress, endAddress))));
        }
Exemple #2
0
        public static Series <K, V> FromIndexVectorLoader <K, V>(Addressing.IAddressingScheme scheme, IVectorBuilder vectorBuilder, IIndexBuilder indexBuilder, K min, K max, FSharpFunc <Tuple <K, BoundaryBehavior>, FSharpFunc <Tuple <K, BoundaryBehavior>, FSharpAsync <Tuple <IIndex <K>, IVector <V> > > > > loader)
        {
            Ranges.Ranges <K> ranges = Ranges.Ranges <K> .NewRange(new Tuple <Tuple <K, BoundaryBehavior>, Tuple <K, BoundaryBehavior> >(new Tuple <K, BoundaryBehavior>(min, BoundaryBehavior.get_Inclusive()), new Tuple <K, BoundaryBehavior>(max, BoundaryBehavior.get_Inclusive())));

            DelayedSource <K, V> source = new DelayedSource <K, V>(scheme, min, max, ranges, indexBuilder, vectorBuilder, (FSharpFunc <Tuple <Tuple <K, BoundaryBehavior>, Tuple <K, BoundaryBehavior> >[], FSharpAsync <Tuple <IIndex <K>, IVector <V> > >[]>) new DelayedSeries.source <K, V>(loader));

            return(new Series <K, V>((IIndex <K>) new DelayedIndex <K, V>(source), (IVector <V>) new DelayedVector <K, V>(source), vectorBuilder, (IIndexBuilder) new DelayedIndexBuilder()));
        }
Exemple #3
0
        internal static Tuple <IIndex <a>, VectorConstruction> restrictToRowIndex <a>(Lookup lookup, IIndex <a> restriction, IIndex <a> sourceIndex, VectorConstruction vector)
        {
            if ((((lookup != Lookup.Exact ? 0 : (restriction.IsOrdered ? 1 : 0)) == 0 ? 0 : (sourceIndex.IsOrdered ? 1 : 0)) == 0 ? 0 : (!restriction.IsEmpty ? 1 : 0)) == 0)
            {
                return(new Tuple <IIndex <a>, VectorConstruction>(sourceIndex, vector));
            }
            Tuple <a, a> keyRange = restriction.KeyRange;
            a            a1       = keyRange.Item1;
            a            a2       = keyRange.Item2;

            return(sourceIndex.Builder.GetRange <a>(new Tuple <IIndex <a>, VectorConstruction>(sourceIndex, vector), new Tuple <FSharpOption <Tuple <a, BoundaryBehavior> >, FSharpOption <Tuple <a, BoundaryBehavior> > >(FSharpOption <Tuple <a, BoundaryBehavior> > .Some(new Tuple <a, BoundaryBehavior>(a1, BoundaryBehavior.get_Inclusive())), FSharpOption <Tuple <a, BoundaryBehavior> > .Some(new Tuple <a, BoundaryBehavior>(a2, BoundaryBehavior.get_Inclusive())))));
        }
Exemple #4
0
        public static Series <K, V> FromValueLoader <K, V>(K min, K max, FSharpFunc <Tuple <K, BoundaryBehavior>, FSharpFunc <Tuple <K, BoundaryBehavior>, FSharpAsync <IEnumerable <KeyValuePair <K, V> > > > > loader)
        {
            IVectorBuilder instance1 = FVectorBuilderimplementation.VectorBuilder.Instance;
            IIndexBuilder  instance2 = FIndexBuilderimplementation.IndexBuilder.Instance;

            Ranges.Ranges <K> ranges = Ranges.Ranges <K> .NewRange(new Tuple <Tuple <K, BoundaryBehavior>, Tuple <K, BoundaryBehavior> >(new Tuple <K, BoundaryBehavior>(min, BoundaryBehavior.get_Inclusive()), new Tuple <K, BoundaryBehavior>(max, BoundaryBehavior.get_Inclusive())));

            DelayedSource <K, V> source = new DelayedSource <K, V>(Addressing.LinearAddressingScheme.Instance, min, max, ranges, instance2, instance1, (FSharpFunc <Tuple <Tuple <K, BoundaryBehavior>, Tuple <K, BoundaryBehavior> >[], FSharpAsync <Tuple <IIndex <K>, IVector <V> > >[]>) new DelayedSeries.source <K, V>(loader, instance1, instance2));

            return(new Series <K, V>((IIndex <K>) new DelayedIndex <K, V>(source), (IVector <V>) new DelayedVector <K, V>(source), instance1, (IIndexBuilder) new DelayedIndexBuilder()));
        }