Carlos Moraes
Carlos Moraes

Reputation: 53

Receive a pass a object by reference using ctypes

I have a library in C that has an object IedConnection that handles the connection to a remote equipment.

IedConnection con = IedConnection_create();
IedConnection_connect(con, &error, hostname, tcpPort);
IedConnection_destroy(con);

I understand how to pass and return ctype objects like c_int, but how would I declare the IedConnection con object in python using ctypes?

Upvotes: 2

Views: 398

Answers (1)

IedConnection is a pointer to a structure (typedef struct sIedConnection * IedConnection). All pointers to structures should have the same representation, so you can just use a pointer to any structure, and need not define its contents, unless you want to dereference it or do pointer arithmetic. Hence this should work:

from ctypes import *

class SIedConnection(Structure):
    pass

IedConnection = POINTER(SIedConnection)

now you can use IedConnection as the return type and in the argument types as usual.

Upvotes: 2

Related Questions