diff --git a/python/obitools3/obidms/_obidms.pyx b/python/obitools3/obidms/_obidms.pyx index 5e352e8..9758e2b 100644 --- a/python/obitools3/obidms/_obidms.pyx +++ b/python/obitools3/obidms/_obidms.pyx @@ -95,7 +95,7 @@ cdef class OBIDMS : column_name = entry.stem column_name_b = str2bytes(column_name) dms[column_name] = {} - header = obi_column_get_header_from_name(self.pointer, column_name_b) + header = obi_column_get_header_from_name(self.pointer, column_name_b, -1) data_type = bytes2str(name_data_type(header.data_type)) line_count = header.line_count creation_date = bytes2str(obi_column_format_date(header.creation_date)) @@ -137,7 +137,7 @@ cdef class OBIDMS : # Get the header of the latest version of the column if # some needed informations are not provided if ((not data_type or not nb_elements_per_line) and not create) : - header = obi_column_get_header_from_name(self.pointer, column_name_b) + header = obi_column_get_header_from_name(self.pointer, column_name_b, version_number) # Get the data type if not provided if not data_type : diff --git a/python/obitools3/obidms/capi/obidmscolumn.pxd b/python/obitools3/obidms/capi/obidmscolumn.pxd index 497e03a..d08a2c2 100644 --- a/python/obitools3/obidms/capi/obidmscolumn.pxd +++ b/python/obitools3/obidms/capi/obidmscolumn.pxd @@ -63,7 +63,8 @@ cdef extern from "obidmscolumn.h" nogil: const_char_p column_name) OBIDMS_column_header_p obi_column_get_header_from_name(OBIDMS_p dms, - const_char_p column_name) + const_char_p column_name, + obiversion_t version_number) int obi_unmap_header(OBIDMS_column_header_p header) diff --git a/src/obidmscolumn.c b/src/obidmscolumn.c index ec5d93b..711869e 100644 --- a/src/obidmscolumn.c +++ b/src/obidmscolumn.c @@ -1185,14 +1185,13 @@ void obi_ini_to_NA_values(OBIDMS_column_p column, } -OBIDMS_column_header_p obi_column_get_header_from_name(OBIDMS_p dms, const char* column_name) // TODO ADD VERSION ARGUMENT +OBIDMS_column_header_p obi_column_get_header_from_name(OBIDMS_p dms, const char* column_name, obiversion_t version_number) { OBIDMS_column_header_p header; OBIDMS_column_directory_p column_directory; char* column_file_name; int column_file_descriptor; size_t header_size; - obiversion_t version_number; // Get the column directory structure associated to the column column_directory = obi_open_column_directory(dms, column_name); @@ -1202,12 +1201,15 @@ OBIDMS_column_header_p obi_column_get_header_from_name(OBIDMS_p dms, const char* return NULL; } - // Get the latest version number - version_number = obi_get_latest_version_number(column_directory); + // Get the latest version number if not provided if (version_number < 0) { - obidebug(1, "\nError getting the latest version number in a column directory"); - return NULL; + version_number = obi_get_latest_version_number(column_directory); + if (version_number < 0) + { + obidebug(1, "\nError getting the latest version number in a column directory"); + return NULL; + } } // Get the column file name diff --git a/src/obidmscolumn.h b/src/obidmscolumn.h index 64d89ae..7df6d90 100644 --- a/src/obidmscolumn.h +++ b/src/obidmscolumn.h @@ -169,6 +169,7 @@ size_t obi_get_platform_header_size(); * @param nb_elements_per_line The number of elements per line. * @param elements_names The names of the elements with ';' as separator. * @param array_name The name of the array if there is one associated with the column. + * @param comments Optional comments associated with the column. * * @returns A pointer on the newly created column structure. * @retval NULL if an error occurred. @@ -287,7 +288,7 @@ int obi_truncate_and_close_column(OBIDMS_column_p column); * @since August 2015 * @author Celine Mercier (celine.mercier@metabarcoding.org) */ -void obi_ini_to_NA_values(OBIDMS_column_p column, index_t first_line_nb, index_t nb_lines); // TO make private? +void obi_ini_to_NA_values(OBIDMS_column_p column, index_t first_line_nb, index_t nb_lines); // TODO make private? /** @@ -297,6 +298,8 @@ void obi_ini_to_NA_values(OBIDMS_column_p column, index_t first_line_nb, index_t * * @param dms A pointer on an OBIDMS. * @param column_name The name of an OBIDMS column. + * @param version_number The version of the column from which the header should be + * retrieved (-1: latest version). * * @returns A pointer on the mmapped header of the column. * @retval NULL if an error occurred. @@ -304,7 +307,7 @@ void obi_ini_to_NA_values(OBIDMS_column_p column, index_t first_line_nb, index_t * @since October 2015 * @author Celine Mercier (celine.mercier@metabarcoding.org) */ -OBIDMS_column_header_p obi_column_get_header_from_name(OBIDMS_p dms, const char* column_name); +OBIDMS_column_header_p obi_column_get_header_from_name(OBIDMS_p dms, const char* column_name, obiversion_t version_number); /**