estoy envolviendo una biblioteca con TRAGO (Python como objetivo). Las funciones de la biblioteca contiene los parámetros con los tipos de datos "uint32_t", "uint8_t", etc. Quiero crear la interfaz como multiplataforma como sea posible, así que quieren utilizar las firmas función original en mi archivo interface.i
. Por ejemplo:¿Cómo generar una interfaz multiplataforma con SWIG?
uint32_t func(uint32_t a, uint32_t b);
El problema que estoy tratando de resolver es que el TRAGO no reconocerá el parámetro como un entero menos que haya una typedef
en el uint32_t
tipo de datos. En este momento estoy usando esto en el archivo de interfaz:
typedef unsigned uint32_t;
Extracción que typedef
línea hará que la función no ser exigible desde el destino de enlace de Python:
>>> mylib.func(2, 2)
TypeError: in method 'func', argument 1 of type 'uint32_t'
El anterior typedef
está bien en mi máquina local, pero podría ser diferente en otro compilador/plataforma. Usando la directiva %include "stdint.h"
generará un error en el TRAGO:
/usr/include/stdint.h:44: Error: Syntax error in input(1).
Wich tiene sentido ya que el TRAGO no es un compilador con todas las funciones, y no se puede evaluar por completo toda la #ifdef
en esa cabecera.
¿Cómo puedo alimentar correctamente TRAGO con los tipos de datos que el compilador es la elección de la cabecera stdint.h
? De hecho tiene sentido para hacer cumplir estrictamente los tipos de datos correctos, o simplemente typedef
Ing todo el intX_t
-long
está bien?