diff --git a/python/obitools3/obidms/obidmscolumn/capidmscolumn.pxd b/python/obitools3/obidms/obidmscolumn/capidmscolumn.pxd index 5e76d8b475c1625b1ad2c8e550d860f7dd31f111..e5eecea1181200ee2d55dd5ccef6a597fbdcd3da 100644 --- a/python/obitools3/obidms/obidmscolumn/capidmscolumn.pxd +++ b/python/obitools3/obidms/obidmscolumn/capidmscolumn.pxd @@ -12,7 +12,7 @@ cdef extern from "obitypes.h" nogil: ctypedef OBIBool obibool_t ctypedef int32_t obiint_t ctypedef double obifloat_t - ctypedef bytes obichar_t + ctypedef char obichar_t ctypedef size_t obiidx_t char* name_data_type(int data_type) diff --git a/python/obitools3/obidms/obidmscolumn/obidmscolumn_char/capidmscolumn_char.pxd b/python/obitools3/obidms/obidmscolumn/obidmscolumn_char/capidmscolumn_char.pxd index c2384bbd8c75558a632c27165cec7bdf32e3cf69..cc194a7d56ca3cee92c49b8e793b38cc0f00e76c 100644 --- a/python/obitools3/obidms/obidmscolumn/obidmscolumn_char/capidmscolumn_char.pxd +++ b/python/obitools3/obidms/obidmscolumn/obidmscolumn_char/capidmscolumn_char.pxd @@ -3,5 +3,5 @@ from obitools3.obidms.obidmscolumn.capidmscolumn cimport * cdef extern from "obidmscolumn_char.h" nogil: - int obi_column_set_obichar_with_elt_name(OBIDMS_column_p column, size_t line_nb, char* element_name, obichar_t* value) - obichar_t* obi_column_get_obichar_with_elt_name(OBIDMS_column_p column, size_t line_nb, char* element_name) + int obi_column_set_obichar_with_elt_name(OBIDMS_column_p column, size_t line_nb, char* element_name, obichar_t value) + obichar_t obi_column_get_obichar_with_elt_name(OBIDMS_column_p column, size_t line_nb, char* element_name) diff --git a/python/obitools3/obidms/obidmscolumn/obidmscolumn_char/capidmscolumn_char.pyx b/python/obitools3/obidms/obidmscolumn/obidmscolumn_char/capidmscolumn_char.pyx index 6f6316716109c40567a05c47c1973904e4093089..ec8bbc7d84fbcd2c47142e5bc9653d37271b1732 100644 --- a/python/obitools3/obidms/obidmscolumn/obidmscolumn_char/capidmscolumn_char.pyx +++ b/python/obitools3/obidms/obidmscolumn/obidmscolumn_char/capidmscolumn_char.pyx @@ -6,10 +6,10 @@ from .capidmscolumn_char cimport * cdef class OBIDMS_column_char(OBIDMS_column) : def get_item(self, line_nb, element_name): - value = (obi_column_get_obichar_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))).decode(encoding='utf-8')[:1] + cdef char value = obi_column_get_obichar_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8')) if obi_errno > 0 : raise IndexError(line_nb, element_name) - return value + return value cdef class OBIDMS_column_char_read(OBIDMS_column_char) : @@ -17,19 +17,17 @@ cdef class OBIDMS_column_char_read(OBIDMS_column_char) : def set_item(self, line_nb, element_name, value): raise Exception('Column is read-only') - def close(self): + cpdef close(self): if obi_close_column(self.pointer) < 0 : raise Exception("Problem closing a column") cdef class OBIDMS_column_char_writable(OBIDMS_column_char) : - def set_item(self, line_nb, element_name, value): - return obi_column_set_obichar_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'), value.encode('utf-8')) + def set_item(self, line_nb, element_name, bytes value): + return obi_column_set_obichar_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'), value[0]) def close(self): if obi_truncate_and_close_column(self.pointer) < 0 : raise Exception("Problem closing a column") - - \ No newline at end of file diff --git a/src/obidmscolumn_char.c b/src/obidmscolumn_char.c index 2241e00c1a81fb2ebb64a6414d5d2f53316b5022..6071dbb929ec218d619a00732a099e6f1ba95340 100644 --- a/src/obidmscolumn_char.c +++ b/src/obidmscolumn_char.c @@ -65,6 +65,7 @@ obichar_t obi_column_get_obichar_with_elt_idx(OBIDMS_column_p column, size_t lin obidebug(1, "\nError trying to get a value that is beyond the current number of lines used"); return OBIChar_NA; } + return *(((obichar_t*) (column->data)) + (line_nb * ((column->header)->nb_elements_per_line)) + element_idx); } diff --git a/src/obidmscolumn_char.h b/src/obidmscolumn_char.h index e973b76a2721d5585b4318c826d037bc721cb7d2..96089b8640d757fd1ceb661326b5a4b573d221c3 100644 --- a/src/obidmscolumn_char.h +++ b/src/obidmscolumn_char.h @@ -78,7 +78,7 @@ obichar_t* obi_column_get_obichar_with_elt_idx(OBIDMS_column_p column, size_t li * @since August 2015 * @author Celine Mercier (celine.mercier@metabarcoding.org) */ -int obi_column_set_obichar_with_elt_name(OBIDMS_column_p column, size_t line_nb, char* element_name, obichar_t* value); +int obi_column_set_obichar_with_elt_name(OBIDMS_column_p column, size_t line_nb, char* element_name, obichar_t value); /** @@ -97,5 +97,5 @@ int obi_column_set_obichar_with_elt_name(OBIDMS_column_p column, size_t line_nb, * @since August 2015 * @author Celine Mercier (celine.mercier@metabarcoding.org) */ -obichar_t* obi_column_get_obichar_with_elt_name(OBIDMS_column_p column, size_t line_nb, char* element_name); +obichar_t obi_column_get_obichar_with_elt_name(OBIDMS_column_p column, size_t line_nb, char* element_name);