Browse Source

Removed the writing of code to disk when auto-compiling.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/593/head
Dimitar Dobrev 10 years ago
parent
commit
47b1781603
  1. 24
      src/Generator/Driver.cs

24
src/Generator/Driver.cs

@ -14,6 +14,7 @@ using CppSharp.Passes;
using CppSharp.Types; using CppSharp.Types;
using Microsoft.CSharp; using Microsoft.CSharp;
using CppSharp.Parser; using CppSharp.Parser;
using System.CodeDom;
namespace CppSharp namespace CppSharp
{ {
@ -337,6 +338,15 @@ namespace CppSharp
if (Options.GenerateName != null) if (Options.GenerateName != null)
fileBase = Options.GenerateName(output.TranslationUnit); fileBase = Options.GenerateName(output.TranslationUnit);
if (Options.IsCSharpGenerator && Options.CompileCode)
{
compileUnits.AddRange(
output.Templates.Select(t => new CodeSnippetCompileUnit(t.Generate())));
compileUnits.AddRange(
Options.CodeFiles.Select(c => new CodeSnippetCompileUnit(File.ReadAllText(c))));
}
else
{
foreach (var template in output.Templates) foreach (var template in output.Templates)
{ {
var fileRelativePath = string.Format("{0}.{1}", fileBase, template.FileExtension); var fileRelativePath = string.Format("{0}.{1}", fileBase, template.FileExtension);
@ -348,6 +358,7 @@ namespace CppSharp
} }
} }
} }
}
public void CompileCode() public void CompileCode()
{ {
@ -387,10 +398,13 @@ namespace CppSharp
!compilerParameters.ReferencedAssemblies.Contains(libraryMappings[d])) !compilerParameters.ReferencedAssemblies.Contains(libraryMappings[d]))
.Select(l => libraryMappings[l])).ToArray()); .Select(l => libraryMappings[l])).ToArray());
var codeProvider = new CSharpCodeProvider( CompilerResults compilerResults;
new Dictionary<string, string> {{"CompilerVersion", "v4.0"}}); using (var codeProvider = new CSharpCodeProvider(
var compilerResults = codeProvider.CompileAssemblyFromFile( new Dictionary<string, string> { { "CompilerVersion", "v4.0" } }))
compilerParameters, Options.CodeFiles.ToArray()); {
compilerResults = codeProvider.CompileAssemblyFromDom(
compilerParameters, compileUnits.ToArray());
}
var errors = compilerResults.Errors.Cast<CompilerError>(); var errors = compilerResults.Errors.Cast<CompilerError>();
foreach (var error in errors.Where(error => !error.IsWarning)) foreach (var error in errors.Where(error => !error.IsWarning))
@ -413,6 +427,8 @@ namespace CppSharp
{ {
GeneratorOutputPasses.AddPass(pass); GeneratorOutputPasses.AddPass(pass);
} }
private List<CodeSnippetCompileUnit> compileUnits = new List<CodeSnippetCompileUnit>();
} }
public static class ConsoleDriver public static class ConsoleDriver

Loading…
Cancel
Save