Browse Source

Updated the C++ parser to the latest template fixes.

pull/131/head
triton 12 years ago
parent
commit
04a5956dd3
  1. 4
      src/CppParser/AST.h
  2. 12
      src/CppParser/Bindings/CLI/AST.cpp
  3. 4
      src/CppParser/Bindings/CLI/AST.h
  4. 24
      src/CppParser/Bindings/CSharp/AST.cs
  5. 10
      src/CppParser/Parser.cpp

4
src/CppParser/AST.h

@ -547,11 +547,11 @@ struct CS_API ClassTemplate : public Template @@ -547,11 +547,11 @@ struct CS_API ClassTemplate : public Template
{
};
struct CS_API ClassTemplateSpecialization : public Declaration
struct CS_API ClassTemplateSpecialization : public Class
{
};
struct CS_API ClassTemplatePartialSpecialization : public Declaration
struct CS_API ClassTemplatePartialSpecialization : public ClassTemplateSpecialization
{
};

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

@ -2574,35 +2574,35 @@ CppSharp::Parser::AST::ClassTemplate::ClassTemplate() @@ -2574,35 +2574,35 @@ CppSharp::Parser::AST::ClassTemplate::ClassTemplate()
}
CppSharp::Parser::AST::ClassTemplateSpecialization::ClassTemplateSpecialization(::CppSharp::CppParser::AST::ClassTemplateSpecialization* native)
: CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)native)
: CppSharp::Parser::AST::Class((::CppSharp::CppParser::AST::Class*)native)
{
}
CppSharp::Parser::AST::ClassTemplateSpecialization::ClassTemplateSpecialization(System::IntPtr native)
: CppSharp::Parser::AST::Declaration(native)
: CppSharp::Parser::AST::Class(native)
{
auto __native = (::CppSharp::CppParser::AST::ClassTemplateSpecialization*)native.ToPointer();
}
CppSharp::Parser::AST::ClassTemplateSpecialization::ClassTemplateSpecialization()
: CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)nullptr)
: CppSharp::Parser::AST::Class((::CppSharp::CppParser::AST::Class*)nullptr)
{
NativePtr = new ::CppSharp::CppParser::AST::ClassTemplateSpecialization();
}
CppSharp::Parser::AST::ClassTemplatePartialSpecialization::ClassTemplatePartialSpecialization(::CppSharp::CppParser::AST::ClassTemplatePartialSpecialization* native)
: CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)native)
: CppSharp::Parser::AST::ClassTemplateSpecialization((::CppSharp::CppParser::AST::ClassTemplateSpecialization*)native)
{
}
CppSharp::Parser::AST::ClassTemplatePartialSpecialization::ClassTemplatePartialSpecialization(System::IntPtr native)
: CppSharp::Parser::AST::Declaration(native)
: CppSharp::Parser::AST::ClassTemplateSpecialization(native)
{
auto __native = (::CppSharp::CppParser::AST::ClassTemplatePartialSpecialization*)native.ToPointer();
}
CppSharp::Parser::AST::ClassTemplatePartialSpecialization::ClassTemplatePartialSpecialization()
: CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)nullptr)
: CppSharp::Parser::AST::ClassTemplateSpecialization((::CppSharp::CppParser::AST::ClassTemplateSpecialization*)nullptr)
{
NativePtr = new ::CppSharp::CppParser::AST::ClassTemplatePartialSpecialization();
}

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

@ -1433,7 +1433,7 @@ namespace CppSharp @@ -1433,7 +1433,7 @@ namespace CppSharp
};
public ref class ClassTemplateSpecialization : CppSharp::Parser::AST::Declaration
public ref class ClassTemplateSpecialization : CppSharp::Parser::AST::Class
{
public:
@ -1443,7 +1443,7 @@ namespace CppSharp @@ -1443,7 +1443,7 @@ namespace CppSharp
};
public ref class ClassTemplatePartialSpecialization : CppSharp::Parser::AST::Declaration
public ref class ClassTemplatePartialSpecialization : CppSharp::Parser::AST::ClassTemplateSpecialization
{
public:

24
src/CppParser/Bindings/CSharp/AST.cs

@ -623,7 +623,7 @@ namespace CppSharp @@ -623,7 +623,7 @@ namespace CppSharp
public unsafe partial class FunctionType : CppSharp.Parser.AST.Type, IDisposable, CppSharp.Runtime.ICppMarshal
{
[StructLayout(LayoutKind.Explicit, Size = 40)]
[StructLayout(LayoutKind.Explicit, Size = 28)]
public new struct Internal
{
[FieldOffset(4)]
@ -632,7 +632,7 @@ namespace CppSharp @@ -632,7 +632,7 @@ namespace CppSharp
[FieldOffset(12)]
public CppSharp.Parser.AST.CallingConvention CallingConvention;
[FieldOffset(28)]
[FieldOffset(16)]
public Std.Vector Parameters;
[SuppressUnmanagedCodeSecurity]
@ -658,7 +658,7 @@ namespace CppSharp @@ -658,7 +658,7 @@ namespace CppSharp
int CppSharp.Runtime.ICppMarshal.NativeDataSize
{
get { return 40; }
get { return 28; }
}
void CppSharp.Runtime.ICppMarshal.MarshalManagedToNative(global::System.IntPtr instance)
@ -687,7 +687,7 @@ namespace CppSharp @@ -687,7 +687,7 @@ namespace CppSharp
public FunctionType()
: this(IntPtr.Zero)
{
__Instance = Marshal.AllocHGlobal(40);
__Instance = Marshal.AllocHGlobal(28);
Internal.FunctionType_1(__Instance);
}
@ -5252,9 +5252,9 @@ namespace CppSharp @@ -5252,9 +5252,9 @@ namespace CppSharp
}
}
public unsafe partial class ClassTemplateSpecialization : CppSharp.Parser.AST.Declaration, IDisposable, CppSharp.Runtime.ICppMarshal
public unsafe partial class ClassTemplateSpecialization : CppSharp.Parser.AST.Class, IDisposable, CppSharp.Runtime.ICppMarshal
{
[StructLayout(LayoutKind.Explicit, Size = 88)]
[StructLayout(LayoutKind.Explicit, Size = 284)]
public new struct Internal
{
[SuppressUnmanagedCodeSecurity]
@ -5270,7 +5270,7 @@ namespace CppSharp @@ -5270,7 +5270,7 @@ namespace CppSharp
int CppSharp.Runtime.ICppMarshal.NativeDataSize
{
get { return 88; }
get { return 284; }
}
void CppSharp.Runtime.ICppMarshal.MarshalManagedToNative(global::System.IntPtr instance)
@ -5299,7 +5299,7 @@ namespace CppSharp @@ -5299,7 +5299,7 @@ namespace CppSharp
public ClassTemplateSpecialization()
: this(IntPtr.Zero)
{
__Instance = Marshal.AllocHGlobal(88);
__Instance = Marshal.AllocHGlobal(284);
Internal.ClassTemplateSpecialization_0(__Instance);
}
@ -5309,9 +5309,9 @@ namespace CppSharp @@ -5309,9 +5309,9 @@ namespace CppSharp
}
}
public unsafe partial class ClassTemplatePartialSpecialization : CppSharp.Parser.AST.Declaration, IDisposable, CppSharp.Runtime.ICppMarshal
public unsafe partial class ClassTemplatePartialSpecialization : CppSharp.Parser.AST.ClassTemplateSpecialization, IDisposable, CppSharp.Runtime.ICppMarshal
{
[StructLayout(LayoutKind.Explicit, Size = 88)]
[StructLayout(LayoutKind.Explicit, Size = 284)]
public new struct Internal
{
[SuppressUnmanagedCodeSecurity]
@ -5327,7 +5327,7 @@ namespace CppSharp @@ -5327,7 +5327,7 @@ namespace CppSharp
int CppSharp.Runtime.ICppMarshal.NativeDataSize
{
get { return 88; }
get { return 284; }
}
void CppSharp.Runtime.ICppMarshal.MarshalManagedToNative(global::System.IntPtr instance)
@ -5356,7 +5356,7 @@ namespace CppSharp @@ -5356,7 +5356,7 @@ namespace CppSharp
public ClassTemplatePartialSpecialization()
: this(IntPtr.Zero)
{
__Instance = Marshal.AllocHGlobal(88);
__Instance = Marshal.AllocHGlobal(284);
Internal.ClassTemplatePartialSpecialization_0(__Instance);
}

10
src/CppParser/Parser.cpp

@ -676,9 +676,6 @@ Class* Parser::WalkRecordCXX(clang::CXXRecordDecl* Record) @@ -676,9 +676,6 @@ Class* Parser::WalkRecordCXX(clang::CXXRecordDecl* Record)
ClassTemplate* Parser::WalkClassTemplate(clang::ClassTemplateDecl* TD)
{
if (TD->getCanonicalDecl() != TD)
return WalkClassTemplate(TD->getCanonicalDecl());
auto NS = GetNamespace(TD);
assert(NS && "Expected a valid namespace");
@ -707,9 +704,6 @@ ClassTemplate* Parser::WalkClassTemplate(clang::ClassTemplateDecl* TD) @@ -707,9 +704,6 @@ ClassTemplate* Parser::WalkClassTemplate(clang::ClassTemplateDecl* TD)
FunctionTemplate* Parser::WalkFunctionTemplate(clang::FunctionTemplateDecl* TD)
{
if (TD->getCanonicalDecl() != TD)
return WalkFunctionTemplate(TD->getCanonicalDecl());
auto NS = GetNamespace(TD);
assert(NS && "Expected a valid namespace");
@ -791,7 +785,9 @@ Method* Parser::WalkMethodCXX(clang::CXXMethodDecl* MD) @@ -791,7 +785,9 @@ Method* Parser::WalkMethodCXX(clang::CXXMethodDecl* MD)
return WalkMethodCXX(cast<CXXMethodDecl>(MD->getPrimaryContext()));
auto RD = MD->getParent();
auto Class = WalkRecordCXX(RD);
auto Decl = WalkDeclaration(RD, /*IgnoreSystemDecls=*/false);
auto Class = static_cast<CppSharp::CppParser::AST::Class*>(Decl);
// Check for an already existing method that came from the same declaration.
for (unsigned I = 0, E = Class->Methods.size(); I != E; ++I)

Loading…
Cancel
Save