From 2480a551b5e014a5c0fcec96b7df72f056832465 Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Mon, 8 Aug 2016 14:58:39 +0300 Subject: [PATCH] Removed unsupported template specialisations from the generated C++ library with templates. Signed-off-by: Dimitar Dobrev --- .../Passes/GenerateTemplatesCodePass.cs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/Generator/Passes/GenerateTemplatesCodePass.cs b/src/Generator/Passes/GenerateTemplatesCodePass.cs index 4be888a7..ee73294a 100644 --- a/src/Generator/Passes/GenerateTemplatesCodePass.cs +++ b/src/Generator/Passes/GenerateTemplatesCodePass.cs @@ -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))