From f53ad866ff899d7b3bc7c712051d96c7d968f6c4 Mon Sep 17 00:00:00 2001 From: jupfi Date: Thu, 8 Feb 2024 14:56:50 +0100 Subject: [PATCH] Implemented first pointer p_dur --- src/limedriver/limedriver.pyx | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) 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