Spark.Emit.HLSL.EmitContextHLSL.DumpShader C# (CSharp) Method

DumpShader() private method

private DumpShader ( ) : DumpedShaderInfo
return DumpedShaderInfo
        private DumpedShaderInfo DumpShader()
        {
            DumpedShaderInfo result = new DumpedShaderInfo();

            string text = Span.ToString();
            var lines = text.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None);

            var lineCount = lines.Length;
            var sparkLineRanges = new SourceRange[lineCount];
            var lineErrorMasks = new string[lineCount][];
            var hlslLineRemap = new int[lineCount];

            var rangeStack = new Stack<SourceRange>();
            rangeStack.Push(_defaultRange);

            var writer = new System.IO.StringWriter();

            var maskedErrors = new Stack<string>();

            int remapLineNumber = 1;
            for (int ii = 0; ii < lineCount; ++ii)
            {
                var line = lines[ii];
                var lineNumber = ii + 1;

                hlslLineRemap[ii] = remapLineNumber;
                if (line.StartsWith(startSourceRange))
                {
                    var rangeStr = line.Substring(startSourceRange.Length);
                    SourceRange range = SourceRange.Parse(rangeStr);
                    rangeStack.Push(range);
                }
                else if (line.StartsWith(endSourceRange))
                {
                    rangeStack.Pop();
                }
                else if (line.StartsWith(PushErrorMaskString))
                {
                    var errorStr = line.Substring(PushErrorMaskString.Length);
                    maskedErrors.Push(errorStr.Trim());
                }
                else if (line.StartsWith(PopErrorMaskString))
                {
                    maskedErrors.Pop();
                }
                else
                {
                    if (writer != null)
                        writer.WriteLine(lines[ii]);
                    remapLineNumber++;
                }
                sparkLineRanges[ii] = rangeStack.Peek();
                lineErrorMasks[ii] = maskedErrors.ToArray();
            }

            result.hlslLineRemap = hlslLineRemap;
            result.sparkLineRanges = sparkLineRanges;
            result.strippedText = writer.ToString();
            result.lineErrorMasks = lineErrorMasks;

            return result;
        }