Major update : views
This commit is contained in:
158
src/obiview.h
Normal file
158
src/obiview.h
Normal file
@ -0,0 +1,158 @@
|
||||
/********************************************************************
|
||||
* 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_ */
|
Reference in New Issue
Block a user