Browse Source

Fix AST Converter missing conversion data

pull/1918/head
duckdoom5 4 months ago
parent
commit
c09b1a56db
  1. 363
      src/Parser/ASTConverter.cs

363
src/Parser/ASTConverter.cs

@ -41,100 +41,100 @@ namespace CppSharp
switch (type.Kind) switch (type.Kind)
{ {
case TypeKind.Tag: case TypeKind.Tag:
{ {
var _type = TagType.__CreateInstance(type.__Instance); var _type = TagType.__CreateInstance(type.__Instance);
return VisitTag(_type); return VisitTag(_type);
} }
case TypeKind.Array: case TypeKind.Array:
{ {
var _type = ArrayType.__CreateInstance(type.__Instance); var _type = ArrayType.__CreateInstance(type.__Instance);
return VisitArray(_type); return VisitArray(_type);
} }
case TypeKind.Function: case TypeKind.Function:
{ {
var _type = FunctionType.__CreateInstance(type.__Instance); var _type = FunctionType.__CreateInstance(type.__Instance);
return VisitFunction(_type); return VisitFunction(_type);
} }
case TypeKind.Pointer: case TypeKind.Pointer:
{ {
var _type = PointerType.__CreateInstance(type.__Instance); var _type = PointerType.__CreateInstance(type.__Instance);
return VisitPointer(_type); return VisitPointer(_type);
} }
case TypeKind.MemberPointer: case TypeKind.MemberPointer:
{ {
var _type = MemberPointerType.__CreateInstance(type.__Instance); var _type = MemberPointerType.__CreateInstance(type.__Instance);
return VisitMemberPointer(_type); return VisitMemberPointer(_type);
} }
case TypeKind.Typedef: case TypeKind.Typedef:
{ {
var _type = TypedefType.__CreateInstance(type.__Instance); var _type = TypedefType.__CreateInstance(type.__Instance);
return VisitTypedef(_type); return VisitTypedef(_type);
} }
case TypeKind.Attributed: case TypeKind.Attributed:
{ {
var _type = AttributedType.__CreateInstance(type.__Instance); var _type = AttributedType.__CreateInstance(type.__Instance);
return VisitAttributed(_type); return VisitAttributed(_type);
} }
case TypeKind.Decayed: case TypeKind.Decayed:
{ {
var _type = DecayedType.__CreateInstance(type.__Instance); var _type = DecayedType.__CreateInstance(type.__Instance);
return VisitDecayed(_type); return VisitDecayed(_type);
} }
case TypeKind.TemplateSpecialization: case TypeKind.TemplateSpecialization:
{ {
var _type = TemplateSpecializationType.__CreateInstance(type.__Instance); var _type = TemplateSpecializationType.__CreateInstance(type.__Instance);
return VisitTemplateSpecialization(_type); return VisitTemplateSpecialization(_type);
} }
case TypeKind.DependentTemplateSpecialization: case TypeKind.DependentTemplateSpecialization:
{ {
var _type = DependentTemplateSpecializationType.__CreateInstance(type.__Instance); var _type = DependentTemplateSpecializationType.__CreateInstance(type.__Instance);
return VisitDependentTemplateSpecialization(_type); return VisitDependentTemplateSpecialization(_type);
} }
case TypeKind.TemplateParameter: case TypeKind.TemplateParameter:
{ {
var _type = TemplateParameterType.__CreateInstance(type.__Instance); var _type = TemplateParameterType.__CreateInstance(type.__Instance);
return VisitTemplateParameter(_type); return VisitTemplateParameter(_type);
} }
case TypeKind.TemplateParameterSubstitution: case TypeKind.TemplateParameterSubstitution:
{ {
var _type = TemplateParameterSubstitutionType.__CreateInstance(type.__Instance); var _type = TemplateParameterSubstitutionType.__CreateInstance(type.__Instance);
return VisitTemplateParameterSubstitution(_type); return VisitTemplateParameterSubstitution(_type);
} }
case TypeKind.InjectedClassName: case TypeKind.InjectedClassName:
{ {
var _type = InjectedClassNameType.__CreateInstance(type.__Instance); var _type = InjectedClassNameType.__CreateInstance(type.__Instance);
return VisitInjectedClassName(_type); return VisitInjectedClassName(_type);
} }
case TypeKind.DependentName: case TypeKind.DependentName:
{ {
var _type = DependentNameType.__CreateInstance(type.__Instance); var _type = DependentNameType.__CreateInstance(type.__Instance);
return VisitDependentName(_type); return VisitDependentName(_type);
} }
case TypeKind.Builtin: case TypeKind.Builtin:
{ {
var _type = BuiltinType.__CreateInstance(type.__Instance); var _type = BuiltinType.__CreateInstance(type.__Instance);
return VisitBuiltin(_type); return VisitBuiltin(_type);
} }
case TypeKind.PackExpansion: case TypeKind.PackExpansion:
{ {
var _type = PackExpansionType.__CreateInstance(type.__Instance); var _type = PackExpansionType.__CreateInstance(type.__Instance);
return VisitPackExpansion(_type); return VisitPackExpansion(_type);
} }
case TypeKind.UnaryTransform: case TypeKind.UnaryTransform:
{ {
var _type = UnaryTransformType.__CreateInstance(type.__Instance); var _type = UnaryTransformType.__CreateInstance(type.__Instance);
return VisitUnaryTransform(_type); return VisitUnaryTransform(_type);
} }
case TypeKind.UnresolvedUsing: case TypeKind.UnresolvedUsing:
{ {
var _type = UnresolvedUsingType.__CreateInstance(type.__Instance); var _type = UnresolvedUsingType.__CreateInstance(type.__Instance);
return VisitUnresolvedUsing(_type); return VisitUnresolvedUsing(_type);
} }
case TypeKind.Vector: case TypeKind.Vector:
{ {
var _type = VectorType.__CreateInstance(type.__Instance); var _type = VectorType.__CreateInstance(type.__Instance);
return VisitVector(_type); return VisitVector(_type);
} }
} }
throw new ArgumentOutOfRangeException(); throw new ArgumentOutOfRangeException();
@ -182,135 +182,135 @@ namespace CppSharp
switch (decl.Kind) switch (decl.Kind)
{ {
case DeclarationKind.TranslationUnit: case DeclarationKind.TranslationUnit:
{ {
var _decl = TranslationUnit.__CreateInstance(decl.__Instance); var _decl = TranslationUnit.__CreateInstance(decl.__Instance);
return VisitTranslationUnit(_decl); return VisitTranslationUnit(_decl);
} }
case DeclarationKind.Namespace: case DeclarationKind.Namespace:
{ {
var _decl = Namespace.__CreateInstance(decl.__Instance); var _decl = Namespace.__CreateInstance(decl.__Instance);
return VisitNamespace(_decl); return VisitNamespace(_decl);
} }
case DeclarationKind.Typedef: case DeclarationKind.Typedef:
{ {
var _decl = TypedefDecl.__CreateInstance(decl.__Instance); var _decl = TypedefDecl.__CreateInstance(decl.__Instance);
return VisitTypedef(_decl); return VisitTypedef(_decl);
} }
case DeclarationKind.TypeAlias: case DeclarationKind.TypeAlias:
{ {
var _decl = TypeAlias.__CreateInstance(decl.__Instance); var _decl = TypeAlias.__CreateInstance(decl.__Instance);
return VisitTypeAlias(_decl); return VisitTypeAlias(_decl);
} }
case DeclarationKind.Parameter: case DeclarationKind.Parameter:
{ {
var _decl = Parameter.__CreateInstance(decl.__Instance); var _decl = Parameter.__CreateInstance(decl.__Instance);
return VisitParameter(_decl); return VisitParameter(_decl);
} }
case DeclarationKind.Function: case DeclarationKind.Function:
{ {
var _decl = Function.__CreateInstance(decl.__Instance); var _decl = Function.__CreateInstance(decl.__Instance);
return VisitFunction(_decl); return VisitFunction(_decl);
} }
case DeclarationKind.Method: case DeclarationKind.Method:
{ {
var _decl = Method.__CreateInstance(decl.__Instance); var _decl = Method.__CreateInstance(decl.__Instance);
return VisitMethod(_decl); return VisitMethod(_decl);
} }
case DeclarationKind.Enumeration: case DeclarationKind.Enumeration:
{ {
var _decl = Enumeration.__CreateInstance(decl.__Instance); var _decl = Enumeration.__CreateInstance(decl.__Instance);
return VisitEnumeration(_decl); return VisitEnumeration(_decl);
} }
case DeclarationKind.EnumerationItem: case DeclarationKind.EnumerationItem:
{ {
var _decl = Enumeration.Item.__CreateInstance(decl.__Instance); var _decl = Enumeration.Item.__CreateInstance(decl.__Instance);
return VisitEnumerationItem(_decl); return VisitEnumerationItem(_decl);
} }
case DeclarationKind.Variable: case DeclarationKind.Variable:
{ {
var _decl = Variable.__CreateInstance(decl.__Instance); var _decl = Variable.__CreateInstance(decl.__Instance);
return VisitVariable(_decl); return VisitVariable(_decl);
} }
case DeclarationKind.VarTemplate: case DeclarationKind.VarTemplate:
{ {
var _decl = VarTemplate.__CreateInstance(decl.__Instance); var _decl = VarTemplate.__CreateInstance(decl.__Instance);
return VisitVarTemplate(_decl); return VisitVarTemplate(_decl);
} }
case DeclarationKind.VarTemplateSpecialization: case DeclarationKind.VarTemplateSpecialization:
{ {
var _decl = VarTemplateSpecialization.__CreateInstance(decl.__Instance); var _decl = VarTemplateSpecialization.__CreateInstance(decl.__Instance);
return VisitVarTemplateSpecialization(_decl); return VisitVarTemplateSpecialization(_decl);
} }
case DeclarationKind.VarTemplatePartialSpecialization: case DeclarationKind.VarTemplatePartialSpecialization:
{ {
var _decl = VarTemplatePartialSpecialization.__CreateInstance(decl.__Instance); var _decl = VarTemplatePartialSpecialization.__CreateInstance(decl.__Instance);
return VisitVarTemplatePartialSpecialization(_decl); return VisitVarTemplatePartialSpecialization(_decl);
} }
case DeclarationKind.Friend: case DeclarationKind.Friend:
{ {
var _decl = Friend.__CreateInstance(decl.__Instance); var _decl = Friend.__CreateInstance(decl.__Instance);
return VisitFriend(_decl); return VisitFriend(_decl);
} }
case DeclarationKind.Field: case DeclarationKind.Field:
{ {
var _decl = Field.__CreateInstance(decl.__Instance); var _decl = Field.__CreateInstance(decl.__Instance);
return VisitField(_decl); return VisitField(_decl);
} }
case DeclarationKind.AccessSpecifier: case DeclarationKind.AccessSpecifier:
{ {
var _decl = AccessSpecifierDecl.__CreateInstance(decl.__Instance); var _decl = AccessSpecifierDecl.__CreateInstance(decl.__Instance);
return VisitAccessSpecifier(_decl); return VisitAccessSpecifier(_decl);
} }
case DeclarationKind.Class: case DeclarationKind.Class:
{ {
var _decl = Class.__CreateInstance(decl.__Instance); var _decl = Class.__CreateInstance(decl.__Instance);
return VisitClass(_decl); return VisitClass(_decl);
} }
case DeclarationKind.ClassTemplate: case DeclarationKind.ClassTemplate:
{ {
var _decl = ClassTemplate.__CreateInstance(decl.__Instance); var _decl = ClassTemplate.__CreateInstance(decl.__Instance);
return VisitClassTemplate(_decl); return VisitClassTemplate(_decl);
} }
case DeclarationKind.ClassTemplateSpecialization: case DeclarationKind.ClassTemplateSpecialization:
{ {
var _decl = ClassTemplateSpecialization.__CreateInstance(decl.__Instance); var _decl = ClassTemplateSpecialization.__CreateInstance(decl.__Instance);
return VisitClassTemplateSpecialization(_decl); return VisitClassTemplateSpecialization(_decl);
} }
case DeclarationKind.ClassTemplatePartialSpecialization: case DeclarationKind.ClassTemplatePartialSpecialization:
{ {
var _decl = ClassTemplatePartialSpecialization.__CreateInstance(decl.__Instance); var _decl = ClassTemplatePartialSpecialization.__CreateInstance(decl.__Instance);
return VisitClassTemplatePartialSpecialization(_decl); return VisitClassTemplatePartialSpecialization(_decl);
} }
case DeclarationKind.FunctionTemplate: case DeclarationKind.FunctionTemplate:
{ {
var _decl = FunctionTemplate.__CreateInstance(decl.__Instance); var _decl = FunctionTemplate.__CreateInstance(decl.__Instance);
return VisitFunctionTemplate(_decl); return VisitFunctionTemplate(_decl);
} }
case DeclarationKind.TypeAliasTemplate: case DeclarationKind.TypeAliasTemplate:
{ {
var _decl = TypeAliasTemplate.__CreateInstance(decl.__Instance); var _decl = TypeAliasTemplate.__CreateInstance(decl.__Instance);
return VisitTypeAliasTemplate(_decl); return VisitTypeAliasTemplate(_decl);
} }
case DeclarationKind.TemplateTemplateParm: case DeclarationKind.TemplateTemplateParm:
{ {
var _decl = TemplateTemplateParameter.__CreateInstance(decl.__Instance); var _decl = TemplateTemplateParameter.__CreateInstance(decl.__Instance);
return VisitTemplateTemplateParameter(_decl); return VisitTemplateTemplateParameter(_decl);
} }
case DeclarationKind.TemplateTypeParm: case DeclarationKind.TemplateTypeParm:
{ {
var _decl = TypeTemplateParameter.__CreateInstance(decl.__Instance); var _decl = TypeTemplateParameter.__CreateInstance(decl.__Instance);
return VisitTypeTemplateParameter(_decl); return VisitTypeTemplateParameter(_decl);
} }
case DeclarationKind.NonTypeTemplateParm: case DeclarationKind.NonTypeTemplateParm:
{ {
var _decl = NonTypeTemplateParameter.__CreateInstance(decl.__Instance); var _decl = NonTypeTemplateParameter.__CreateInstance(decl.__Instance);
return VisitNonTypeTemplateParameter(_decl); return VisitNonTypeTemplateParameter(_decl);
} }
case DeclarationKind.UnresolvedUsingTypename: case DeclarationKind.UnresolvedUsingTypename:
{ {
var _decl = UnresolvedUsingTypename.__CreateInstance(decl.__Instance); var _decl = UnresolvedUsingTypename.__CreateInstance(decl.__Instance);
return VisitUnresolvedUsingTypename(_decl); return VisitUnresolvedUsingTypename(_decl);
} }
} }
throw new ArgumentOutOfRangeException(); throw new ArgumentOutOfRangeException();
@ -1833,6 +1833,8 @@ namespace CppSharp
var _spec = (AST.ClassTemplateSpecialization)Visit(spec); var _spec = (AST.ClassTemplateSpecialization)Visit(spec);
_decl.Specializations.Add(_spec); _decl.Specializations.Add(_spec);
} }
_decl.TemplatedClass.TemplateParameters.AddRange(_decl.Parameters);
_decl.TemplatedClass.Specializations.AddRange(_decl.Specializations);
return _decl; return _decl;
} }
@ -1927,6 +1929,7 @@ namespace CppSharp
var _param = Visit(param); var _param = Visit(param);
_decl.Parameters.Add(_param); _decl.Parameters.Add(_param);
} }
_decl.TemplateParameters.AddRange(_decl.TemplatedDecl.Parameters);
return _decl; return _decl;
} }

Loading…
Cancel
Save