From aff13e43667a9ef65719680e99b7d89b51a798d2 Mon Sep 17 00:00:00 2001 From: Joao Matos Date: Tue, 17 Nov 2020 23:38:45 +0000 Subject: [PATCH] Add initial block visitor to GeneratorOutputPass. --- src/Generator/Passes/Pass.cs | 71 ++++++++++++++++++++++++++- src/Generator/Utils/BlockGenerator.cs | 2 + 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/src/Generator/Passes/Pass.cs b/src/Generator/Passes/Pass.cs index c2872f10..ad609ab0 100644 --- a/src/Generator/Passes/Pass.cs +++ b/src/Generator/Passes/Pass.cs @@ -58,9 +58,78 @@ namespace CppSharp.Passes { public IDiagnostics Log { get; set; } + public virtual void HandleBlock(Block block) + { + switch(block.Kind) + { + case BlockKind.Class: + VisitClass(block); + break; + case BlockKind.Method: + VisitMethod(block); + break; + case BlockKind.Constructor: + VisitConstructor(block); + break; + case BlockKind.ConstructorBody: + VisitConstructorBody(block); + break; + case BlockKind.Namespace: + VisitNamespace(block); + break; + case BlockKind.Includes: + VisitIncludes(block); + break; + } + + foreach (var childBlock in block.Blocks) + HandleBlock(childBlock); + } + + public virtual void VisitCodeGenerator(CodeGenerator generator) + { + foreach (var block in generator.ActiveBlock.Blocks) + { + HandleBlock(block); + } + } + public virtual void VisitGeneratorOutput(GeneratorOutput output) { - + foreach (var generator in output.Outputs) + { + VisitCodeGenerator(generator); + } + } + + public virtual void VisitClass(Block block) + { + + } + + public virtual void VisitNamespace(Block block) + { + + } + + public virtual void VisitMethod(Block block) + { + + } + + public virtual void VisitConstructor(Block block) + { + + } + + public virtual void VisitConstructorBody(Block block) + { + + } + + public virtual void VisitIncludes(Block block) + { + } } } diff --git a/src/Generator/Utils/BlockGenerator.cs b/src/Generator/Utils/BlockGenerator.cs index 6087ae40..c1a1f1d1 100644 --- a/src/Generator/Utils/BlockGenerator.cs +++ b/src/Generator/Utils/BlockGenerator.cs @@ -24,6 +24,7 @@ namespace CppSharp Footer, Usings, Namespace, + TranslationUnit, Enum, EnumItem, Typedef, @@ -52,6 +53,7 @@ namespace CppSharp Destructor, AccessSpecifier, Fields, + Constructor, ConstructorBody, DestructorBody, FinalizerBody