%module(directors="1") director_exception_catches %include %feature("director") BaseClass; %{ // define dummy director exception classes to prevent spurious errors // in target languages that do not support directors. #ifndef SWIG_DIRECTORS namespace Swig { class DirectorException {}; } #endif /* !SWIG_DIRECTORS */ %} %catches(Swig::DirectorException) BaseClass::call_description; %inline %{ struct BaseClass { virtual std::string description() const = 0; static std::string call_description(BaseClass& bc) { return bc.description(); } virtual ~BaseClass() {} }; %}