Browse Source

Extracted the logic for getting wrapped units.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/661/head
Dimitar Dobrev 10 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
return hasRefBase; 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
} }
new CleanUnitPass(options).VisitLibrary(driver.ASTContext); 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) if (!options.Quiet)
Log.Message("Processing code..."); Log.Message("Processing code...");

6
src/Generator/Generator.cs

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

3
src/Generator/Passes/DelegatesPass.cs

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

Loading…
Cancel
Save