Esempio n. 1
0
        private IEnumerable <InteractiveLayeredQuiverGeneratorOutput> DoWork(
            InteractiveLayeredQuiverGenerator interactiveQuiverGenerator,
            CompositionParameters nextCompositionParameters,
            ICompositionGenerator compositionGenerator)
        {
            if (nextCompositionParameters is null)
            {
                yield return(interactiveQuiverGenerator.EndGeneration());

                yield break;
            }

            foreach (var composition in compositionGenerator.GenerateCompositions(nextCompositionParameters))
            {
                if (!interactiveQuiverGenerator.TrySupplyComposition(composition, out nextCompositionParameters))
                {
                    continue;
                }

                foreach (var output in DoWork(interactiveQuiverGenerator, nextCompositionParameters, compositionGenerator))
                {
                    yield return(output);
                }

                interactiveQuiverGenerator.UnsupplyLastComposition();
            }
        }