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

Loading…
Cancel
Save