/******************************************************************** * 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 #include #include #include #include #include #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_ */