コード例 #1
0
ファイル: EnumerableOps.cs プロジェクト: modulexcite/pash-1
        internal static object AddObject(ExecutionContext context, IEnumerator lhs, object rhs)
        {
            NonEnumerableObjectEnumerator fakeEnumerator = lhs as NonEnumerableObjectEnumerator;

            if (fakeEnumerator != null)
            {
                return(AddFakeEnumerable(fakeEnumerator, rhs));
            }
            ArrayList list = new ArrayList();

            while (MoveNext(context, lhs))
            {
                list.Add(Current(lhs));
            }
            list.Add(rhs);
            return(list.ToArray());
        }
コード例 #2
0
ファイル: EnumerableOps.cs プロジェクト: modulexcite/pash-1
        internal static object SlicingIndex(object target, IEnumerator indexes, Func <object, object, object> indexer)
        {
            NonEnumerableObjectEnumerator enumerator = indexes as NonEnumerableObjectEnumerator;

            if (enumerator != null)
            {
                return(indexer(target, enumerator.GetNonEnumerableObject()));
            }
            ArrayList list = new ArrayList();

            while (MoveNext(null, indexes))
            {
                object obj2 = indexer(target, Current(indexes));
                if (obj2 != AutomationNull.Value)
                {
                    list.Add(obj2);
                }
            }
            return(list.ToArray());
        }
コード例 #3
0
ファイル: EnumerableOps.cs プロジェクト: modulexcite/pash-1
        internal static object Multiply(IEnumerator enumerator, int times)
        {
            NonEnumerableObjectEnumerator enumerator2 = enumerator as NonEnumerableObjectEnumerator;

            if (enumerator2 != null)
            {
                return(ParserOps.ImplicitOp(enumerator2.GetNonEnumerableObject(), times, "op_Multiply", null, "*"));
            }
            ArrayList list = new ArrayList();

            while (MoveNext(null, enumerator))
            {
                list.Add(Current(enumerator));
            }
            if (list.Count == 0)
            {
                return(new object[0]);
            }
            return(ArrayOps.Multiply <object>(list.ToArray(), times));
        }
コード例 #4
0
ファイル: EnumerableOps.cs プロジェクト: modulexcite/pash-1
 internal static IEnumerator GetCOMEnumerator(object obj)
 {
     try
     {
         IEnumerable enumerable = obj as IEnumerable;
         if (enumerable != null)
         {
             IEnumerator enumerator = enumerable.GetEnumerator();
             if (enumerator != null)
             {
                 return(enumerator);
             }
         }
     }
     catch (Exception exception)
     {
         CommandProcessorBase.CheckForSevereException(exception);
     }
     return((obj as IEnumerator) ?? NonEnumerableObjectEnumerator.Create(obj));
 }
コード例 #5
0
ファイル: EnumerableOps.cs プロジェクト: modulexcite/pash-1
        internal static object Compare(IEnumerator enumerator, object valueToCompareTo, Func <object, object, bool> compareDelegate)
        {
            NonEnumerableObjectEnumerator enumerator2 = enumerator as NonEnumerableObjectEnumerator;

            if (enumerator2 != null)
            {
                if (!compareDelegate(enumerator2.GetNonEnumerableObject(), valueToCompareTo))
                {
                    return(Boxed.False);
                }
                return(Boxed.True);
            }
            ArrayList list = new ArrayList();

            while (MoveNext(null, enumerator))
            {
                object obj2 = Current(enumerator);
                if (compareDelegate(obj2, valueToCompareTo))
                {
                    list.Add(obj2);
                }
            }
            return(list.ToArray());
        }
コード例 #6
0
ファイル: EnumerableOps.cs プロジェクト: modulexcite/pash-1
        internal static object AddFakeEnumerable(NonEnumerableObjectEnumerator fakeEnumerator, object rhs)
        {
            NonEnumerableObjectEnumerator enumerator = rhs as NonEnumerableObjectEnumerator;

            return(ParserOps.ImplicitOp(fakeEnumerator.GetNonEnumerableObject(), (enumerator != null) ? enumerator.GetNonEnumerableObject() : rhs, "op_Addition", null, "+"));
        }