From 8ea2ab2fc8e0c16c15afcb1f3490f591af1fe162 Mon Sep 17 00:00:00 2001
From: Dimitar Dobrev <dpldobrev@protonmail.com>
Date: Thu, 3 Dec 2015 21:01:43 +0200
Subject: [PATCH] Changed the code generation to write to a stream in
 preparation for Roslyn.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
---
 src/Generator/Driver.cs              | 3 ++-
 src/Generator/Generators/Template.cs | 5 +++--
 2 files changed, 5 insertions(+), 3 deletions(-)

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