Saya mencoba untuk membungkus fungsi yang ditulis dalam C sehingga saya dapat mengaksesnya dengan Python menggunakan SWIG
Masalah yang saya miliki adalah ia mengharapkan sebuah pointer ke sebuah pointer ke sebuah struct, bukan sebuah pointer ke sebuah struct, mis.
int update_tracks(track_t **hash_tracks);
jika itu:
int update_tracks(track_t *hash_tracks);
Saya tidak akan mengalami masalah karena saya dapat membuat argumen dan memanggil fungsi dari python sebagai berikut:
hash_tracks = track_t()
n = update_tracks(hash_tracks)
track_t adalah struct C sederhana yang berisi beberapa int, float, array, dll.
tetapi saya tidak tahu cara mendapatkan penunjuk ke hash_tracks
yang saya perlukan sebagai argumen untuk fungsi pertama (yaitu fungsi yang sebenarnya saya coba bungkus)
Alasan saya memerlukan argumen track_t** (bukan hanya argumen track_t*) adalah karena hash_tracks adalah tabel hash (menggunakan perpustakaan uthash) dan dengan demikian penunjuk ke tabel track dapat berubah seiring fungsi menambah dan menghapus struct track_t dalam implementasinya.
Saya bingung bagaimana memanggil fungsi seperti itu dari python. Mungkin saya perlu mengimplementasikan beberapa fungsi 'pembantu' di C atau menggunakan beberapa peta tipe SWIG untuk memungkinkannya?