Допустим, у меня есть библиотека c, которая каким-то образом манипулирует миром.
Я хочу использовать эту библиотеку с python. Я хочу быть в состоянии написать простые сценарии Python, которые представляют различные сценарии управления миром.
У меня есть функции, которые создают и разрушают мир:
void * create (void);
int destroy (void * world);
Вот код 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)
Теперь я хочу добавить такие функции, как:
int set_world_feature (void * world, feature_t f, ...);
int get_world_feature (void * world, feature_t f, ...);
Дело в том, что в моей оболочке Python я не знаю, как передать несколько различных аргументов.
Потому что иногда set_world_feature () вызывается с 3 или 4 аргументами.
В Python снова:
def set_world_feature(world, *features):
res = lib.set_world_feature(world, *features)
return world_error[res]
Как это исправить, чтобы это работало?