From 17d06ac0e597a976f38bdeb5115defe790a11347 Mon Sep 17 00:00:00 2001 From: Joao Matos Date: Fri, 3 Feb 2017 17:56:03 +0000 Subject: [PATCH] Port class handling to visitor model in C# generator. --- src/Generator/Generators/CSharp/CSharpSources.cs | 12 +++++++----- src/Generator/Generators/CodeTemplate.cs | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Generator/Generators/CSharp/CSharpSources.cs b/src/Generator/Generators/CSharp/CSharpSources.cs index 266e24fa..ece834f9 100644 --- a/src/Generator/Generators/CSharp/CSharpSources.cs +++ b/src/Generator/Generators/CSharp/CSharpSources.cs @@ -253,7 +253,7 @@ namespace CppSharp.Generators.CSharp if (!@class.IsDependent) { - GenerateClass(@class); + @class.Visit(this); continue; } @@ -355,7 +355,7 @@ namespace CppSharp.Generators.CSharp if (specialization.Ignore) GenerateClassInternals(specialization); else - GenerateClass(specialization); + specialization.Visit(this); } foreach (var nestedClass in classTemplate.Classes) @@ -441,10 +441,10 @@ namespace CppSharp.Generators.CSharp #region Classes - public void GenerateClass(Class @class) + public override bool VisitClassDecl(Class @class) { if (@class.IsIncomplete) - return; + return false; foreach (var nestedTemplate in @class.Classes.Where(c => !c.IsIncomplete && c.IsDependent)) GenerateClassTemplateSpecializationInternal(nestedTemplate); @@ -476,7 +476,7 @@ namespace CppSharp.Generators.CSharp if (!@class.IsAbstractImpl) GenerateClassInternals(@class); - @class.Visit(this); + VisitDeclContext(@class); if (@class.IsDependent || !@class.IsGenerated) goto exit; @@ -527,6 +527,8 @@ namespace CppSharp.Generators.CSharp if (typeMap != null) Context.TypeMaps.TypeMaps.Add(key, typeMap); + + return true; } private void GenerateInterface(Class @class) diff --git a/src/Generator/Generators/CodeTemplate.cs b/src/Generator/Generators/CodeTemplate.cs index fc4a63b5..7cd1c1b1 100644 --- a/src/Generator/Generators/CodeTemplate.cs +++ b/src/Generator/Generators/CodeTemplate.cs @@ -135,7 +135,7 @@ namespace CppSharp.Generators public virtual bool VisitClassTemplateSpecializationDecl(ClassTemplateSpecialization specialization) { - throw new NotImplementedException(); + return VisitClassDecl(specialization); } public virtual bool VisitFunctionTemplateDecl(FunctionTemplate template)