Add director.swg for Go as was completely absent. This is just the start of a common exception handling approach to directors. An exception thrown in a Java director method will be propogated back to Java via a C++ DirectorException. DirectorException throws typemap for Java is fully working, all other languages need work. DirectorException throws typemap for Perl added just to fix compilation errors. Add director_exception_catches test.
25 lines
597 B
OpenEdge ABL
25 lines
597 B
OpenEdge ABL
%module(directors="1") director_exception_catches
|
|
|
|
%include <std_string.i>
|
|
%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() {}
|
|
};
|
|
%}
|