Articles of punteros

Accediendo a punteros vacíos en Python (usando SWIG o algo más)

He estado tratando de usar SWIG para envolver una biblioteca simple que usa ioctl () para rellenar una estructura como la siguiente: struct data { header* hdr; void* data; size_t len; }; los datos son un puntero a un búfer, len es la longitud de ese búfer. No puedo averiguar cómo convertir datos a una […]

Cómo aplicar un mapa de tipo SWIG para un argumento de estructura de doble puntero

Tengo una API que estoy tratando de ajustar usando SWIG, de modo que pueda llamar a la biblioteca C subyacente desde python. Me he quedado atascado con una API particular fn: int update_tracks(track_t **phash_tracks, const pdws_t *pdw_frame, const rdws_t *rdw_frame, lib_t *lib, lib_meta_t *lib_meta, const cfg_t *cfg); Es el doble puntero a la estructura de […]

Python: ¿Tamaño de referencia?

Tengo un proyecto que estoy planeando, y un poco de información que querré tener es la cantidad de memoria que ocupa una referencia en Python. AFAIK, una referencia en python es lo mismo que un puntero, y supongo que sería del mismo tamaño que un puntero de 32 bits o de 64 bits (pero podría […]

Uso de Ctypes de Python para pasar el puntero a una función DLL

Estoy intentando acceder a una función en un archivo DLL usando ctypes de Python. La descripción de la función proporcionada se encuentra a continuación. Prototype: Picam_ConnectDemoCamera( PicamModel model, const pichar* serial_number, PicamCameraID* id ) Description: Virtually connects the software-simulated ‘model’ with ‘serial_number’ and returns the camera id in `_id_` Notes: `_id_` is optional and can […]

Referencias en Python

Tengo una red de multidifusión que necesita enviar datos continuamente a todos los demás usuarios. Esta información cambiará constantemente, por lo que no quiero que el progtwigdor tenga que lidiar con el envío de paquetes a los usuarios. Debido a esto, estoy tratando de descubrir cómo puedo hacer una referencia a cualquier objeto o variable […]

SWIG python inicializa un puntero a NULL

¿Es posible inicializar un ptr a NULL desde el lado de python cuando se trata con el módulo SWIG? Por ejemplo, digamos que envolví una estructura trackt en un módulo de gulp m (_m.so), puedo crear un puntero a la estructura desde Python de la siguiente manera: import m track = m.track_t() esto solo hará […]

Python: cómo incrementar una instancia de ctypes POINTER

Suponga que p = ctypes.cast(“foo”, ctypes.POINTER(ctypes.c_char)) . Por lo tanto, tenemos p.contents.value == “f” . ¿Cómo puedo acceder directamente y manipular (por ejemplo, incrementar) el puntero? Por ejemplo, like (p + 1).contents.value == “o” .

Tipos de Python: copiando los contenidos de la Estructura.

Quiero imitar una pieza de código C en Python con ctypes, el código es algo así como: typedef struct { int x; int y; } point; void copy_point(point *a, point *b) { *a = *b; } En ctypes no es posible hacer lo siguiente: from ctypes import * class Point(Structure): _fields_ = [(“x”, c_int),(“y”, c_int)] […]

¿Cómo usar float ** en Python con Swig?

Estoy escribiendo enlaces de swig para algunas funciones de c. Una de estas funciones toma un flotador **. Ya estoy usando cpointer.i para los punteros normales y busqué en carrays.i , pero no encontré la forma de declarar un flotador **. ¿Que recomiendas? archivo de interfaz: extern int read_data (const char * file, int * […]

¿Cómo pasar el puntero de vuelta en ctypes?

No sé mucho sobre ctypes, recientemente comencé a trabajar con él. Tengo una función simple en dll tipo C que devuelve un puntero a la cadena generada dinámicamente. Funciona bien, pero debido a que asigné memoria manualmente a la cadena, debería liberarla después de usarla. Tengo algo como esto: extern “C” char* DLL_EXPORT func(const char* […]