Browse Source

Extracted the logic for getting wrapped units.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/661/head
Dimitar Dobrev 9 years ago
parent
commit
f8863f941b
  1. 6
      src/AST/ClassExtensions.cs
  2. 2
      src/Generator/Driver.cs
  3. 6
      src/Generator/Generator.cs
  4. 3
      src/Generator/Passes/DelegatesPass.cs

6
src/AST/ClassExtensions.cs

@ -198,5 +198,11 @@ namespace CppSharp.AST @@ -198,5 +198,11 @@ namespace CppSharp.AST
return hasRefBase;
}
public static IEnumerable<TranslationUnit> GetGenerated(this IEnumerable<TranslationUnit> units)
{
return units.Where(u => u.IsValid && !u.IsSystemHeader &&
u.IsGenerated && u.HasDeclarations);
}
}
}

2
src/Generator/Driver.cs

@ -527,7 +527,7 @@ namespace CppSharp @@ -527,7 +527,7 @@ namespace CppSharp
}
new CleanUnitPass(options).VisitLibrary(driver.ASTContext);
options.Modules.RemoveAll(m => m.Units.All(u => u.Declarations.Count == 0));
options.Modules.RemoveAll(m => !m.Units.GetGenerated().Any());
if (!options.Quiet)
Log.Message("Processing code...");

6
src/Generator/Generator.cs

@ -71,8 +71,7 @@ namespace CppSharp.Generators @@ -71,8 +71,7 @@ namespace CppSharp.Generators
{
var outputs = new List<GeneratorOutput>();
var units = Driver.ASTContext.TranslationUnits.Where(
u => u.IsGenerated && u.HasDeclarations && !u.IsSystemHeader && u.IsValid).ToList();
var units = Driver.ASTContext.TranslationUnits.GetGenerated().ToList();
if (Driver.Options.IsCSharpGenerator)
GenerateSingleTemplate(outputs);
else
@ -118,8 +117,7 @@ namespace CppSharp.Generators @@ -118,8 +117,7 @@ namespace CppSharp.Generators
FilePath = string.Format("{0}.cs", module.LibraryName),
Module = module
},
Templates = Generate(module.Units.Where(
u => u.IsGenerated && u.HasDeclarations && !u.IsSystemHeader && u.IsValid))
Templates = Generate(module.Units.GetGenerated())
};
output.Templates[0].Process();
outputs.Add(output);

3
src/Generator/Passes/DelegatesPass.cs

@ -40,8 +40,7 @@ namespace CppSharp.Passes @@ -40,8 +40,7 @@ namespace CppSharp.Passes
foreach (var library in Driver.Options.Modules.SelectMany(m => m.Libraries))
libsDelegates[library] = new Dictionary<string, DelegateDefinition>();
var unit = context.TranslationUnits.LastOrDefault(u => u.IsValid && u.IsGenerated &&
u.HasDeclarations);
var unit = context.TranslationUnits.GetGenerated().LastOrDefault();
if (unit == null)
return false;

Loading…
Cancel
Save