diff --git a/python/obitools3/dms/view/view.pyx b/python/obitools3/dms/view/view.pyx index 26e3953..250749e 100644 --- a/python/obitools3/dms/view/view.pyx +++ b/python/obitools3/dms/view/view.pyx @@ -174,19 +174,21 @@ cdef class View(OBIWrapper) : def keys(self): - cdef int i - cdef Obiview_p pointer = self.pointer() - cdef int nb_column = pointer.infos.column_count - cdef Alias_column_pair_p column_p = pointer.infos.column_references + + cdef str col_alias + cdef int i + cdef Obiview_p pointer = self.pointer() + cdef int nb_column = pointer.infos.column_count + cdef Alias_column_pair_p column_p = pointer.infos.column_references if not self.active() : raise OBIObjectClosedInstance() for i in range(nb_column) : - col_alias = bytes2str(pointer.infos.column_references[i].alias) + col_alias = bytes2str(column_p[i].alias) yield col_alias - - + + def get_column(self, object column_name): @@ -194,8 +196,23 @@ cdef class View(OBIWrapper) : raise OBIObjectClosedInstance() return Column.open(self, column_name) - - + + + def get_column_with_idx(self, + int column_idx): + + cdef Obiview_p pointer = self.pointer() + cdef int nb_column = pointer.infos.column_count + + if not self.active() : + raise OBIObjectClosedInstance() + + if column_idx > nb_column : + raise IndexError(column_idx, "No column with this index") + + return Column.open(self, pointer.infos.column_references[column_idx].alias) + + cpdef delete_column(self, object column_name) :