1 year ago
#388377
YehudaS
SWIG: C++ to python: how to wrap a function that passes a reference to a struct
How should I wrap (via SWIG) C++ functions that pass a pointer or a reference to a structure, to make them work in python? Here's an example:
typedef struct
{
double dTrCoef[16][3];
int iNumAxes;
int iBufferMode;
int iMcsToAcsFuncID[16];
unsigned long uiNode[16];
int iType[16];
unsigned char ucExecute;
}MMC_SETKINTRANSFORM_IN;
typedef struct
{
unsigned short usStatus;
short usErrorID;
}MMC_SETKINTRANSFORM_OUT;
unsigned short g_usConnHndl = 0;
unsigned short g_usAxisRef = 3;
int MMC_SetKinTransform(
unsigned short hConn,
unsigned short hAxisRef,
MMC_SETKINTRANSFORM_IN* pInParam,
MMC_SETKINTRANSFORM_OUT* pOutParam);
void SetKinTransform(MMC_SETKINTRANSFORM_IN& stInParam)
{
MMC_SETKINTRANSFORM_OUT stOutParam;
MMC_SetKinTransform(g_usConnHndl, g_usAxisRef, &stInParam, &stOutParam);
}
When running the following code in python (without making any special wrapper for SetKinTransform function in SWIG):
b = mmcpp_lib.MMC_SETKINTRANSFORM_IN
SetKinTransform(b)
I receive the following TypeError:
TypeError Traceback (most recent call last)
In [4]:
Line 1: SetKinTransform(b)
File /usr/lib/python3.8/mmcpp_lib.py, in SetKinTransform:
Line 16987: return _mmcpp_lib.SetKinTransform(self, stInParam)
TypeError: in method 'SetKinTransform', argument 2 of type 'MMC_SETKINTRANSFORM_IN &'
Thanks
python
c++
swig
0 Answers
Your Answer