Browse Source

Fixed the getting of the template a specialised function is instantiated from.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/787/head
Dimitar Dobrev 8 years ago
parent
commit
10ac0a4865
  1. 7
      src/CppParser/Parser.cpp
  2. 2
      src/Generator/Generators/CSharp/CSharpSources.cs

7
src/CppParser/Parser.cpp

@ -3731,6 +3731,8 @@ Declaration* Parser::WalkDeclaration(const clang::Decl* D, @@ -3731,6 +3731,8 @@ Declaration* Parser::WalkDeclaration(const clang::Decl* D,
break;
}
case Decl::CXXConstructor:
case Decl::CXXDestructor:
case Decl::CXXConversion:
case Decl::CXXMethod:
{
auto MD = cast<CXXMethodDecl>(D);
@ -3764,11 +3766,6 @@ Declaration* Parser::WalkDeclaration(const clang::Decl* D, @@ -3764,11 +3766,6 @@ Declaration* Parser::WalkDeclaration(const clang::Decl* D,
Decl = WalkNonTypeTemplateParameter(NTTPD);
break;
}
// Ignore these declarations since they must have been declared in
// a class already.
case Decl::CXXDestructor:
case Decl::CXXConversion:
break;
case Decl::BuiltinTemplate:
case Decl::ClassScopeFunctionSpecialization:
case Decl::PragmaComment:

2
src/Generator/Generators/CSharp/CSharpSources.cs

@ -1332,7 +1332,7 @@ namespace CppSharp.Generators.CSharp @@ -1332,7 +1332,7 @@ namespace CppSharp.Generators.CSharp
// Generate a delegate type for each method.
foreach (var method in wrappedEntries.Select(e => e.Method))
GenerateVTableMethodDelegates(containingClass, containingClass.IsDependent ?
containingClass.Methods[@class.Methods.IndexOf(method)] : method);
(Method) method.InstantiatedFrom : method);
WriteLine("private static void*[] __ManagedVTables;");
if (wrappedEntries.Any(e => e.Method.IsDestructor))

Loading…
Cancel
Save