Browse Source

Added a new pass to check for type references.

pull/1/head
triton 13 years ago
parent
commit
bafbbaf90b
  1. 1
      src/Generator/Driver.cs
  2. 22
      src/Generator/Passes/CheckTypeReferencesPass.cs
  3. 12
      src/Generator/Passes/CleanInvalidDeclNamesPass.cs

1
src/Generator/Driver.cs

@ -88,6 +88,7 @@ namespace Cxxi
passes.CleanUnit(Options); passes.CleanUnit(Options);
passes.SortDeclarations(); passes.SortDeclarations();
passes.ResolveIncompleteDecls(TypeDatabase); passes.ResolveIncompleteDecls(TypeDatabase);
passes.CheckTypeReferences();
passes.CheckFlagEnums(); passes.CheckFlagEnums();
if (Transform != null) if (Transform != null)

22
src/Generator/Passes/CheckTypeReferencesPass.cs

@ -0,0 +1,22 @@
namespace Cxxi.Passes
{
public class CheckTypeReferencesPass : TranslationUnitPass
{
TypeRefsVisitor typeRefs;
public override bool VisitTranslationUnit(TranslationUnit unit)
{
typeRefs = new TypeRefsVisitor();
return typeRefs.VisitTranslationUnit(unit);
}
}
public static class CheckTypeReferencesExtensions
{
public static void CheckTypeReferences(this PassBuilder builder)
{
var pass = new CheckTypeReferencesPass();
builder.AddPass(pass);
}
}
}

12
src/Generator/Passes/CleanInvalidDeclNamesPass.cs

@ -1,5 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
namespace Cxxi.Passes namespace Cxxi.Passes
@ -7,19 +6,9 @@ namespace Cxxi.Passes
public class CleanInvalidDeclNamesPass : TranslationUnitPass public class CleanInvalidDeclNamesPass : TranslationUnitPass
{ {
private int uniqueName; private int uniqueName;
private TypeRefsVisitor typeRefs;
public CleanInvalidDeclNamesPass() public CleanInvalidDeclNamesPass()
{ {
typeRefs = new TypeRefsVisitor();
}
public override bool VisitTranslationUnit(TranslationUnit unit)
{
typeRefs = new TypeRefsVisitor();
unit.TypeReferences = typeRefs;
return base.VisitTranslationUnit(unit);
} }
string CheckName(string name) string CheckName(string name)
@ -39,7 +28,6 @@ namespace Cxxi.Passes
public override bool VisitDeclaration(Declaration decl) public override bool VisitDeclaration(Declaration decl)
{ {
typeRefs.Process(decl);
decl.Name = CheckName(decl.Name); decl.Name = CheckName(decl.Name);
StringHelpers.CleanupText(ref decl.DebugText); StringHelpers.CleanupText(ref decl.DebugText);

Loading…
Cancel
Save