Added cython subclasses for columns with _writable or _read for each
data type. Trying to set a value on a _read subclass raises an exception.
This commit is contained in:
@ -1,11 +1,11 @@
|
||||
#cython: language_level=3
|
||||
|
||||
from .capidmscolumn cimport *
|
||||
from obitools3.obidms.obidmscolumn.obidmscolumn_int.capidmscolumn_int import OBIDMS_column_int
|
||||
from obitools3.obidms.obidmscolumn.obidmscolumn_float.capidmscolumn_float import OBIDMS_column_float
|
||||
from obitools3.obidms.obidmscolumn.obidmscolumn_bool.capidmscolumn_bool import OBIDMS_column_bool
|
||||
from obitools3.obidms.obidmscolumn.obidmscolumn_char.capidmscolumn_char import OBIDMS_column_char
|
||||
from obitools3.obidms.obidmscolumn.obidmscolumn_idx.capidmscolumn_idx import OBIDMS_column_idx
|
||||
from obitools3.obidms.obidmscolumn.obidmscolumn_int.capidmscolumn_int import *
|
||||
from obitools3.obidms.obidmscolumn.obidmscolumn_float.capidmscolumn_float import *
|
||||
from obitools3.obidms.obidmscolumn.obidmscolumn_bool.capidmscolumn_bool import *
|
||||
from obitools3.obidms.obidmscolumn.obidmscolumn_char.capidmscolumn_char import *
|
||||
from obitools3.obidms.obidmscolumn.obidmscolumn_idx.capidmscolumn_idx import *
|
||||
|
||||
|
||||
cdef class OBIDMS_column:
|
||||
@ -88,39 +88,61 @@ cdef class OBIDMS_column:
|
||||
type = obi_column_get_data_type_from_name(dms, column_name_b)
|
||||
|
||||
if type == 1 :
|
||||
column = OBIDMS_column_int(dms_name, column_name,
|
||||
create, clone, clone_data,
|
||||
version_number, type,
|
||||
nb_lines, nb_elements_per_line,
|
||||
elements_names)
|
||||
if (create or clone) :
|
||||
column = OBIDMS_column_int_writable(dms_name, column_name,
|
||||
create, clone, clone_data,
|
||||
version_number, type,
|
||||
nb_lines, nb_elements_per_line,
|
||||
elements_names)
|
||||
else :
|
||||
column = OBIDMS_column_int_read(dms_name, column_name,
|
||||
create, clone, clone_data,
|
||||
version_number, type,
|
||||
nb_lines, nb_elements_per_line,
|
||||
elements_names)
|
||||
|
||||
|
||||
elif type == 2 :
|
||||
column = OBIDMS_column_float(dms_name, column_name,
|
||||
create, clone, clone_data,
|
||||
version_number, type,
|
||||
nb_lines, nb_elements_per_line,
|
||||
elements_names)
|
||||
if (create or clone) :
|
||||
column = OBIDMS_column_float_writable(dms_name, column_name,
|
||||
create, clone, clone_data,
|
||||
version_number, type,
|
||||
nb_lines, nb_elements_per_line,
|
||||
elements_names)
|
||||
else :
|
||||
column = OBIDMS_column_float_read(dms_name, column_name,
|
||||
create, clone, clone_data,
|
||||
version_number, type,
|
||||
nb_lines, nb_elements_per_line,
|
||||
elements_names)
|
||||
|
||||
elif type == 3 :
|
||||
column = OBIDMS_column_bool(dms_name, column_name,
|
||||
create, clone, clone_data,
|
||||
version_number, type,
|
||||
nb_lines, nb_elements_per_line,
|
||||
elements_names)
|
||||
if (create or clone) :
|
||||
column = OBIDMS_column_bool_writable(dms_name, column_name,
|
||||
create, clone, clone_data,
|
||||
version_number, type,
|
||||
nb_lines, nb_elements_per_line,
|
||||
elements_names)
|
||||
else :
|
||||
column = OBIDMS_column_bool_read(dms_name, column_name,
|
||||
create, clone, clone_data,
|
||||
version_number, type,
|
||||
nb_lines, nb_elements_per_line,
|
||||
elements_names)
|
||||
|
||||
elif type == 4 :
|
||||
column = OBIDMS_column_char(dms_name, column_name,
|
||||
create, clone, clone_data,
|
||||
version_number, type,
|
||||
nb_lines, nb_elements_per_line,
|
||||
elements_names)
|
||||
|
||||
elif type == 5 :
|
||||
column = OBIDMS_column_idx(dms_name, column_name,
|
||||
create, clone, clone_data,
|
||||
version_number, type,
|
||||
nb_lines, nb_elements_per_line,
|
||||
elements_names)
|
||||
if (create or clone) :
|
||||
column = OBIDMS_column_char_writable(dms_name, column_name,
|
||||
create, clone, clone_data,
|
||||
version_number, type,
|
||||
nb_lines, nb_elements_per_line,
|
||||
elements_names)
|
||||
else :
|
||||
column = OBIDMS_column_char_read(dms_name, column_name,
|
||||
create, clone, clone_data,
|
||||
version_number, type,
|
||||
nb_lines, nb_elements_per_line,
|
||||
elements_names)
|
||||
|
||||
else :
|
||||
"Problem with the data type"
|
||||
|
@ -4,11 +4,20 @@ from .capidmscolumn_bool cimport *
|
||||
|
||||
|
||||
cdef class OBIDMS_column_bool(OBIDMS_column) :
|
||||
|
||||
def get_item(self, line_nb, element_name):
|
||||
return obi_column_get_bool_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))
|
||||
|
||||
|
||||
cdef class OBIDMS_column_bool_read(OBIDMS_column_bool) :
|
||||
|
||||
def set_item(self, line_nb, element_name, value):
|
||||
raise Exception('Column is read-only')
|
||||
|
||||
|
||||
cdef class OBIDMS_column_bool_writable(OBIDMS_column_bool) :
|
||||
|
||||
def set_item(self, line_nb, element_name, 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):
|
||||
return obi_column_get_bool_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))
|
||||
|
||||
|
@ -4,11 +4,20 @@ from .capidmscolumn_char cimport *
|
||||
|
||||
|
||||
cdef class OBIDMS_column_char(OBIDMS_column) :
|
||||
|
||||
|
||||
def get_item(self, line_nb, element_name):
|
||||
return (obi_column_get_char_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))).decode(encoding='utf-8')[:1]
|
||||
|
||||
cdef class OBIDMS_column_char_read(OBIDMS_column_char) :
|
||||
|
||||
def set_item(self, line_nb, element_name, value):
|
||||
raise Exception('Column is read-only')
|
||||
|
||||
|
||||
cdef class OBIDMS_column_char_writable(OBIDMS_column_char) :
|
||||
|
||||
def set_item(self, line_nb, element_name, 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):
|
||||
return (obi_column_get_char_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))).decode(encoding='utf-8')[:1]
|
||||
|
||||
|
@ -4,10 +4,19 @@ from .capidmscolumn_float cimport *
|
||||
|
||||
|
||||
cdef class OBIDMS_column_float(OBIDMS_column) :
|
||||
|
||||
|
||||
def get_item(self, line_nb, element_name):
|
||||
return obi_column_get_float_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))
|
||||
|
||||
cdef class OBIDMS_column_float_read(OBIDMS_column_float) :
|
||||
|
||||
def set_item(self, line_nb, element_name, value):
|
||||
raise Exception('Column is read-only')
|
||||
|
||||
|
||||
cdef class OBIDMS_column_float_writable(OBIDMS_column_float) :
|
||||
|
||||
def set_item(self, line_nb, element_name, 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):
|
||||
return obi_column_get_float_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))
|
||||
|
@ -4,10 +4,18 @@ from .capidmscolumn_idx cimport *
|
||||
|
||||
|
||||
cdef class OBIDMS_column_idx(OBIDMS_column) :
|
||||
|
||||
def set_item(self, line_nb, element_name, 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):
|
||||
return obi_column_get_idx_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))
|
||||
|
||||
|
||||
cdef class OBIDMS_column_idx_read(OBIDMS_column_idx) :
|
||||
|
||||
def set_item(self, line_nb, element_name, value):
|
||||
raise Exception('Column is read-only')
|
||||
|
||||
|
||||
cdef class OBIDMS_column_idx_writable(OBIDMS_column_idx) :
|
||||
|
||||
def set_item(self, line_nb, element_name, value):
|
||||
return obi_column_set_idx_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'), value)
|
||||
|
@ -4,11 +4,19 @@ from .capidmscolumn_int cimport *
|
||||
|
||||
|
||||
cdef class OBIDMS_column_int(OBIDMS_column) :
|
||||
|
||||
def set_item(self, line_nb, element_name, 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):
|
||||
return obi_column_get_int_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))
|
||||
|
||||
|
||||
cdef class OBIDMS_column_int_read(OBIDMS_column_int) :
|
||||
|
||||
def set_item(self, line_nb, element_name, value):
|
||||
raise Exception('Column is read-only')
|
||||
|
||||
|
||||
|
||||
cdef class OBIDMS_column_int_writable(OBIDMS_column_int) :
|
||||
|
||||
def set_item(self, line_nb, element_name, value):
|
||||
return obi_column_set_int_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'), value)
|
||||
|
Reference in New Issue
Block a user