Browse Source

Removed unsupported template specialisations from the generated C++ library with templates.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/696/head
Dimitar Dobrev 10 years ago
parent
commit
2480a551b5
  1. 19
      src/Generator/Passes/GenerateTemplatesCodePass.cs

19
src/Generator/Passes/GenerateTemplatesCodePass.cs

@ -15,17 +15,18 @@ namespace CppSharp.Passes @@ -15,17 +15,18 @@ namespace CppSharp.Passes
return true;
}
public override bool VisitClassTemplateSpecializationDecl(ClassTemplateSpecialization specialization)
public override bool VisitClassDecl(Class @class)
{
if (!specialization.IsDependent &&
(!specialization.TranslationUnit.IsSystemHeader ||
!specialization.Ignore))
if (!base.VisitClassDecl(@class) || !@class.IsDependent)
return false;
var cppTypePrinter = new CppTypePrinter
{
PrintScopeKind = CppTypePrintScopeKind.Qualified,
PrintLogicalNames = true
};
foreach (var specialization in @class.Specializations.Where(s => !s.IsDependent && !s.Ignore))
{
var cppTypePrinter = new CppTypePrinter
{
PrintScopeKind = CppTypePrintScopeKind.Qualified,
PrintLogicalNames = true
};
var cppCode = specialization.Visit(cppTypePrinter);
var module = specialization.TranslationUnit.Module;
if (templateInstantiations.ContainsKey(module))

Loading…
Cancel
Save