通过swig%exception指令插入横切c ++代码

时间:2014-03-25 11:49:08

标签: python c++ swig

我想在swig生成的包装器代码中的所有实际方法调用之前插入一段代码(比如横切c ++函数调用)。我在.i文件中使用了%exception指令,最终生成了以下包装代码

some_crosscutting_c++_function_call();
try {
  {
    SWIG_PYTHON_THREAD_BEGIN_ALLOW;// release GIL
    actual_c++_function_call();
    SWIG_PYTHON_THREAD_END_ALLOW;// acquire GIL
  }
}
catch(some exception) {
  ......
}

但我想要的是以下

try {
  {
    SWIG_PYTHON_THREAD_BEGIN_ALLOW;//release GIL
    some_crosscutting_c++_function_call();
    actual_c++_function_call();
    SWIG_PYTHON_THREAD_END_ALLOW;//acquire GIL
  }
}
catch(some exception) {
  ......
}

横切函数调用不需要GIL,因此我希望在GIL发布后调用它。有没有办法在real_c ++ _ function_call()之后和SWIG_PYTHON_THREAD_BEGIN_ALLOW之后有一个钩子?

0 个答案:

没有答案