public TrapCloseTextWriter(OutputFile file, Stream stream) : base(stream) { this.file = file; }
private static void GenerateFile(string fileName, string templateName, IDictionary<string, object> options, string[] optionNames) { try { string file = Path.Combine(Options.getOutputDirectory().FullName, fileName); OutputFile outputFile = new OutputFile(file, typeof(CSharpFiles).Assembly.GetName().Version.ToString(), optionNames); if (!outputFile.needToWrite) { return; } TextWriter ostr = outputFile.GetTextWriter(); bool nsFound = false; if (CSharpCCGlobals.cu_to_insertion_point_1.Count != 0 && CSharpCCGlobals.cu_to_insertion_point_1[0].kind == CSharpCCParserConstants.NAMESPACE) { for (int i = 1; i < CSharpCCGlobals.cu_to_insertion_point_1.Count; i++) { if (CSharpCCGlobals.cu_to_insertion_point_1[i].kind == CSharpCCParserConstants.SEMICOLON) { CSharpCCGlobals.cline = CSharpCCGlobals.cu_to_insertion_point_1[0].beginLine; CSharpCCGlobals.ccol = CSharpCCGlobals.cu_to_insertion_point_1[0].beginColumn; for (int j = 0; j <= i - 1; j++) { CSharpCCGlobals.PrintToken(CSharpCCGlobals.cu_to_insertion_point_1[j], ostr); } nsFound = true; ostr.WriteLine("{"); ostr.WriteLine(); ostr.WriteLine(); break; } } } CSharpFileGenetor generator = new CSharpFileGenetor(templateName, options); generator.Generate(ostr); if (nsFound) ostr.WriteLine("}"); ostr.Close(); } catch (IOException e) { Console.Error.WriteLine("Failed to create " + fileName + ": " + e.Message); CSharpCCErrors.SemanticError("Could not open file " + fileName + " for writing."); throw new InvalidOperationException(); } }