diff --git a/src/limedriver/limedriver.pyx b/src/limedriver/limedriver.pyx index 1501970..e16b775 100644 --- a/src/limedriver/limedriver.pyx +++ b/src/limedriver/limedriver.pyx @@ -85,11 +85,14 @@ cdef extern from "limedriver.h": cdef class PyLimeConfig: cdef LimeConfig_t* _config - def __cinit__(self): + def __cinit__(self, Npulses): self._config = malloc(sizeof(LimeConfig_t)) if self._config is NULL: raise MemoryError() + # Set Npulses + self._config.Npulses = Npulses + # Allocate memory for string fields self._config.file_pattern = malloc(256) self._config.file_stamp = malloc(256) @@ -97,6 +100,9 @@ cdef class PyLimeConfig: self._config.stamp_start = malloc(256) self._config.stamp_end = malloc(256) + # Allocate memory for arrays with Npulses elements + self._config.p_dur = malloc(Npulses * sizeof(double)) + def __dealloc__(self): if self._config is not NULL: @@ -234,11 +240,12 @@ cdef class PyLimeConfig: @property def p_dur(self): - return self._config.p_dur + return [self._config.p_dur[i] for i in range(self._config.Npulses)] @p_dur.setter - def p_dur(self, double *value): - self._config.p_dur = value + def p_dur(self, list value): + for i in range(len(value)): + self._config.p_dur[i] = value[i] # Arrays