mirror of https://github.com/mono/CppSharp.git
2 changed files with 43 additions and 63 deletions
@ -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 @@ |
|||||||
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