Browse Source

Fixed InjectedClassNameType layout in the AST.

* Template specialization member is now a pointer so null value works properly
pull/254/merge
triton 11 years ago
parent
commit
f49aa2f3ef
  1. 8
      src/CppParser/AST.cpp
  2. 2
      src/CppParser/AST.h
  3. 4
      src/CppParser/Bindings/CLI/AST.cpp
  4. 19
      src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/AST.cs
  5. 19
      src/CppParser/Bindings/CSharp/i686-pc-win32/AST.cs

8
src/CppParser/AST.cpp

@ -87,8 +87,12 @@ TemplateParameterType::TemplateParameterType() : Type(TypeKind::TemplateParamete @@ -87,8 +87,12 @@ TemplateParameterType::TemplateParameterType() : Type(TypeKind::TemplateParamete
TemplateParameterSubstitutionType::TemplateParameterSubstitutionType()
: Type(TypeKind::TemplateParameterSubstitution) {}
InjectedClassNameType::InjectedClassNameType() : Type(TypeKind::InjectedClassName),
Class(0) {}
InjectedClassNameType::InjectedClassNameType()
: Type(TypeKind::InjectedClassName)
, TemplateSpecialization(0)
, Class(0)
{
}
DependentNameType::DependentNameType() : Type(TypeKind::DependentName) {}

2
src/CppParser/AST.h

@ -214,7 +214,7 @@ struct Class; @@ -214,7 +214,7 @@ struct Class;
struct CS_API InjectedClassNameType : public Type
{
InjectedClassNameType();
TemplateSpecializationType TemplateSpecialization;
TemplateSpecializationType* TemplateSpecialization;
CppSharp::CppParser::AST::Class* Class;
};

4
src/CppParser/Bindings/CLI/AST.cpp

@ -740,12 +740,12 @@ CppSharp::Parser::AST::InjectedClassNameType::InjectedClassNameType() @@ -740,12 +740,12 @@ CppSharp::Parser::AST::InjectedClassNameType::InjectedClassNameType()
CppSharp::Parser::AST::TemplateSpecializationType^ CppSharp::Parser::AST::InjectedClassNameType::TemplateSpecialization::get()
{
return (&((::CppSharp::CppParser::AST::InjectedClassNameType*)NativePtr)->TemplateSpecialization == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::TemplateSpecializationType((::CppSharp::CppParser::AST::TemplateSpecializationType*)&((::CppSharp::CppParser::AST::InjectedClassNameType*)NativePtr)->TemplateSpecialization);
return (((::CppSharp::CppParser::AST::InjectedClassNameType*)NativePtr)->TemplateSpecialization == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::TemplateSpecializationType((::CppSharp::CppParser::AST::TemplateSpecializationType*)((::CppSharp::CppParser::AST::InjectedClassNameType*)NativePtr)->TemplateSpecialization);
}
void CppSharp::Parser::AST::InjectedClassNameType::TemplateSpecialization::set(CppSharp::Parser::AST::TemplateSpecializationType^ value)
{
((::CppSharp::CppParser::AST::InjectedClassNameType*)NativePtr)->TemplateSpecialization = *(::CppSharp::CppParser::AST::TemplateSpecializationType*)value->NativePtr;
((::CppSharp::CppParser::AST::InjectedClassNameType*)NativePtr)->TemplateSpecialization = (::CppSharp::CppParser::AST::TemplateSpecializationType*)value->NativePtr;
}
CppSharp::Parser::AST::Class^ CppSharp::Parser::AST::InjectedClassNameType::Class::get()

19
src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/AST.cs

@ -1818,7 +1818,7 @@ namespace CppSharp @@ -1818,7 +1818,7 @@ namespace CppSharp
public unsafe partial class InjectedClassNameType : CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 40)]
[StructLayout(LayoutKind.Explicit, Size = 16)]
public new struct Internal
{
[FieldOffset(0)]
@ -1828,9 +1828,9 @@ namespace CppSharp @@ -1828,9 +1828,9 @@ namespace CppSharp
public bool IsDependent;
[FieldOffset(8)]
public CppSharp.Parser.AST.TemplateSpecializationType.Internal TemplateSpecialization;
public global::System.IntPtr TemplateSpecialization;
[FieldOffset(36)]
[FieldOffset(12)]
public global::System.IntPtr Class;
[SuppressUnmanagedCodeSecurity]
@ -1842,11 +1842,6 @@ namespace CppSharp @@ -1842,11 +1842,6 @@ namespace CppSharp
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST21InjectedClassNameTypeC2ERKS2_")]
internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST21InjectedClassNameTypeD2Ev")]
internal static extern void dtor_0(global::System.IntPtr instance);
}
internal InjectedClassNameType(InjectedClassNameType.Internal* native)
@ -1867,7 +1862,7 @@ namespace CppSharp @@ -1867,7 +1862,7 @@ namespace CppSharp
public InjectedClassNameType()
: this(IntPtr.Zero)
{
__Instance = Marshal.AllocHGlobal(40);
__Instance = Marshal.AllocHGlobal(16);
Internal.ctor_0(__Instance);
}
@ -1881,15 +1876,13 @@ namespace CppSharp @@ -1881,15 +1876,13 @@ namespace CppSharp
get
{
var __ptr = (Internal*)__Instance.ToPointer();
var __instance = Marshal.AllocHGlobal(28);
CppSharp.Parser.AST.TemplateSpecializationType.Internal.cctor_1(__instance, new global::System.IntPtr(&__ptr->TemplateSpecialization));
return (__instance == IntPtr.Zero) ? null : new CppSharp.Parser.AST.TemplateSpecializationType(__instance);
return (__ptr->TemplateSpecialization == IntPtr.Zero) ? null : new CppSharp.Parser.AST.TemplateSpecializationType(__ptr->TemplateSpecialization);
}
set
{
var __ptr = (Internal*)__Instance.ToPointer();
__ptr->TemplateSpecialization = ReferenceEquals(value, null) ? new CppSharp.Parser.AST.TemplateSpecializationType.Internal() : *(CppSharp.Parser.AST.TemplateSpecializationType.Internal*) (value.__Instance);
__ptr->TemplateSpecialization = value == (CppSharp.Parser.AST.TemplateSpecializationType) null ? global::System.IntPtr.Zero : value.__Instance;
}
}

19
src/CppParser/Bindings/CSharp/i686-pc-win32/AST.cs

@ -1818,7 +1818,7 @@ namespace CppSharp @@ -1818,7 +1818,7 @@ namespace CppSharp
public unsafe partial class InjectedClassNameType : CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 40)]
[StructLayout(LayoutKind.Explicit, Size = 16)]
public new struct Internal
{
[FieldOffset(0)]
@ -1828,9 +1828,9 @@ namespace CppSharp @@ -1828,9 +1828,9 @@ namespace CppSharp
public bool IsDependent;
[FieldOffset(8)]
public CppSharp.Parser.AST.TemplateSpecializationType.Internal TemplateSpecialization;
public global::System.IntPtr TemplateSpecialization;
[FieldOffset(36)]
[FieldOffset(12)]
public global::System.IntPtr Class;
[SuppressUnmanagedCodeSecurity]
@ -1842,11 +1842,6 @@ namespace CppSharp @@ -1842,11 +1842,6 @@ namespace CppSharp
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="??0InjectedClassNameType@AST@CppParser@CppSharp@@QAE@ABU0123@@Z")]
internal static extern global::System.IntPtr cctor_2(global::System.IntPtr instance, global::System.IntPtr _0);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="??1InjectedClassNameType@AST@CppParser@CppSharp@@QAE@XZ")]
internal static extern void dtor_0(global::System.IntPtr instance);
}
internal InjectedClassNameType(InjectedClassNameType.Internal* native)
@ -1867,7 +1862,7 @@ namespace CppSharp @@ -1867,7 +1862,7 @@ namespace CppSharp
public InjectedClassNameType()
: this(IntPtr.Zero)
{
__Instance = Marshal.AllocHGlobal(40);
__Instance = Marshal.AllocHGlobal(16);
Internal.ctor_0(__Instance);
}
@ -1881,15 +1876,13 @@ namespace CppSharp @@ -1881,15 +1876,13 @@ namespace CppSharp
get
{
var __ptr = (Internal*)__Instance.ToPointer();
var __instance = Marshal.AllocHGlobal(28);
CppSharp.Parser.AST.TemplateSpecializationType.Internal.cctor_1(__instance, new global::System.IntPtr(&__ptr->TemplateSpecialization));
return (__instance == IntPtr.Zero) ? null : new CppSharp.Parser.AST.TemplateSpecializationType(__instance);
return (__ptr->TemplateSpecialization == IntPtr.Zero) ? null : new CppSharp.Parser.AST.TemplateSpecializationType(__ptr->TemplateSpecialization);
}
set
{
var __ptr = (Internal*)__Instance.ToPointer();
__ptr->TemplateSpecialization = ReferenceEquals(value, null) ? new CppSharp.Parser.AST.TemplateSpecializationType.Internal() : *(CppSharp.Parser.AST.TemplateSpecializationType.Internal*) (value.__Instance);
__ptr->TemplateSpecialization = value == (CppSharp.Parser.AST.TemplateSpecializationType) null ? global::System.IntPtr.Zero : value.__Instance;
}
}

Loading…
Cancel
Save