Browse Source

Merge pull request #354 from ddobrev/master

Simplified and precised the pass for inlines
pull/355/head
João Matos 11 years ago
parent
commit
de5552e11a
  1. 26
      src/Generator/Passes/GenerateInlinesCodePass.cs

26
src/Generator/Passes/GenerateInlinesCodePass.cs

@ -1,6 +1,4 @@ @@ -1,6 +1,4 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.IO;
using System.Text;
using CppSharp.AST;
@ -8,31 +6,17 @@ namespace CppSharp.Passes @@ -8,31 +6,17 @@ namespace CppSharp.Passes
{
public class GenerateInlinesCodePass : TranslationUnitPass
{
public GenerateInlinesCodePass()
{
this.SkipPatterns = new List<string>();
}
public List<string> SkipPatterns { get; private set; }
public override bool VisitLibrary(ASTContext context)
{
bool result = base.VisitLibrary(context);
Directory.CreateDirectory(Driver.Options.OutputDir);
WriteInlinesIncludes(context);
return result;
WriteInlinesIncludes();
return true;
}
private void WriteInlinesIncludes(ASTContext context)
private void WriteInlinesIncludes()
{
var cppBuilder = new StringBuilder();
foreach (var header in from translationUnit in context.TranslationUnits
where translationUnit.IsValid && !translationUnit.IsSystemHeader &&
translationUnit.GenerationKind == GenerationKind.Generate
let fileName = translationUnit.FileName
where SkipPatterns.All(p => !fileName.EndsWith(p))
orderby fileName
select fileName)
foreach (var header in Driver.Options.Headers)
cppBuilder.AppendFormat("#include \"{0}\"\n", header);
var cpp = string.Format("{0}.cpp", Driver.Options.InlinesLibraryName);
var path = Path.Combine(Driver.Options.OutputDir, cpp);

Loading…
Cancel
Save