Major update: obiarrays with columns containing indices referring to

character strings.
This commit is contained in:
Celine Mercier
2015-11-06 17:55:15 +01:00
parent 456551ffeb
commit 9b066f4327
35 changed files with 632 additions and 532 deletions

View File

@ -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;
}