1 %module(directors="1") director_nested_class
2 
3 
4 %feature("director") DirectorOuter::DirectorInner;
5 %feature("director") DirectorOuter::DirectorInner::DirectorInnerInner;
6 
7 %inline %{
8 struct DirectorOuter {
9   struct DirectorInner {
~DirectorInnerDirectorOuter::DirectorInner10     virtual ~DirectorInner() {}
11     virtual int vmethod(int input) const = 0;
12     struct DirectorInnerInner {
13       DirectorInnerInner(DirectorInner *din = 0) {}
~DirectorInnerInnerDirectorOuter::DirectorInner::DirectorInnerInner14       virtual ~DirectorInnerInner() {}
15       virtual int innervmethod(int input) const = 0;
16     };
17   };
callMethodDirectorOuter18   static int callMethod(const DirectorInner &di, int value) {
19     return di.vmethod(value);
20   }
callInnerInnerMethodDirectorOuter21   static int callInnerInnerMethod(const DirectorInner::DirectorInnerInner &di, int value) {
22     return di.innervmethod(value);
23   }
24 };
25 %}
26