%module(directors="1",dirprot="1") director_using %warnfilter(SWIGWARN_PHP_PUBLIC_BASE) FooBar; %{ #include <string> #include <iostream> %} %include "std_string.i" %feature("director"); %newobject *::create(); %inline { template <class C> class Foo { public: virtual ~Foo() {} std::string advance() { return "Foo::advance;" + do_advance(); } protected: virtual std::string do_advance() = 0; virtual std::string do_step() const = 0; }; } %template(Foo_int) Foo<int>; %inline { class Bar : public Foo<int> { public: std::string step() { return "Bar::step;" + advance(); } using Foo<int>::do_step; protected: std::string do_advance() { return "Bar::do_advance;" + do_step(); } }; template <class C> class FooBar : public Bar { public: virtual C get_value() const = 0; using Bar::do_advance; }; } %template(FooBar_int) FooBar<int>; %inline %{ struct SomeBase { virtual ~SomeBase() {} virtual void method1() {} virtual void method2() {} }; struct PrivateDerived : SomeBase { private: virtual void method1() {} using SomeBase::method2; }; %}
Generated by dwww version 1.15 on Tue Jul 2 00:24:54 CEST 2024.