diff --git a/src/Generator/Types/Types.cs b/src/Generator/Types/Types.cs
index 138c6941..8126b876 100644
--- a/src/Generator/Types/Types.cs
+++ b/src/Generator/Types/Types.cs
@@ -1,134 +1,9 @@
using System.Collections.Generic;
+using Cxxi.Generators;
+using Cxxi.Types;
namespace Cxxi
{
- ///
- /// Base class for type checkers.
- /// You can override the methods to customize the behaviour, by default
- /// this will visit all the nodes in a default way that should be useful
- /// for a lot of applications.
- ///
- public abstract class TypeChecker : ITypeVisitor, IDeclVisitor
- {
- public virtual bool VisitTagType(TagType tag, TypeQualifiers quals)
- {
- return tag.Declaration.Visit(this);
- }
-
- public virtual bool VisitArrayType(ArrayType array, TypeQualifiers quals)
- {
- return array.Type.Visit(this, quals);
- }
-
- public virtual bool VisitFunctionType(FunctionType function, TypeQualifiers quals)
- {
- if (function.ReturnType != null)
- function.ReturnType.Visit(this);
-
- foreach (var param in function.Arguments)
- param.Visit(this);
-
- return true;
- }
-
- public virtual bool VisitPointerType(PointerType pointer, TypeQualifiers quals)
- {
- if (pointer.Pointee == null)
- return false;
- return pointer.Pointee.Visit(this, quals);
- }
-
- public virtual bool VisitMemberPointerType(MemberPointerType member, TypeQualifiers quals)
- {
- return member.Pointee.Visit(this, quals);
- }
-
- public virtual bool VisitBuiltinType(BuiltinType builtin, TypeQualifiers quals)
- {
- return true;
- }
-
- public virtual bool VisitTypedefType(TypedefType typedef, TypeQualifiers quals)
- {
- return typedef.Declaration.Visit(this);
- }
-
- public virtual bool VisitTemplateSpecializationType(TemplateSpecializationType template, TypeQualifiers quals)
- {
- return template.Template.Visit(this);
- }
-
- public virtual bool VisitDeclaration(Declaration decl, TypeQualifiers quals)
- {
- return VisitDeclaration(decl);
- }
-
- public virtual bool VisitDeclaration(Declaration decl)
- {
- return true;
- }
-
- public virtual bool VisitClassDecl(Class @class)
- {
- return VisitDeclaration(@class);
- }
-
- public virtual bool VisitFieldDecl(Field field)
- {
- return field.Type.Visit(this);
- }
-
- public virtual bool VisitFunctionDecl(Function function)
- {
- if (function.ReturnType == null)
- return false;
-
- function.ReturnType.Visit(this);
-
- foreach (var param in function.Parameters)
- param.Visit(this);
-
- return true;
- }
-
- public virtual bool VisitMethodDecl(Method method)
- {
- return VisitFunctionDecl(method);
- }
-
- public virtual bool VisitParameterDecl(Parameter parameter)
- {
- return parameter.Type.Visit(this);
- }
-
- public virtual bool VisitTypedefDecl(TypedefDecl typedef)
- {
- if (typedef.Type == null)
- return false;
- return typedef.Type.Visit(this);
- }
-
- public virtual bool VisitEnumDecl(Enumeration @enum)
- {
- return VisitDeclaration(@enum);
- }
-
- public virtual bool VisitClassTemplateDecl(ClassTemplate template)
- {
- return template.TemplatedClass.Visit(this);
- }
-
- public virtual bool VisitFunctionTemplateDecl(FunctionTemplate template)
- {
- return template.TemplatedFunction.Visit(this);
- }
-
- public virtual bool VisitMacroDefinition(MacroDefinition macro)
- {
- return true;
- }
- }
-
///
/// This type checker is used to check if a type is complete.
///