Added functions to get and set values in columns using the element name
(for columns with lines made of vectors of elements), for all data types
This commit is contained in:
@ -29,9 +29,7 @@ cdef extern from "obidmscolumn.h" nogil:
|
||||
size_t obi_column_get_line_count(OBIDMS_column_p column)
|
||||
const char* obi_column_get_elements_names(OBIDMS_column_p column)
|
||||
void obi_column_make_unwritable(OBIDMS_column_p column)
|
||||
size_t obi_column_get_element_index_from_name(OBIDMS_column_p column, const char* element_name)
|
||||
OBIDMS_column_p obi_open_column(OBIDMS_p dms, const char* column_name, obiversion_t version_number)
|
||||
size_t obi_column_get_nb_elements_per_line(OBIDMS_column_p column)
|
||||
OBIType_t obi_column_get_type(OBIDMS_column_p column)
|
||||
int obi_close_column(OBIDMS_column_p column)
|
||||
OBIType_t obi_column_get_data_type_from_name(OBIDMS_p dms, const char* column_name)
|
||||
|
@ -62,11 +62,7 @@ cdef class OBIDMS_column:
|
||||
def get_elements_names(self):
|
||||
elements_names = obi_column_get_elements_names(self.pointer)
|
||||
return (elements_names.decode('UTF-8')).split(';')
|
||||
|
||||
def get_element_index_from_name(self, element_name):
|
||||
element_name = element_name.encode(encoding='UTF-8')
|
||||
return obi_column_get_element_index_from_name(self.pointer, element_name)
|
||||
|
||||
|
||||
def get_data_type(self):
|
||||
return self.data_type
|
||||
|
||||
|
@ -3,5 +3,5 @@ from obitools3.obidms.obidmscolumn.capidmscolumn cimport *
|
||||
|
||||
cdef extern from "obidmscolumn_bool.h" nogil:
|
||||
|
||||
int obi_column_set_bool(OBIDMS_column_p column, size_t line_nb, size_t element_idx, obibool_t value)
|
||||
obibool_t obi_column_get_bool(OBIDMS_column_p column, size_t line_nb, size_t element_idx)
|
||||
int obi_column_set_bool_with_elt_name(OBIDMS_column_p column, size_t line_nb, char* element_name, obibool_t value);
|
||||
obibool_t obi_column_get_bool_with_elt_name(OBIDMS_column_p column, size_t line_nb, char* element_name);
|
||||
|
@ -6,25 +6,9 @@ from .capidmscolumn_bool cimport *
|
||||
cdef class OBIDMS_column_bool(OBIDMS_column) :
|
||||
|
||||
def set_item(self, line_nb, element_name, value):
|
||||
if element_name != "" :
|
||||
element_idx = self.get_element_index_from_name(element_name)
|
||||
else :
|
||||
if obi_column_get_nb_elements_per_line(self.pointer) == 1 :
|
||||
element_idx = 0
|
||||
else :
|
||||
print("An element name must be specified")
|
||||
return -1
|
||||
return obi_column_set_bool(self.pointer, line_nb, element_idx, value)
|
||||
return obi_column_set_bool_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'), value)
|
||||
|
||||
def get_item(self, line_nb, element_name):
|
||||
if element_name != "" :
|
||||
element_idx = self.get_element_index_from_name(element_name)
|
||||
else :
|
||||
if obi_column_get_nb_elements_per_line(self.pointer) == 1 :
|
||||
element_idx = 0
|
||||
else :
|
||||
print("An element name must be specified")
|
||||
return -1
|
||||
return obi_column_get_bool(self.pointer, line_nb, element_idx)
|
||||
return obi_column_get_bool_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))
|
||||
|
||||
|
@ -3,5 +3,5 @@ from obitools3.obidms.obidmscolumn.capidmscolumn cimport *
|
||||
|
||||
cdef extern from "obidmscolumn_char.h" nogil:
|
||||
|
||||
int obi_column_set_char(OBIDMS_column_p column, size_t line_nb, size_t element_idx, obichar_t* value)
|
||||
obichar_t* obi_column_get_char(OBIDMS_column_p column, size_t line_nb, size_t element_idx)
|
||||
int obi_column_set_char_with_elt_name(OBIDMS_column_p column, size_t line_nb, char* element_name, obichar_t* value)
|
||||
obichar_t* obi_column_get_char_with_elt_name(OBIDMS_column_p column, size_t line_nb, char* element_name)
|
||||
|
@ -6,25 +6,9 @@ from .capidmscolumn_char cimport *
|
||||
cdef class OBIDMS_column_char(OBIDMS_column) :
|
||||
|
||||
def set_item(self, line_nb, element_name, value):
|
||||
if element_name != "" :
|
||||
element_idx = self.get_element_index_from_name(element_name)
|
||||
else :
|
||||
if obi_column_get_nb_elements_per_line(self.pointer) == 1 :
|
||||
element_idx = 0
|
||||
else :
|
||||
print("An element name must be specified")
|
||||
return -1
|
||||
return obi_column_set_char(self.pointer, line_nb, element_idx, value)
|
||||
return obi_column_set_char_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'), value.encode('utf-8'))
|
||||
|
||||
def get_item(self, line_nb, element_name):
|
||||
if element_name != "" :
|
||||
element_idx = self.get_element_index_from_name(element_name)
|
||||
else :
|
||||
if obi_column_get_nb_elements_per_line(self.pointer) == 1 :
|
||||
element_idx = 0
|
||||
else :
|
||||
print("An element name must be specified")
|
||||
return -1
|
||||
return (obi_column_get_char(self.pointer, line_nb, element_idx)).decode(encoding='UTF-8')[:1] #not ideal...
|
||||
return (obi_column_get_char_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))).decode(encoding='utf-8')[:1]
|
||||
|
||||
|
@ -3,5 +3,5 @@ from obitools3.obidms.obidmscolumn.capidmscolumn cimport *
|
||||
|
||||
cdef extern from "obidmscolumn_float.h" nogil:
|
||||
|
||||
int obi_column_set_float(OBIDMS_column_p column, size_t line_nb, size_t element_idx, obifloat_t value)
|
||||
obifloat_t obi_column_get_float(OBIDMS_column_p column, size_t line_nb, size_t element_idx)
|
||||
int obi_column_set_float_with_elt_name(OBIDMS_column_p column, size_t line_nb, char* element_name, obifloat_t value);
|
||||
obifloat_t obi_column_get_float_with_elt_name(OBIDMS_column_p column, size_t line_nb, char* element_name);
|
||||
|
@ -6,25 +6,8 @@ from .capidmscolumn_float cimport *
|
||||
cdef class OBIDMS_column_float(OBIDMS_column) :
|
||||
|
||||
def set_item(self, line_nb, element_name, value):
|
||||
if element_name != "" :
|
||||
element_idx = self.get_element_index_from_name(element_name)
|
||||
else :
|
||||
if obi_column_get_nb_elements_per_line(self.pointer) == 1 :
|
||||
element_idx = 0
|
||||
else :
|
||||
print("An element name must be specified")
|
||||
return -1
|
||||
return obi_column_set_float(self.pointer, line_nb, element_idx, value)
|
||||
return obi_column_set_float_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'), value)
|
||||
|
||||
def get_item(self, line_nb, element_name):
|
||||
if element_name != "" :
|
||||
element_idx = self.get_element_index_from_name(element_name)
|
||||
else :
|
||||
if obi_column_get_nb_elements_per_line(self.pointer) == 1 :
|
||||
element_idx = 0
|
||||
else :
|
||||
print("An element name must be specified")
|
||||
return -1
|
||||
return obi_column_get_float(self.pointer, line_nb, element_idx)
|
||||
|
||||
return obi_column_get_float_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))
|
||||
|
@ -3,5 +3,5 @@ from obitools3.obidms.obidmscolumn.capidmscolumn cimport *
|
||||
|
||||
cdef extern from "obidmscolumn_idx.h" nogil:
|
||||
|
||||
int obi_column_set_idx(OBIDMS_column_p column, size_t line_nb, size_t element_idx, obiidx_t value)
|
||||
obiidx_t obi_column_get_idx(OBIDMS_column_p column, size_t line_nb, size_t element_idx)
|
||||
int obi_column_set_idx_with_elt_name(OBIDMS_column_p column, size_t line_nb, char* element_name, obiidx_t value);
|
||||
obiidx_t obi_column_get_idx_with_elt_name(OBIDMS_column_p column, size_t line_nb, char* element_name);
|
||||
|
@ -6,25 +6,8 @@ from .capidmscolumn_idx cimport *
|
||||
cdef class OBIDMS_column_idx(OBIDMS_column) :
|
||||
|
||||
def set_item(self, line_nb, element_name, value):
|
||||
if element_name != "" :
|
||||
element_idx = self.get_element_index_from_name(element_name)
|
||||
else :
|
||||
if obi_column_get_nb_elements_per_line(self.pointer) == 1 :
|
||||
element_idx = 0
|
||||
else :
|
||||
print("An element name must be specified")
|
||||
return -1
|
||||
return obi_column_set_idx(self.pointer, line_nb, element_idx, value)
|
||||
return obi_column_set_idx_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'), value)
|
||||
|
||||
def get_item(self, line_nb, element_name):
|
||||
if element_name != "" :
|
||||
element_idx = self.get_element_index_from_name(element_name)
|
||||
else :
|
||||
if obi_column_get_nb_elements_per_line(self.pointer) == 1 :
|
||||
element_idx = 0
|
||||
else :
|
||||
print("An element name must be specified")
|
||||
return -1
|
||||
return obi_column_get_idx(self.pointer, line_nb, element_idx)
|
||||
|
||||
return obi_column_get_idx_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))
|
||||
|
@ -3,5 +3,5 @@ from obitools3.obidms.obidmscolumn.capidmscolumn cimport *
|
||||
|
||||
cdef extern from "obidmscolumn_int.h" nogil:
|
||||
|
||||
int obi_column_set_int(OBIDMS_column_p column, size_t line_nb, size_t element_idx, obiint_t value)
|
||||
obiint_t obi_column_get_int(OBIDMS_column_p column, size_t line_nb, size_t element_idx)
|
||||
int obi_column_set_int_with_elt_name(OBIDMS_column_p column, size_t line_nb, char* element_name, obiint_t value);
|
||||
obiint_t obi_column_get_int_with_elt_name(OBIDMS_column_p column, size_t line_nb, char* element_name);
|
||||
|
@ -6,25 +6,9 @@ from .capidmscolumn_int cimport *
|
||||
cdef class OBIDMS_column_int(OBIDMS_column) :
|
||||
|
||||
def set_item(self, line_nb, element_name, value):
|
||||
if element_name != "" :
|
||||
element_idx = self.get_element_index_from_name(element_name)
|
||||
else :
|
||||
if obi_column_get_nb_elements_per_line(self.pointer) == 1 :
|
||||
element_idx = 0
|
||||
else :
|
||||
print("An element name must be specified")
|
||||
return -1
|
||||
return obi_column_set_int(self.pointer, line_nb, element_idx, value)
|
||||
return obi_column_set_int_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'), value)
|
||||
|
||||
def get_item(self, line_nb, element_name):
|
||||
if element_name != "" :
|
||||
element_idx = self.get_element_index_from_name(element_name)
|
||||
else :
|
||||
if obi_column_get_nb_elements_per_line(self.pointer) == 1 :
|
||||
element_idx = 0
|
||||
else :
|
||||
print("An element name must be specified")
|
||||
return -1
|
||||
return obi_column_get_int(self.pointer, line_nb, element_idx)
|
||||
return obi_column_get_int_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))
|
||||
|
||||
|
Reference in New Issue
Block a user