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
PopBlock(NewLineKind.BeforeNextBlock); PopBlock(NewLineKind.BeforeNextBlock);
} }
// TODO: We can still get an abstract impl even if BaseClass is null. var className = @class.IsAbstractImpl ? @class.BaseClass.Name : @class.Name;
string className = @class.IsAbstractImpl && @class.BaseClass != null ?
@class.BaseClass.Name : @class.Name;
var ctorCall = string.Format("{0}{1}", @class.Name, @class.IsAbstract ? "Internal" : ""); var ctorCall = string.Format("{0}{1}", @class.Name, @class.IsAbstract ? "Internal" : "");
if (!@class.IsAbstractImpl) if (!@class.IsAbstractImpl)

2
src/Generator/Passes/GenerateAbstractImplementationsPass.cs

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

19
tests/Common/Common.h

@ -828,14 +828,14 @@ public:
class DLL_API BaseClassVirtual class DLL_API BaseClassVirtual
{ {
public: public:
virtual int retInt(); virtual int retInt();
static BaseClassVirtual getBase(); static BaseClassVirtual getBase();
}; };
class DLL_API DerivedClassVirtual : public BaseClassVirtual class DLL_API DerivedClassVirtual : public BaseClassVirtual
{ {
public: public:
virtual int retInt(); virtual int retInt();
}; };
namespace boost namespace boost
@ -888,3 +888,16 @@ namespace boost
template <std::size_t N, std::size_t... I> template <std::size_t N, std::size_t... I>
struct build_index_impl : build_index_impl<N - 1, N - 1, 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