Я пытаюсь обернуть функцию, написанную на C, чтобы я мог получить к ней доступ в Python с помощью SWIG.
У меня проблема в том, что он ожидает указатель на указатель на структуру, а не указатель на структуру, например.
int update_tracks(track_t **hash_tracks);
если бы:
int update_tracks(track_t *hash_tracks);
У меня не было бы проблем, так как я могу создать аргумент и вызвать функцию из python следующим образом:
hash_tracks = track_t()
n = update_tracks(hash_tracks)
track_t — это простая структура C, содержащая несколько целых чисел, чисел с плавающей запятой, массивов и т. д.
но я не могу понять, как получить указатель на hash_tracks
, который мне нужен в качестве аргумента для первой функции (то есть той, которую я на самом деле пытаюсь обернуть)
Причина, по которой мне нужен аргумент track_t** (а не просто аргумент track_t*), заключается в том, что hash_tracks — это хэш-таблица (с использованием библиотеки uthash), и поэтому указатель на таблицу дорожек может изменяться по мере того, как функция добавляет и удаляет структуры track_t. в рамках его реализации.
Я в тупике, как вызвать такую функцию из python. Может быть, мне нужно реализовать некоторые «вспомогательные» функции на C или использовать некоторые карты типов SWIG, чтобы сделать это возможным?