SWIG: Добавить комментарии к сгенерированному файлу .py - PullRequest
6 голосов
/ 04 ноября 2011

Используя SWIG для создания интерфейса Python для приложения C ++, есть ли способ прокомментировать функции в сгенерированном файле .py? Я на самом деле вытягиваю весь файл .h в файл .i, но для небольшого примера:

%module example

bool do_something_interesting(int number, string text);

swig -python example.i Генерирует:

...
def do_something_interesting(*args):
  return _example.do_something_interesting(*args)
do_something_interesting = _example.do_something_interesting

В идеале , я бы хотел, чтобы он автоматически добавлял комментарий с оригинальной подписью метода

#bool do_something_interesting(int number, string text)
def do_something_interesting(*args):
  return _example.do_something_interesting(*args)
do_something_interesting = _example.do_something_interesting

Но я вполне мог бы написать свой собственный комментарий где-нибудь (особенно если комментарий мог бы быть каким-то образом в файле .h). Я думал, что %pythonprepend может быть возможным решением, но он вставляет код в определение функции, а не перед ней.

РЕДАКТИРОВАТЬ: Вот то, что я придумал в файле .h. Не самая красивая вещь, но она подойдет:

#ifdef SWIG
   %pythonprepend do_something_interesting(int, string) %{
    """Do some interesting thing

    number:Int -- a number
    text:String -- some text

    """
  %}
#endif
bool do_something_interesting(int number, string text);

1 Ответ

6 голосов
/ 04 ноября 2011

Посмотрите на функцию документации в SWIG для Python.Возможно, следующая строка в вашем .i файле

%feature("autodoc", "1")

будет делать то, что вы хотите (см. http://www.swig.org/Doc2.0/Python.html#Python_nn65, чтобы узнать больше опций)

...