Added the handling of errors with the functions to get a value in a

column
This commit is contained in:
Celine Mercier
2015-09-14 17:04:29 +02:00
parent 0e50fbf706
commit 5c3bc03bd2
12 changed files with 69 additions and 35 deletions

View File

@ -1,6 +1,9 @@
cdef extern from *:
ctypedef char* const_char_p "const char*"
cdef extern from "obierrno.h" nogil:
extern int obi_errno
cdef extern from "obidms.h" nogil:
struct OBIDMS_t:
pass

View File

@ -6,8 +6,11 @@ from .capidmscolumn_bool cimport *
cdef class OBIDMS_column_bool(OBIDMS_column) :
def get_item(self, line_nb, element_name):
return obi_column_get_obibool_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))
value = obi_column_get_obibool_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))
if obi_errno > 0 :
raise IndexError(line_nb, element_name)
return value
cdef class OBIDMS_column_bool_read(OBIDMS_column_bool) :

View File

@ -6,7 +6,10 @@ from .capidmscolumn_char cimport *
cdef class OBIDMS_column_char(OBIDMS_column) :
def get_item(self, line_nb, element_name):
return (obi_column_get_obichar_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))).decode(encoding='utf-8')[:1]
value = (obi_column_get_obichar_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))).decode(encoding='utf-8')[:1]
if obi_errno > 0 :
raise IndexError(line_nb, element_name)
return value
cdef class OBIDMS_column_char_read(OBIDMS_column_char) :

View File

@ -6,7 +6,10 @@ from .capidmscolumn_float cimport *
cdef class OBIDMS_column_float(OBIDMS_column) :
def get_item(self, line_nb, element_name):
return obi_column_get_obifloat_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))
value = obi_column_get_obifloat_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))
if obi_errno > 0 :
raise IndexError(line_nb, element_name)
return value
cdef class OBIDMS_column_float_read(OBIDMS_column_float) :

View File

@ -6,7 +6,10 @@ from .capidmscolumn_idx cimport *
cdef class OBIDMS_column_idx(OBIDMS_column) :
def get_item(self, line_nb, element_name):
return obi_column_get_obiidx_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))
value = obi_column_get_obiidx_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))
if obi_errno > 0 :
raise IndexError(line_nb, element_name)
return value
cdef class OBIDMS_column_idx_read(OBIDMS_column_idx) :

View File

@ -6,8 +6,11 @@ from .capidmscolumn_int cimport *
cdef class OBIDMS_column_int(OBIDMS_column) :
def get_item(self, line_nb, element_name):
return obi_column_get_obiint_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))
value = obi_column_get_obiint_with_elt_name(self.pointer, line_nb, element_name.encode('utf-8'))
if obi_errno > 0 :
raise IndexError(line_nb, element_name)
return value
cdef class OBIDMS_column_int_read(OBIDMS_column_int) :