fixes for director class naming when nested classes are used

This commit is contained in:
Vladimir Kalinin 2014-03-13 14:57:17 +04:00
commit e18044185e
7 changed files with 67 additions and 47 deletions

View file

@ -284,6 +284,7 @@ CPP_TEST_CASES += \
naturalvar_more \
naturalvar_onoff \
nested_class \
nested_directors \
nested_comment \
nested_scope \
nested_workaround \

View file

@ -0,0 +1,20 @@
using System;
using nested_directorsNamespace;
#pragma warning disable 219
public class CNested : Base.Nest {
public override bool GetValue() {return true;}
}
public class CSub : Sub {
protected override bool GetValue() { return base.GetValue(); }
public bool Test(){ return GetValue(); }
}
public class runme {
static void Main() {
CNested n = new CNested();
CSub s = new CSub();
if (!s.Test())
throw new Exception("Sub.GetValue");
}
}

View file

@ -0,0 +1,35 @@
%module(directors="1", allprotected="1") nested_directors
%warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Base::Nest;
%warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Sub::IListener;
%feature("director") Base;
%feature("director") Sub;
%feature("director") Base::Nest;
%inline %{
namespace NN {
class Base {
public:
virtual ~Base(){}
class Nest {
public:
virtual ~Nest(){}
virtual bool GetValue(){ return false; }
};
protected:
virtual bool DoNothing() = 0;
};
class Sub : public Base {
public:
class IListener {
};
public:
virtual ~Sub(){}
protected:
void DoSomething(){}
virtual bool GetValue() const { return true; }
};
}
%}