SWIG:重用一个选择性异常处理程序?

时间:2016-06-28 20:43:01

标签: c++ swig

我正在使用SWIG编写%异常处理程序。我想使用2个不同的处理程序:1个用于特殊情况,另一个用于其他一切。有没有办法做到这一点?即,现在,我有这个:

%exception {
   //basic error handling
}

%exception foo1 {
   //advanced error handling
}
%exception foo2 {
   //advanced error handling
}
%exception foo3 {
   //advanced error handling
}

但是因为所有3个foo处理程序是相同的(它们是同一个类的三个成员,如果这有帮助),那么它们将是相同的代码将是很好的。它看起来不像SWIG documentation允许这样。我不认为我可以(或想要)使用高级处理程序,因为它很昂贵,可能不是线程安全的。我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

嗯,您可以随时使用SWIG宏:

%define %custom_exception
{ 
  //advanced error handling
}
%enddef

然后使用

%exception foo1 %custom_exception
%exception foo2 %custom_exception
%exception foo3 %custom_exception