196
196
return pcilib_set_value_from_float(ctx, value, PyFloat_AsDouble(obj));
199
void* pcilib_convert_val_to_pyobject(pcilib_t* ctx, pcilib_value_t *val)
205
case PCILIB_TYPE_INVALID:
206
pcilib_error("Invalid register output type (PCILIB_TYPE_INVALID)");
209
case PCILIB_TYPE_STRING:
210
pcilib_error("Invalid register output type (PCILIB_TYPE_STRING)");
213
case PCILIB_TYPE_LONG:
216
ret = pcilib_get_value_as_int(ctx, val, &err);
220
pcilib_error("Failed: pcilib_get_value_as_int (%i)", err);
223
return (PyObject*)PyInt_FromLong((long) ret);
226
case PCILIB_TYPE_DOUBLE:
229
ret = pcilib_get_value_as_float(ctx, val, &err);
233
pcilib_error("Failed: pcilib_get_value_as_int (%i)", err);
236
return (PyObject*)PyFloat_FromDouble((double) ret);
240
pcilib_error("Invalid register output type (unknown)");
245
int pcilib_convert_pyobject_to_val(pcilib_t* ctx, void* pyObjVal, pcilib_value_t *val)
247
PyObject* pyVal = pyObjVal;
250
if(PyInt_Check(pyVal))
252
err = pcilib_set_value_from_int(ctx, val, PyInt_AsLong(pyVal));
255
if(PyFloat_Check(pyVal))
256
err = pcilib_set_value_from_float(ctx, val, PyFloat_AsDouble(pyVal));
258
if(PyString_Check(pyVal))
259
err = pcilib_set_value_from_static_string(ctx, val, PyString_AsString(pyVal));
262
pcilib_error("Invalid input. Input type should be int, float or string.");
263
return PCILIB_ERROR_NOTSUPPORTED;
200
271
int pcilib_init_py_script(pcilib_t *ctx, char* module_name, pcilib_script_t **module, pcilib_access_mode_t *mode)
350
PyObject *input = pcilib_convert_val_to_pyobject(ctx, val, printf);
421
PyObject *input = pcilib_convert_val_to_pyobject(ctx, val);
353
424
printf("Failed to convert input value to Python object");