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

Loading…
Cancel
Save