Browse Source

Add initial block visitor to GeneratorOutputPass.

pull/1514/head
Joao Matos 5 years ago committed by João Matos
parent
commit
aff13e4366
  1. 71
      src/Generator/Passes/Pass.cs
  2. 2
      src/Generator/Utils/BlockGenerator.cs

71
src/Generator/Passes/Pass.cs

@ -58,9 +58,78 @@ namespace CppSharp.Passes
{ {
public IDiagnostics Log { get; set; } 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) 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)
{
} }
} }
} }

2
src/Generator/Utils/BlockGenerator.cs

@ -24,6 +24,7 @@ namespace CppSharp
Footer, Footer,
Usings, Usings,
Namespace, Namespace,
TranslationUnit,
Enum, Enum,
EnumItem, EnumItem,
Typedef, Typedef,
@ -52,6 +53,7 @@ namespace CppSharp
Destructor, Destructor,
AccessSpecifier, AccessSpecifier,
Fields, Fields,
Constructor,
ConstructorBody, ConstructorBody,
DestructorBody, DestructorBody,
FinalizerBody FinalizerBody

Loading…
Cancel
Save