Example #1
0
        internal IEnumerable <ISimplePosition> GenerateOutput(BufferedPositions bufferedPositions)
        {
            if (bufferedPositions.SimplePositions.Count == 0)
            {
                return(new List <ISimplePosition>());                                             // nothing to output
            }
            var recomposablePositions = bufferedPositions.GetRecomposablePositions();

            if (recomposablePositions.Count <= 1)
            {
                return(bufferedPositions.SimplePositions);                                  // nothing to recompose
            }
            var functionBlockRanges = bufferedPositions.FunctionBlockRanges;
            var recomposedPositions = _variantGenerator.Recompose(recomposablePositions, functionBlockRanges).ToList();

            if (recomposedPositions.Count == 0)
            {
                return(bufferedPositions.SimplePositions);                                // nothing has been recomposed
            }
            return(bufferedPositions.SimplePositions.Concat(recomposedPositions).OrderBy(x => x.Start));
        }