From ea114f8ba073188991df2bee63e2d12b81bb1607 Mon Sep 17 00:00:00 2001 From: triton Date: Tue, 22 Jan 2013 18:42:42 +0000 Subject: [PATCH] Added preliminary support for class template specialization in the bridge AST. --- src/Bridge/Template.cs | 5 +++++ src/Parser/Parser.cpp | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/Bridge/Template.cs b/src/Bridge/Template.cs index 8de79610..fe599775 100644 --- a/src/Bridge/Template.cs +++ b/src/Bridge/Template.cs @@ -37,6 +37,11 @@ namespace Cxxi } } + public class ClassTemplateSpecialization : Class + { + public ClassTemplate TemplatedDecl; + } + public class FunctionTemplate : Template { public FunctionTemplate(Declaration decl) diff --git a/src/Parser/Parser.cpp b/src/Parser/Parser.cpp index 93a4bc54..e855f658 100644 --- a/src/Parser/Parser.cpp +++ b/src/Parser/Parser.cpp @@ -1226,6 +1226,7 @@ Cxxi::Declaration^ Parser::WalkDeclaration(clang::Decl* D, clang::TypeLoc* TL, if (CanBeDefinition && Class->DefinitionOrder == 0) { Class->DefinitionOrder = Index++; + //Debug("%d: %s\n", Index++, GetTagDeclName(RD).c_str()); } Decl = Class; @@ -1245,6 +1246,16 @@ Cxxi::Declaration^ Parser::WalkDeclaration(clang::Decl* D, clang::TypeLoc* TL, break; } + case Decl::ClassTemplateSpecialization: + { + auto TS = cast(D); + + auto CT = gcnew Cxxi::ClassTemplateSpecialization(); + + Decl = CT; + + break; + } case Decl::FunctionTemplate: { FunctionTemplateDecl* TD = cast(D);