/// <summary> /// Emit all kinds of selection /// </summary> /// <param name="sb"></param> /// <param name="wr"></param> /// <returns></returns> private static string Emit(this ISelectionCriteriaBase sb, TextWriter wr) { if (sb is SelectionCriteria) { return((sb as SelectionCriteria).Emit(wr)); } else if (sb is ANDOR) { return((sb as ANDOR).Emit(wr)); } else { throw new ArgumentException(string.Format("Don't know how to emit type '{0}'", sb.GetType())); } }
private IEnumerable <FinalStateObject> ExtractFSOReferences(ISelectionCriteriaBase sc) { if (sc is SelectionCriteria) { var fsc = sc as SelectionCriteria; return(ExtractFSOReference(fsc.FirstArgument) .Concat(ExtractFSOReference(fsc.SecondArgument))); } else if (sc is ANDOR) { return((sc as ANDOR) .Arguments .SelectMany(a => ExtractFSOReferences(a))); } else { throw new InvalidOperationException("Unknown selection criteria"); } }
private IEnumerable<FinalStateObject> ExtractFSOReferences(ISelectionCriteriaBase sc) { if (sc is SelectionCriteria) { var fsc = sc as SelectionCriteria; return ExtractFSOReference(fsc.FirstArgument) .Concat(ExtractFSOReference(fsc.SecondArgument)); } else if (sc is ANDOR) { return (sc as ANDOR) .Arguments .SelectMany(a => ExtractFSOReferences(a)); } else { throw new InvalidOperationException("Unknown selection criteria"); } }