mirror of https://github.com/mono/CppSharp.git
2 changed files with 43 additions and 63 deletions
@ -0,0 +1,43 @@
@@ -0,0 +1,43 @@
|
||||
using System; |
||||
using System.IO; |
||||
using Cxxi.Passes; |
||||
using Cxxi.Types; |
||||
|
||||
namespace Cxxi.Generators.CLI |
||||
{ |
||||
public class CLIGenerator : Generator |
||||
{ |
||||
private readonly ITypePrinter typePrinter; |
||||
|
||||
public CLIGenerator(Driver driver) : base(driver) |
||||
{ |
||||
typePrinter = new CLITypePrinter(driver.TypeDatabase, driver.Library); |
||||
Type.TypePrinter = typePrinter; |
||||
} |
||||
|
||||
void WriteTemplate(TextTemplate template) |
||||
{ |
||||
var file = Path.GetFileNameWithoutExtension(template.unit.FileName) |
||||
+ Driver.Options.WrapperSuffix + "." |
||||
+ template.FileExtension; |
||||
|
||||
var path = Path.Combine(Driver.Options.OutputDir, file); |
||||
|
||||
template.Generate(); |
||||
|
||||
Console.WriteLine(" Generated '" + file + "'."); |
||||
File.WriteAllText(Path.GetFullPath(path), template.ToString()); |
||||
} |
||||
|
||||
public override bool Generate(TranslationUnit unit) |
||||
{ |
||||
var header = new CLIHeadersTemplate(Driver, unit); |
||||
WriteTemplate(header); |
||||
|
||||
var source = new CLISourcesTemplate(Driver, unit); |
||||
WriteTemplate(source); |
||||
|
||||
return true; |
||||
} |
||||
} |
||||
} |
||||
@ -1,63 +0,0 @@
@@ -1,63 +0,0 @@
|
||||
using System; |
||||
using System.IO; |
||||
using Cxxi.Types; |
||||
|
||||
namespace Cxxi.Generators.CLI |
||||
{ |
||||
public class CLIGenerator : ILanguageGenerator |
||||
{ |
||||
public DriverOptions Options { get; set; } |
||||
public Library Library { get; set; } |
||||
public ILibrary Transform { get; set; } |
||||
public ITypeMapDatabase TypeMapDatabase { get; set; } |
||||
public Generator Generator { get; set; } |
||||
|
||||
private readonly ITypePrinter typePrinter; |
||||
|
||||
public CLIGenerator(Generator generator) |
||||
{ |
||||
Generator = generator; |
||||
typePrinter = new CLITypePrinter(TypeMapDatabase, Library); |
||||
Type.TypePrinter = typePrinter; |
||||
} |
||||
|
||||
T CreateTemplate<T>(TranslationUnit unit) where T : CLITextTemplate, new() |
||||
{ |
||||
var template = new T |
||||
{ |
||||
Generator = Generator, |
||||
DriverOptions = Options, |
||||
Library = Library, |
||||
Transform = Transform, |
||||
Module = unit, |
||||
TypePrinter = typePrinter |
||||
}; |
||||
|
||||
return template; |
||||
} |
||||
|
||||
public static String WrapperSuffix = "_wrapper"; |
||||
|
||||
void WriteTemplate(TextTemplate template) |
||||
{ |
||||
var file = Path.GetFileNameWithoutExtension(template.Module.FileName) + WrapperSuffix + "." |
||||
+ template.FileExtension; |
||||
|
||||
var path = Path.Combine(Options.OutputDir, file); |
||||
|
||||
Console.WriteLine(" Generated '" + file + "'."); |
||||
File.WriteAllText(Path.GetFullPath(path), template.ToString()); |
||||
} |
||||
|
||||
public bool Generate(TranslationUnit unit) |
||||
{ |
||||
var header = CreateTemplate<CLIHeadersTemplate>(unit); |
||||
WriteTemplate(header); |
||||
|
||||
var source = CreateTemplate<CLISourcesTemplate>(unit); |
||||
WriteTemplate(source); |
||||
|
||||
return true; |
||||
} |
||||
} |
||||
} |
||||
Loading…
Reference in new issue