Browse Source

Removed implementations for ignored abstract types.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/560/head
Dimitar Dobrev 10 years ago
parent
commit
1b5de25f8c
  1. 4
      src/Generator/Generators/CSharp/CSharpTextTemplate.cs
  2. 2
      src/Generator/Passes/GenerateAbstractImplementationsPass.cs
  3. 19
      tests/Common/Common.h

4
src/Generator/Generators/CSharp/CSharpTextTemplate.cs

@ -1899,9 +1899,7 @@ namespace CppSharp.Generators.CSharp @@ -1899,9 +1899,7 @@ namespace CppSharp.Generators.CSharp
PopBlock(NewLineKind.BeforeNextBlock);
}
// TODO: We can still get an abstract impl even if BaseClass is null.
string className = @class.IsAbstractImpl && @class.BaseClass != null ?
@class.BaseClass.Name : @class.Name;
var className = @class.IsAbstractImpl ? @class.BaseClass.Name : @class.Name;
var ctorCall = string.Format("{0}{1}", @class.Name, @class.IsAbstract ? "Internal" : "");
if (!@class.IsAbstractImpl)

2
src/Generator/Passes/GenerateAbstractImplementationsPass.cs

@ -34,7 +34,7 @@ namespace CppSharp.Passes @@ -34,7 +34,7 @@ namespace CppSharp.Passes
public override bool VisitClassDecl(Class @class)
{
if (!base.VisitClassDecl(@class))
if (!base.VisitClassDecl(@class) || @class.Ignore)
return false;
if (@class.CompleteDeclaration != null)

19
tests/Common/Common.h

@ -828,14 +828,14 @@ public: @@ -828,14 +828,14 @@ public:
class DLL_API BaseClassVirtual
{
public:
virtual int retInt();
static BaseClassVirtual getBase();
virtual int retInt();
static BaseClassVirtual getBase();
};
class DLL_API DerivedClassVirtual : public BaseClassVirtual
{
public:
virtual int retInt();
virtual int retInt();
};
namespace boost
@ -888,3 +888,16 @@ namespace boost @@ -888,3 +888,16 @@ namespace boost
template <std::size_t N, std::size_t... I>
struct build_index_impl : build_index_impl<N - 1, N - 1, I...> {};
template <typename T>
class AbstractTemplate
{
public:
AbstractTemplate();
void abstractFunction() = 0;
};
template <typename T>
AbstractTemplate<T>::AbstractTemplate()
{
}

Loading…
Cancel
Save