Есть некий код на C++
struct A{
...
double x; //@ это координата
double v; //@ а это скорость
...
};
from mymodule import *
a = A()
a.x = 1 #@ это координата заданная в питон
...
Комментарии в питоне нужны что бы опять таки самому не запутаться + при запуске питоньего скрипта с параметром -h можно поглядеть какие в нем вообще есть параметры задаваемые для плюсов. Сейчас это сделано тупо, выводятся строки содержащие '#@'.
Хотелки: 1) приходится дублировать комментарии в питоне, которые уже однажды были написаны в плюсах, хочется от этого избавится но совершенно непонятно как. Видимо никак, поскольку питоний скрипт пишется руками, хотя можно сделать утилитку которая делает для него заготовку выдернув из плюсов строки с '//@'.
2) более важно - эти комментарии хочется собирать и сохранять отдельно в виде таблички 'имя параметра': 'описание (комментарий)'. Комментарии из питона выдергиваются довольно просто, за счет перегрузки A.__setattr__. Как выдергивать комментарии из плюсов совершенно непонятно, в документации swig я ничего по этому поводу не нашел. Пока что в голову приходит завести в плюсах отдельную строковую переменную с описанием всех параметров, но это еще одно дублирование.
Ну или макрос сделать
#define PARAM(T, K, H) T K; const char * K##_autodoc = #H;
struct A{
...
PARAM(double, x, это координата);
PARAM(double, v, а это скорость);
...
};
У кого какие идеи будут?;-)