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
return !AlreadyVisited(decl); return !AlreadyVisited(decl);
} }
public virtual bool VisitTranslationUnit(TranslationUnit unit)
{
if (!VisitDeclaration(unit))
return false;
return VisitDeclarationContext(unit);
}
public virtual bool VisitClassDecl(Class @class) public virtual bool VisitClassDecl(Class @class)
{ {
if (!VisitDeclarationContext(@class)) if (!VisitDeclarationContext(@class))

5
src/AST/CppTypePrinter.cs

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

1
src/AST/Declaration.cs

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

7
src/AST/TranslationUnit.cs

@ -6,7 +6,7 @@ using System.IO;
namespace CppSharp.AST namespace CppSharp.AST
{ {
/// <summary> /// <summary>
/// Represents a parsed C++ unit. /// Represents a source code unit.
/// </summary> /// </summary>
[DebuggerDisplay("File = {FileName}, Ignored = {Ignore}")] [DebuggerDisplay("File = {FileName}, Ignored = {Ignore}")]
public class TranslationUnit : Namespace public class TranslationUnit : Namespace
@ -84,5 +84,10 @@ namespace CppSharp.AST
} }
private WeakReference module; 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
throw new System.NotImplementedException(); throw new System.NotImplementedException();
} }
public bool VisitTranslationUnit(TranslationUnit unit)
{
throw new System.NotImplementedException();
}
public bool VisitClassDecl(Class @class) public bool VisitClassDecl(Class @class)
{ {
throw new System.NotImplementedException(); throw new System.NotImplementedException();

5
src/Generator/Generators/CodeGenerator.cs

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

5
src/Generator/Generators/TypePrinter.cs

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

2
src/Generator/Passes/Pass.cs

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

Loading…
Cancel
Save