コード例 #1
0
ファイル: PInvokeQueryEx.cs プロジェクト: gayaK/LinqToPInvoke
        public static IPInvokeObservable <T> TakeWhile <T>(this IPInvokeObservable <T> @this, Func <T, int, bool> func)
        {
            bool flag = true;
            int  i    = 0;

            return(@this.Observe(new PInvokeQuery <T, T>((s, v) => (flag &= func(v, i++)) && s.OnNext(v))));
        }
コード例 #2
0
ファイル: PInvokeQueryEx.cs プロジェクト: gayaK/LinqToPInvoke
        public static IPInvokeQueryEndNode <TResult> Aggregate <T, TAccumulate, TResult>(this IPInvokeObservable <T> @this, TAccumulate seed, Func <TAccumulate, T, TAccumulate> func, Func <TAccumulate, TResult> resultSelector)
        {
            TAccumulate accumulate = seed;

            return(@this.Observe(new PInvokeQueryEndpoint <T, TResult>(
                                     v => accumulate = func(seed, v),
                                     () => resultSelector(accumulate))));
        }
コード例 #3
0
ファイル: PInvokeQueryEx.cs プロジェクト: gayaK/LinqToPInvoke
        public static IPInvokeQueryEndNode <int> Count <T>(this IPInvokeObservable <T> @this)
        {
            int count = 0;

            return(@this.Observe(new PInvokeQueryEndpoint <T, int>(
                                     v => count++,
                                     () => count)));
        }
コード例 #4
0
ファイル: PInvokeQueryEx.cs プロジェクト: gayaK/LinqToPInvoke
        public static IPInvokeQueryEndNode <T> LastOrDefault <T>(this IPInvokeObservable <T> @this)
        {
            T value = default(T);

            return(@this.Observe(new PInvokeQueryEndpoint <T, T>(
                                     v => value = v,
                                     () => value)));
        }
コード例 #5
0
ファイル: PInvokeQueryEx.cs プロジェクト: gayaK/LinqToPInvoke
        public static IPInvokeQueryEndNode <bool> Any <T>(this IPInvokeObservable <T> @this, Func <T, bool> func)
        {
            bool flag = false;

            return(@this.Observe(new PInvokeQueryEndpoint <T, bool>(
                                     v => (flag |= func(v)),
                                     () => flag)));
        }
コード例 #6
0
ファイル: PInvokeQueryEx.cs プロジェクト: gayaK/LinqToPInvoke
 public static IPInvokeObservable <T2> SelectMany <T1, T2>(this IPInvokeObservable <T1> @this, Func <T1, IEnumerable <T2> > func)
 => @this.Observe(new PInvokeQuery <T1, T2>((s, v) =>
 {
     foreach (var item in func(v))
     {
         if (!s.OnNext(item))
         {
             return(false);
         }
     }
     return(true);
 }));
コード例 #7
0
ファイル: PInvokeQueryEx.cs プロジェクト: gayaK/LinqToPInvoke
        public static IPInvokeQueryEndNode <bool> Any <T>(this IPInvokeObservable <T> @this)
        {
            bool flag = false;

            return(@this.Observe(new PInvokeQueryEndpoint <T, bool>(
                                     v =>
            {
                flag = true;
                return false;
            },
                                     () => flag)));
        }
コード例 #8
0
ファイル: PInvokeQueryEx.cs プロジェクト: gayaK/LinqToPInvoke
        public static IPInvokeQueryEndNode <int> Count <T>(this IPInvokeObservable <T> @this, Func <T, bool> func)
        {
            int count = 0;

            return(@this.Observe(new PInvokeQueryEndpoint <T, int>(
                                     v =>
            {
                if (func(v))
                {
                    count++;
                }
            },
                                     () => count)));
        }
コード例 #9
0
ファイル: PInvokeQueryEx.cs プロジェクト: gayaK/LinqToPInvoke
        public static IPInvokeQueryEndNode <bool> All <T>(this IPInvokeObservable <T> @this, Func <T, bool> func)
        {
            bool?flag = null;

            return(@this.Observe(new PInvokeQueryEndpoint <T, bool>(
                                     v =>
            {
                var f = flag ?? true;
                f &= func(v);
                flag = f;
                return flag.Value;
            },
                                     () => flag ?? false)));
        }
コード例 #10
0
ファイル: PInvokeQueryEx.cs プロジェクト: gayaK/LinqToPInvoke
        public static IPInvokeObservable <T2> Select <T1, T2>(this IPInvokeObservable <T1> @this, Func <T1, int, T2> func)
        {
            int i = 0;

            return(@this.Observe(new PInvokeQuery <T1, T2>((s, v) => s.OnNext(func(v, i++)))));
        }
コード例 #11
0
ファイル: PInvokeQueryEx.cs プロジェクト: gayaK/LinqToPInvoke
 public static IPInvokeObservable <T2> Select <T1, T2>(this IPInvokeObservable <T1> @this, Func <T1, T2> func)
 => @this.Observe(new PInvokeQuery <T1, T2>((s, v) => s.OnNext(func(v))));
コード例 #12
0
ファイル: PInvokeQueryEx.cs プロジェクト: gayaK/LinqToPInvoke
        public static IPInvokeObservable <T> Where <T>(this IPInvokeObservable <T> @this, Func <T, int, bool> func)
        {
            int i = 0;

            return(@this.Observe(new PInvokeQuery <T, T>((s, v) => func(v, i++) || s.OnNext(v))));
        }
コード例 #13
0
ファイル: PInvokeQueryEx.cs プロジェクト: gayaK/LinqToPInvoke
        public static IPInvokeQueryEndNode ForEach <T>(this IPInvokeObservable <T> @this, Action <T, int> action)
        {
            int i = 0;

            return(@this.Observe(new PInvokeQueryEndpoint <T>(v => action(v, i++))));
        }
コード例 #14
0
ファイル: PInvokeQueryEx.cs プロジェクト: gayaK/LinqToPInvoke
        public static IPInvokeObservable <T> Distinct <T, TKey>(this IPInvokeObservable <T> @this, Func <T, TKey> func, IEqualityComparer <TKey> comparer)
        {
            var hashSet = new HashSet <TKey>(comparer);

            return(@this.Observe(new PInvokeQuery <T, T>((s, v) => hashSet.Add(func(v)) ? s.OnNext(v) : true)));
        }
コード例 #15
0
ファイル: PInvokeQueryEx.cs プロジェクト: gayaK/LinqToPInvoke
 public static IPInvokeObservable <T> Where <T>(this IPInvokeObservable <T> @this, Func <T, bool> func)
 => @this.Observe(new PInvokeQuery <T, T>((s, v) => func(v) || s.OnNext(v)));
コード例 #16
0
ファイル: PInvokeQueryEx.cs プロジェクト: gayaK/LinqToPInvoke
 public static IPInvokeQueryEndNode ForEach <T>(this IPInvokeObservable <T> @this, Action <T> action)
 => @this.Observe(new PInvokeQueryEndpoint <T>(v => action(v)));
コード例 #17
0
ファイル: PInvokeQueryEx.cs プロジェクト: gayaK/LinqToPInvoke
        public static IPInvokeObservable <T> Skip <T>(this IPInvokeObservable <T> @this, int count)
        {
            int i = 0;

            return(@this.Observe(new PInvokeQuery <T, T>((s, v) => (i++ < count) || s.OnNext(v))));
        }
コード例 #18
0
ファイル: PInvokeQueryEx.cs プロジェクト: gayaK/LinqToPInvoke
        public static IPInvokeObservable <T> SkipWhile <T>(this IPInvokeObservable <T> @this, Func <T, bool> func)
        {
            bool flag = true;

            return(@this.Observe(new PInvokeQuery <T, T>((s, v) => (flag &= func(v)) || s.OnNext(v))));
        }