Major update: obiarrays with columns containing indices referring to
character strings.
This commit is contained in:
@ -143,7 +143,7 @@ static int obi_column_set_elements_names(OBIDMS_column_p column, const char* ele
|
||||
* @since September 2015
|
||||
* @author Celine Mercier (celine.mercier@metabarcoding.org)
|
||||
*/
|
||||
static size_t get_line_count_per_page(OBIType_t data_type, size_t nb_elements_per_line);
|
||||
static index_t get_line_count_per_page(OBIType_t data_type, index_t nb_elements_per_line);
|
||||
|
||||
|
||||
/************************************************************************
|
||||
@ -463,7 +463,7 @@ int obi_column_set_elements_names(OBIDMS_column_p column, const char* elements_n
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t get_line_count_per_page(OBIType_t data_type, size_t nb_elements_per_line)
|
||||
index_t get_line_count_per_page(OBIType_t data_type, index_t nb_elements_per_line)
|
||||
{
|
||||
return getpagesize() / (obi_sizeof(data_type) * nb_elements_per_line);
|
||||
}
|
||||
@ -595,15 +595,15 @@ obiversion_t obi_column_get_latest_version_from_name(OBIDMS_p dms, const char* c
|
||||
|
||||
size_t obi_get_platform_header_size()
|
||||
{
|
||||
return getpagesize() * 1;
|
||||
return getpagesize() * 2;
|
||||
}
|
||||
|
||||
|
||||
OBIDMS_column_p obi_create_column(OBIDMS_p dms,
|
||||
const char* column_name,
|
||||
OBIType_t data_type,
|
||||
size_t nb_lines,
|
||||
size_t nb_elements_per_line,
|
||||
index_t nb_lines,
|
||||
index_t nb_elements_per_line,
|
||||
const char* elements_names,
|
||||
const char* array_name)
|
||||
{
|
||||
@ -618,7 +618,7 @@ OBIDMS_column_p obi_create_column(OBIDMS_p dms,
|
||||
int column_dir_file_descriptor;
|
||||
size_t header_size;
|
||||
size_t data_size;
|
||||
size_t minimum_line_count;
|
||||
index_t minimum_line_count;
|
||||
|
||||
new_column = NULL;
|
||||
|
||||
@ -664,7 +664,7 @@ OBIDMS_column_p obi_create_column(OBIDMS_p dms,
|
||||
else if ((elements_names != NULL) && (nb_elements_per_line > 1))
|
||||
{
|
||||
char* token;
|
||||
size_t n = 0;
|
||||
index_t n = 0;
|
||||
token = strdup(elements_names);
|
||||
token = strtok(token, ";");
|
||||
while (token != NULL)
|
||||
@ -989,8 +989,8 @@ OBIDMS_column_p obi_clone_column(OBIDMS_p dms,
|
||||
{
|
||||
OBIDMS_column_p column_to_clone;
|
||||
OBIDMS_column_p new_column;
|
||||
size_t nb_lines;
|
||||
size_t nb_elements_per_line;
|
||||
index_t nb_lines;
|
||||
index_t nb_elements_per_line;
|
||||
size_t data_size;
|
||||
OBIType_t data_type;
|
||||
|
||||
@ -1083,7 +1083,7 @@ int obi_truncate_column_to_lines_used(OBIDMS_column_p column) // TODO is it nece
|
||||
{
|
||||
size_t file_size;
|
||||
size_t data_size;
|
||||
size_t new_line_count;
|
||||
index_t new_line_count;
|
||||
double multiple;
|
||||
int column_dir_file_descriptor;
|
||||
int column_file_descriptor;
|
||||
@ -1180,8 +1180,8 @@ int obi_enlarge_column(OBIDMS_column_p column)
|
||||
size_t old_data_size;
|
||||
size_t new_data_size;
|
||||
size_t header_size;
|
||||
size_t old_line_count;
|
||||
size_t new_line_count;
|
||||
index_t old_line_count;
|
||||
index_t new_line_count;
|
||||
int column_dir_file_descriptor;
|
||||
int column_file_descriptor;
|
||||
char* column_file_name;
|
||||
@ -1316,10 +1316,10 @@ int obi_truncate_and_close_column(OBIDMS_column_p column)
|
||||
|
||||
|
||||
void obi_ini_to_NA_values(OBIDMS_column_p column,
|
||||
size_t first_line_nb,
|
||||
size_t nb_lines)
|
||||
index_t first_line_nb,
|
||||
index_t nb_lines)
|
||||
{
|
||||
size_t i, start, end, nb_elements;
|
||||
index_t i, start, end, nb_elements;
|
||||
|
||||
nb_elements = nb_lines*((column->header)->nb_elements_per_line);
|
||||
start = first_line_nb*((column->header)->nb_elements_per_line);
|
||||
@ -1355,14 +1355,14 @@ void obi_ini_to_NA_values(OBIDMS_column_p column,
|
||||
|
||||
case OBI_IDX: for (i=start;i<end;i++)
|
||||
{
|
||||
*(((obiidx_t*) (column->data)) + i) = OBIIdx_NA;
|
||||
*(((index_t*) (column->data)) + i) = OBIIdx_NA;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
OBIDMS_column_header_p obi_column_get_header_from_name(OBIDMS_p dms, const char* column_name) // ADD VERSION ARGUMENT
|
||||
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 header;
|
||||
OBIDMS_column_directory_p column_directory;
|
||||
@ -1391,7 +1391,7 @@ OBIDMS_column_header_p obi_column_get_header_from_name(OBIDMS_p dms, const char*
|
||||
}
|
||||
|
||||
// Calculate the header size
|
||||
header_size = obi_get_platform_header_size();
|
||||
header_size = obi_get_platform_header_size(); // TODO read in header itself
|
||||
|
||||
// Get the latest version number
|
||||
version_number = obi_get_latest_version_number(column_directory);
|
||||
@ -1458,17 +1458,17 @@ int obi_unmap_header(OBIDMS_column_header_p header)
|
||||
|
||||
|
||||
// TODO to be rewritten in an optimized and safe way
|
||||
size_t obi_column_get_element_index_from_name(OBIDMS_column_p column, const char* element_name)
|
||||
index_t obi_column_get_element_index_from_name(OBIDMS_column_p column, const char* element_name)
|
||||
{
|
||||
char* elements_names;
|
||||
char* name;
|
||||
size_t element_index;
|
||||
index_t element_index;
|
||||
|
||||
elements_names = strdup((column->header)->elements_names);
|
||||
if (elements_names == NULL)
|
||||
{
|
||||
obidebug(1, "\nError strdup-ing the elements names");
|
||||
return SIZE_MAX; //TODO
|
||||
return OBIIdx_NA;
|
||||
}
|
||||
|
||||
element_index = 0;
|
||||
@ -1494,7 +1494,7 @@ size_t obi_column_get_element_index_from_name(OBIDMS_column_p column, const char
|
||||
|
||||
obidebug(1, "\nCan't find an element name");
|
||||
free(elements_names);
|
||||
return SIZE_MAX; //TODO
|
||||
return OBIIdx_NA;
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user