From f8895e879d759fe7c3b70b92b8aa56e7fc9ef765 Mon Sep 17 00:00:00 2001 From: Celine Mercier Date: Tue, 11 Jul 2017 11:36:42 +0200 Subject: [PATCH] Cython API: Added a function to get a column from its index in the view --- python/obitools3/dms/view/view.pyx | 35 ++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 9 deletions(-) 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) :