Beispiel #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))));
        }
Beispiel #2
0
        bool IDictionary <K, V> .TryGetValue(K key, ref V value)
        {
            FSharpOption <Tuple <K, V> > fsharpOption = (FSharpOption <Tuple <K, V> >)SeqModule.TryFind <Tuple <K, V> >((FSharpFunc <M0, bool>) new SeriesExtensions.System\u002DCollections\u002DGeneric\u002DIDictionary\u002DTryGetValue <K, V>(key), (IEnumerable <M0>)SeqModule.Zip <K, V>((IEnumerable <M0>) this.keys, (IEnumerable <M1>) this.values));

            if (fsharpOption == null)
            {
                return(false);
            }
            V v = fsharpOption.get_Value().Item2;

            value = v;
            return(true);
        }