diff --git a/src/Generator/Driver.cs b/src/Generator/Driver.cs index f6ce2a47..b567e131 100644 --- a/src/Generator/Driver.cs +++ b/src/Generator/Driver.cs @@ -343,7 +343,8 @@ namespace CppSharp Diagnostics.Message("Generated '{0}'", fileRelativePath); var file = Path.Combine(outputPath, fileRelativePath); - File.WriteAllText(file, template.Generate()); + using (var streamWriter = new StreamWriter(file)) + template.Generate(streamWriter); Options.CodeFiles.Add(file); } } diff --git a/src/Generator/Generators/Template.cs b/src/Generator/Generators/Template.cs index 6dcf2caa..d8a1b2b4 100644 --- a/src/Generator/Generators/Template.cs +++ b/src/Generator/Generators/Template.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Text; using CppSharp.AST; @@ -265,9 +266,9 @@ namespace CppSharp.Generators public abstract void Process(); - public string Generate() + public virtual void Generate(TextWriter textWriter) { - return RootBlock.Generate(Options); + textWriter.Write(RootBlock.Generate(Options)); } #region Block helpers