159 lines
3.5 KiB
C
159 lines
3.5 KiB
C
![]() |
/********************************************************************
|
||
|
* Obiview header file *
|
||
|
********************************************************************/
|
||
|
|
||
|
/**
|
||
|
* @file obiview.h
|
||
|
* @author Celine Mercier (celine.mercier@metabarcoding.org)
|
||
|
* @date 16 December 2015
|
||
|
* @brief Header file for the OBIDMS view functions and structures.
|
||
|
*/
|
||
|
|
||
|
|
||
|
#ifndef OBIVIEW_H_
|
||
|
#define OBIVIEW_H_
|
||
|
|
||
|
|
||
|
#include <stdlib.h>
|
||
|
#include <errno.h>
|
||
|
#include <stdio.h>
|
||
|
#include <stdbool.h>
|
||
|
#include <time.h>
|
||
|
#include <math.h>
|
||
|
|
||
|
#include "obidms.h"
|
||
|
#include "obidmscolumn.h"
|
||
|
#include "obierrno.h"
|
||
|
|
||
|
|
||
|
#define OBIVIEW_NAME_MAX_LENGTH (10239) /**< The maximum length of an OBIDMS view name.
|
||
|
*/
|
||
|
#define OBIVIEW_FILE_NAME "obiviews"
|
||
|
|
||
|
#define LINES_COLUMN_NAME "LINES"
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @brief .
|
||
|
*/
|
||
|
typedef struct Column_reference {
|
||
|
char column_name[OBIDMS_COLUMN_MAX_NAME+1]; /**< Name of the column.
|
||
|
*/
|
||
|
obiversion_t version; /**< Version of the column.
|
||
|
*/
|
||
|
} Column_reference_t, *Column_reference_p;
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @brief .
|
||
|
*/
|
||
|
typedef struct Obiview {
|
||
|
|
||
|
OBIDMS_p dms;
|
||
|
|
||
|
bool read_only;
|
||
|
|
||
|
OBIDMS_column_p line_selection;
|
||
|
|
||
|
OBIDMS_column_p new_line_selection;
|
||
|
|
||
|
index_t line_count;
|
||
|
|
||
|
int column_count;
|
||
|
|
||
|
OBIDMS_column_p columns[MAX_NB_OPENED_COLUMNS];
|
||
|
|
||
|
char name[OBIVIEW_NAME_MAX_LENGTH+1];
|
||
|
|
||
|
char created_from[OBIVIEW_NAME_MAX_LENGTH+1];
|
||
|
|
||
|
int view_number;
|
||
|
|
||
|
} Obiview_t, *Obiview_p;
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @brief .
|
||
|
*/
|
||
|
typedef struct Obiview_infos {
|
||
|
int view_number;
|
||
|
|
||
|
int column_count;
|
||
|
|
||
|
index_t line_count;
|
||
|
|
||
|
char name[OBIVIEW_NAME_MAX_LENGTH+1];
|
||
|
|
||
|
char created_from[OBIVIEW_NAME_MAX_LENGTH+1];
|
||
|
|
||
|
time_t creation_date;
|
||
|
|
||
|
bool all_lines;
|
||
|
|
||
|
Column_reference_t line_selection;
|
||
|
|
||
|
Column_reference_t column_references[MAX_NB_OPENED_COLUMNS];
|
||
|
|
||
|
} Obiview_infos_t, *Obiview_infos_p;
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @brief .
|
||
|
*/
|
||
|
typedef struct Obiviews_header {
|
||
|
size_t header_size;
|
||
|
size_t views_size;
|
||
|
int view_count;
|
||
|
} Obiviews_header_t, *Obiviews_header_p;
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @brief .
|
||
|
*/
|
||
|
typedef struct Obiviews { // not used
|
||
|
Obiviews_header_p header;
|
||
|
|
||
|
Obiview_infos_p views;
|
||
|
|
||
|
} Obiviews_t, *Obiviews_p;
|
||
|
|
||
|
|
||
|
Obiview_p obi_new_view(OBIDMS_p dms, const char* view_name, Obiview_p view_to_clone, index_t* line_selection);
|
||
|
|
||
|
Obiview_p obi_new_view_cloned_from_name(OBIDMS_p dms, const char* view_name, const char* view_to_clone_name, index_t* line_selection);
|
||
|
|
||
|
Obiview_p obi_open_view(OBIDMS_p dms, const char* view_name);
|
||
|
|
||
|
int obi_view_add_column(Obiview_p view,
|
||
|
const char* column_name,
|
||
|
obiversion_t version_number,
|
||
|
OBIType_t data_type,
|
||
|
index_t nb_lines,
|
||
|
index_t nb_elements_per_line,
|
||
|
const char* elements_names,
|
||
|
const char* avl_name,
|
||
|
const char* comments,
|
||
|
bool create);
|
||
|
|
||
|
int obi_view_delete_column(Obiview_p view, const char* column_name);
|
||
|
|
||
|
int obi_select_line(Obiview_p view, index_t line_nb);
|
||
|
|
||
|
int obi_select_lines(Obiview_p view, index_t* line_nbs);
|
||
|
|
||
|
int obi_view_update_lines(Obiview_p view, index_t line_count);
|
||
|
|
||
|
OBIDMS_column_p obi_view_clone_column(Obiview_p view, const char* column_name);
|
||
|
|
||
|
OBIDMS_column_p obi_view_get_column(Obiview_p view, const char* column_name);
|
||
|
|
||
|
OBIDMS_column_p* obi_view_get_pointer_on_column_in_view(Obiview_p view, const char* column_name);
|
||
|
|
||
|
int obi_save_view(Obiview_p view);
|
||
|
|
||
|
int obi_close_view(Obiview_p view);
|
||
|
|
||
|
int obi_save_and_close_view(Obiview_p view);
|
||
|
|
||
|
#endif /* OBIVIEW_H_ */
|