Disons que j'ai une bibliothèque c qui manipule un monde en quelque sorte.Passage de plusieurs arguments à la fonction C dans Python
Je souhaite utiliser cette bibliothèque avec python. Je veux être capable d'écrire des scripts python simples qui représentent différents scénarios de gestion du monde.
J'ai des fonctions qui créent et détruisent un monde: void * create (void); int destroy (void * monde);
Voici un code python:
import ctypes
lib = ctypes.CDLL('manage_world.so')
_create = lib.create
_create.restype = ctypes.c_void_p
_destroy = lib.destroy
_destroy.argtypes = [ctypes.c_void_p,]
_destroy.restype = ctypes.c_int
def create_world():
res = _create()
res = ctypes.cast(res, ctypes.c_void_p)
return res
def destroy_world(world):
return _destroy(world)
new_world = create_world()
print type(new_world)
print destroy_world(new_world)
Maintenant, je veux ajouter des fonctions comme: int set_world_feature (vide monde *, feature_t f, ...); int get_world_feature (void * monde, feature_t f, ...); Le truc c'est que dans mon wrapper python je ne sais pas comment passer divers arguments multiples.
Parce que parfois set_world_feature() est appelée avec 3 ou 4 arguments.
En Python à nouveau:
def set_world_feature(world, *features):
res = lib.set_world_feature(world, *features)
return world_error[res]
Comment résoudre ce problème pour que cela fonctionne?