Browse Source

Added a visitor overload for translation units.

pull/769/head
Joao Matos 9 years ago
parent
commit
89a31730fc
  1. 8
      src/AST/ASTVisitor.cs
  2. 5
      src/AST/CppTypePrinter.cs
  3. 1
      src/AST/Declaration.cs
  4. 7
      src/AST/TranslationUnit.cs
  5. 5
      src/Generator.Tests/AST/TestAST.cs
  6. 5
      src/Generator/Generators/CodeGenerator.cs
  7. 5
      src/Generator/Generators/TypePrinter.cs
  8. 2
      src/Generator/Passes/Pass.cs

8
src/AST/ASTVisitor.cs

@ -302,6 +302,14 @@ namespace CppSharp.AST @@ -302,6 +302,14 @@ namespace CppSharp.AST
return !AlreadyVisited(decl);
}
public virtual bool VisitTranslationUnit(TranslationUnit unit)
{
if (!VisitDeclaration(unit))
return false;
return VisitDeclarationContext(unit);
}
public virtual bool VisitClassDecl(Class @class)
{
if (!VisitDeclarationContext(@class))

5
src/AST/CppTypePrinter.cs

@ -316,6 +316,11 @@ namespace CppSharp.AST @@ -316,6 +316,11 @@ namespace CppSharp.AST
return GetDeclName(decl, PrintScopeKind);
}
public string VisitTranslationUnit(TranslationUnit unit)
{
return VisitDeclaration(unit);
}
public virtual string VisitClassDecl(Class @class)
{
return VisitDeclaration(@class);

1
src/AST/Declaration.cs

@ -367,6 +367,7 @@ namespace CppSharp.AST @@ -367,6 +367,7 @@ namespace CppSharp.AST
public interface IDeclVisitor<out T>
{
T VisitDeclaration(Declaration decl);
T VisitTranslationUnit(TranslationUnit unit);
T VisitClassDecl(Class @class);
T VisitFieldDecl(Field field);
T VisitFunctionDecl(Function function);

7
src/AST/TranslationUnit.cs

@ -6,7 +6,7 @@ using System.IO; @@ -6,7 +6,7 @@ using System.IO;
namespace CppSharp.AST
{
/// <summary>
/// Represents a parsed C++ unit.
/// Represents a source code unit.
/// </summary>
[DebuggerDisplay("File = {FileName}, Ignored = {Ignore}")]
public class TranslationUnit : Namespace
@ -84,5 +84,10 @@ namespace CppSharp.AST @@ -84,5 +84,10 @@ namespace CppSharp.AST
}
private WeakReference module;
public override T Visit<T>(IDeclVisitor<T> visitor)
{
return visitor.VisitTranslationUnit(this);
}
}
}

5
src/Generator.Tests/AST/TestAST.cs

@ -82,6 +82,11 @@ namespace CppSharp.Generator.Tests.AST @@ -82,6 +82,11 @@ namespace CppSharp.Generator.Tests.AST
throw new System.NotImplementedException();
}
public bool VisitTranslationUnit(TranslationUnit unit)
{
throw new System.NotImplementedException();
}
public bool VisitClassDecl(Class @class)
{
throw new System.NotImplementedException();

5
src/Generator/Generators/CodeGenerator.cs

@ -56,6 +56,11 @@ namespace CppSharp.Generators @@ -56,6 +56,11 @@ namespace CppSharp.Generators
throw new NotImplementedException();
}
public virtual bool VisitTranslationUnit(TranslationUnit unit)
{
return VisitDeclContext(unit);
}
public virtual bool VisitDeclContext(DeclarationContext context)
{
foreach (var decl in context.Declarations)

5
src/Generator/Generators/TypePrinter.cs

@ -258,6 +258,11 @@ namespace CppSharp.Generators @@ -258,6 +258,11 @@ namespace CppSharp.Generators
throw new NotImplementedException();
}
public virtual TypePrinterResult VisitTranslationUnit(TranslationUnit unit)
{
throw new NotImplementedException();
}
public virtual TypePrinterResult VisitTypeAliasDecl(TypeAlias typeAlias)
{
throw new NotImplementedException();

2
src/Generator/Passes/Pass.cs

@ -26,7 +26,7 @@ namespace CppSharp.Passes @@ -26,7 +26,7 @@ namespace CppSharp.Passes
return true;
}
public virtual bool VisitTranslationUnit(TranslationUnit unit)
public override bool VisitTranslationUnit(TranslationUnit unit)
{
if (!unit.IsValid || unit.Ignore)
return false;

Loading…
Cancel
Save