2016-06-28 4 views
2

Я пишу обработчик исключений%, используя SWIG. Я хотел бы использовать 2 разных обработчика: 1 для особых случаев, а другой для всего остального. Есть ли способ сделать это? То есть, прямо сейчас, у меня есть это:SWIG: повторное использование обработчика выборочного исключения?

%exception { 
    //basic error handling 
} 

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

а потому, что все 3 Foo обработчики одинаковы (они трое членов одного и того же класса, если это помогает), было бы хорошо для них, чтобы быть такой же код. Это не похоже на то, что позволяет SWIG documentation. Я не думаю, что могу (или хочу) использовать расширенный обработчик для всего, потому что он дорогой и может быть небезопасным. Я что-то упускаю?

ответ

2

Ну, вы всегда можете использовать макросы Swig:

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

, а затем использовать

%exception foo1 %custom_exception 
%exception foo2 %custom_exception 
%exception foo3 %custom_exception 
Смежные вопросы