From 3cedd00d7fef0b6392c29b7e7dc1c0494aca6d76 Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Tue, 20 Dec 2016 11:13:57 +0100 Subject: [PATCH] Add register function for column type --- python/obitools3/obidms/_obidmscolumn.pxd | 4 +++- python/obitools3/obidms/_obidmscolumn.pyx | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/python/obitools3/obidms/_obidmscolumn.pxd b/python/obitools3/obidms/_obidmscolumn.pxd index 8ffaf9f..3c9460a 100644 --- a/python/obitools3/obidms/_obidmscolumn.pxd +++ b/python/obitools3/obidms/_obidmscolumn.pxd @@ -4,6 +4,7 @@ from .capi.obidmscolumn cimport OBIDMS_column_p from .capi.obiview cimport Obiview_p from .capi.obitypes cimport obiversion_t, OBIType_t, index_t + from ._obidmscolumn_int cimport OBIDMS_column_int, \ OBIDMS_column_multi_elts_int @@ -49,4 +50,5 @@ cdef class OBIDMS_column_line: cdef OBIDMS_column _column cdef index_t _index - + +cdef register_column_class(OBIType_t obitype,type classe) diff --git a/python/obitools3/obidms/_obidmscolumn.pyx b/python/obitools3/obidms/_obidmscolumn.pyx index b7ffbd3..5bf5673 100644 --- a/python/obitools3/obidms/_obidmscolumn.pyx +++ b/python/obitools3/obidms/_obidmscolumn.pyx @@ -1,5 +1,7 @@ #cython: language_level=3 +cdef dict __OBIDMS_COLUMN_CLASS__ = {} + cdef class OBIDMS_column : # Note: should only be initialized through a subclass @@ -15,6 +17,8 @@ cdef class OBIDMS_column : self._alias = column_alias self._pointer = column_pp self._view = view + + cpdef getitem(self,index_t line_nb, str element_name): def __setitem__(self, index_t line_nb, object value): self.set_line(line_nb, value) @@ -189,3 +193,8 @@ cdef class OBIDMS_column_line : ###################################################################################################### + +cdef register_column_class(OBIType_t obitype,type classe): + assert issubclass(classe,OBIDMS_column) + + __OBIDMS_COLUMN_CLASS__[obitype]=classe