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()); }
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()); }
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)); }
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)); }
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()); }
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, "+")); }