obi ls: now done in C (preparing things for R packages to read DMS) and
switch to version 3.0.0b36
This commit is contained in:
@ -2435,17 +2435,77 @@ char* obi_column_formatted_infos(OBIDMS_column_p column, bool detailed)
|
||||
{
|
||||
char* column_infos = NULL;
|
||||
char* elt_names = NULL;
|
||||
char* column_name = NULL;
|
||||
// should be in view.c because alias exists in the context of view
|
||||
column_infos = malloc(2048 * sizeof(char)); // TODO
|
||||
char* data_type_str = NULL;
|
||||
char* comments = NULL;
|
||||
|
||||
// Get element names informations
|
||||
elt_names = obi_get_formatted_elements_names(column);
|
||||
if (elt_names == NULL)
|
||||
{
|
||||
obidebug(1, "\nError getting formatted elements names for formatted columns infos");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Get data type informations
|
||||
data_type_str = name_data_type((column->header)->returned_data_type);
|
||||
if (data_type_str == NULL)
|
||||
{
|
||||
obidebug(1, "\nError getting formatted data type for formatted columns infos");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// "column_name, data type: OBI_TYPE, element names: [formatted element names](, all comments)"
|
||||
// Get commments if detailed informations required
|
||||
if (detailed)
|
||||
comments = (column->header)->comments;
|
||||
|
||||
// Build the string of formatted infos, allocating memory as needed
|
||||
|
||||
// Data type
|
||||
column_infos = (char*) malloc((strlen("data type: ")+strlen(data_type_str)+1) * sizeof(char));
|
||||
if (column_infos == NULL)
|
||||
{
|
||||
obi_set_errno(OBI_MALLOC_ERROR);
|
||||
obidebug(1, "\nError allocating memory for formatted column infos");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
strcpy(column_infos, "data type: ");
|
||||
strcat(column_infos, data_type_str);
|
||||
|
||||
// Element names if more than 1
|
||||
if ((column->header)->nb_elements_per_line > 1)
|
||||
{
|
||||
column_infos = realloc(column_infos, (strlen(column_infos)+strlen(", elements: ")+strlen(elt_names)+1) * sizeof(char));
|
||||
if (column_infos == NULL)
|
||||
{
|
||||
obi_set_errno(OBI_MALLOC_ERROR);
|
||||
obidebug(1, "\nError allocating memory for formatted column infos");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
strcat(column_infos, ", elements: ");
|
||||
strcat(column_infos, elt_names);
|
||||
}
|
||||
|
||||
if (detailed && (strlen(comments)>2)) // Add all comments if required and not empty
|
||||
{
|
||||
column_infos = realloc(column_infos, (strlen(column_infos)+strlen("\nComments:\n")+strlen(comments)+1) * sizeof(char));
|
||||
if (column_infos == NULL)
|
||||
{
|
||||
obi_set_errno(OBI_MALLOC_ERROR);
|
||||
obidebug(1, "\nError allocating memory for formatted column infos");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
strcat(column_infos, "\nComments:\n");
|
||||
strcat(column_infos, comments);
|
||||
}
|
||||
|
||||
// "data type: OBI_TYPE, element names: [formatted element names](, all comments)"
|
||||
|
||||
free(elt_names);
|
||||
free(data_type_str);
|
||||
|
||||
return column_infos;
|
||||
}
|
||||
|
||||
@ -2492,7 +2552,6 @@ int obi_column_prepare_to_set_value(OBIDMS_column_p column, index_t line_nb, ind
|
||||
}
|
||||
|
||||
|
||||
|
||||
int obi_column_prepare_to_get_value(OBIDMS_column_p column, index_t line_nb)
|
||||
{
|
||||
if ((line_nb+1) > ((column->header)->line_count))
|
||||
|
Reference in New Issue
Block a user