C: Columns: rounding column growth to ceil to avoid looping on small
values
This commit is contained in:
@ -1973,7 +1973,7 @@ int obi_enlarge_column(OBIDMS_column_p column)
|
||||
|
||||
// Calculate the new file size
|
||||
old_line_count = (column->header)->line_count;
|
||||
new_line_count = old_line_count * COLUMN_GROWTH_FACTOR;
|
||||
new_line_count = ceil((double) old_line_count * (double) COLUMN_GROWTH_FACTOR);
|
||||
|
||||
if (new_line_count > MAXIMUM_LINE_COUNT)
|
||||
{
|
||||
@ -2381,6 +2381,54 @@ char* obi_get_elements_names(OBIDMS_column_p column)
|
||||
}
|
||||
|
||||
|
||||
char* obi_get_formatted_elements_names(OBIDMS_column_p column)
|
||||
{
|
||||
char* elements_names;
|
||||
int i, j;
|
||||
int elt_idx;
|
||||
int len;
|
||||
|
||||
elements_names = (char*) malloc(((column->header)->elements_names_length + (column->header)->nb_elements_per_line) * sizeof(char));
|
||||
if (elements_names == NULL)
|
||||
{
|
||||
obi_set_errno(OBI_MALLOC_ERROR);
|
||||
obidebug(1, "\nError allocating memory for elements names");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
j = 0;
|
||||
for (i=0; i < (column->header)->nb_elements_per_line; i++)
|
||||
{
|
||||
elt_idx = ((column->header)->elements_names_idx)[i];
|
||||
len = strlen(((column->header)->elements_names)+elt_idx);
|
||||
memcpy(elements_names+j, ((column->header)->elements_names)+elt_idx, len*sizeof(char));
|
||||
j = j + len;
|
||||
elements_names[j] = ';';
|
||||
j++;
|
||||
elements_names[j] = ' ';
|
||||
j++;
|
||||
}
|
||||
|
||||
elements_names[j - 1] = '\0';
|
||||
|
||||
return elements_names;
|
||||
}
|
||||
|
||||
|
||||
char* obi_column_formatted_infos(OBIDMS_column_p column)
|
||||
{
|
||||
char* column_infos;
|
||||
char* elt_names;
|
||||
|
||||
column_infos = malloc(1024 * sizeof(char));
|
||||
|
||||
elt_names = obi_get_formatted_elements_names(column);
|
||||
|
||||
|
||||
free(elt_names);
|
||||
return column_infos;
|
||||
}
|
||||
|
||||
|
||||
int obi_column_prepare_to_set_value(OBIDMS_column_p column, index_t line_nb, index_t elt_idx)
|
||||
{
|
||||
|
Reference in New Issue
Block a user