2017-02-02 2 views
2

Мы используем SWIG для создания оболочек Python для некоторого кода на C++. директивы SWIG начинаются с%, и выглядеть в заголовках:Как пропустить директивы SWIG в clang-формате

#ifdef SWIG 
%apply int* INT_RET_VAL{int * is_donor}; 
#ENDIF 
ErrLevel mmct_hbond_is_donor(MM_Index ct, int atom_idx, int* is_donor); 
#ifdef SWIG 
%clear int * is_donor; 
#ENDIF 

Когда лязг формат обрабатывает их, %apply превращается в % apply, который не является SWIG заявление больше! Есть лотов из них в нашей базе кода в настоящее время. Есть ли хороший способ убедить clang-format пропустить заявления% apply и% clear? Или, может быть, все в #ifdef SWIG?

ответ

1

Вы можете использовать // clang-format off.

int formatted_code; 
// clang-format off 
    void unformatted_code ; 
// clang-format on 
void formatted_code_again; 

https://clang.llvm.org/docs/ClangFormatStyleOptions.html#disabling-formatting-on-a-piece-of-code

+0

Спасибо за ваше предложение. Я не думаю, что это сработает для нас. Если вы примените это предложение к моему первоначальному вопросу, в заголовок будет добавлено еще 4 строки, что еще больше затушевывает (довольно простое) объявление функции. – dbn

+0

Если это неприемлемо, вы можете не использовать этот подход '#ifdef SWIG' и извлекать директивы swig во внешний .i-файл. В противном случае у меня нет идей. – cubuspl42

Смежные вопросы