/* $Id: cpl_table.h,v 1.52 2007/10/10 14:23:56 cizzo Exp $ * * This file is part of the ESO Common Pipeline Library * Copyright (C) 2001-2004 European Southern Observatory * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* * $Author: cizzo $ * $Date: 2007/10/10 14:23:56 $ * $Revision: 1.52 $ * $Name: $ */ #ifndef CPL_TABLE_H #define CPL_TABLE_H #include #include "cpl_io.h" #include "cpl_type.h" #include "cpl_propertylist.h" #include "cpl_array.h" CPL_BEGIN_DECLS typedef struct _cpl_table_ cpl_table; /* * Legal logical operators for selections: */ typedef enum _cpl_table_select_operator_ { CPL_EQUAL_TO = 0, CPL_NOT_EQUAL_TO, CPL_GREATER_THAN, CPL_NOT_GREATER_THAN, CPL_LESS_THAN, CPL_NOT_LESS_THAN } cpl_table_select_operator; /* * Constructors and destructors: */ cpl_table *cpl_table_new(int); cpl_error_code cpl_table_new_column(cpl_table *, const char *, cpl_type); cpl_error_code cpl_table_new_column_array(cpl_table *, const char *, cpl_type, int); cpl_error_code cpl_table_wrap_int(cpl_table *, int *, const char *); cpl_error_code cpl_table_wrap_float(cpl_table *, float *, const char *); cpl_error_code cpl_table_wrap_double(cpl_table *, double *, const char *); cpl_error_code cpl_table_wrap_string(cpl_table *, char **, const char *); void *cpl_table_unwrap(cpl_table *, const char *); cpl_error_code cpl_table_copy_structure(cpl_table *, const cpl_table *); void cpl_table_delete(cpl_table *); /* * Methods: */ int cpl_table_get_nrow(const cpl_table *); int cpl_table_get_ncol(const cpl_table *); cpl_type cpl_table_get_column_type(const cpl_table *, const char *name); cpl_error_code cpl_table_set_column_unit(cpl_table *, const char *name, const char *unit); const char *cpl_table_get_column_unit(const cpl_table *, const char *name); cpl_error_code cpl_table_set_column_format(cpl_table *, const char *name, const char *format); const char *cpl_table_get_column_format(const cpl_table *, const char *name); cpl_error_code cpl_table_set_column_depth(cpl_table *, const char *, int); int cpl_table_get_column_depth(const cpl_table *, const char *); int cpl_table_get_column_dimensions(const cpl_table *, const char *); cpl_error_code cpl_table_set_column_dimensions(cpl_table *, const char *, cpl_array *); int cpl_table_get_column_dimension(cpl_table *, const char *, int); int *cpl_table_get_data_int(cpl_table *, const char *name); const int *cpl_table_get_data_int_const(const cpl_table *, const char *name); float *cpl_table_get_data_float(cpl_table *, const char *name); const float *cpl_table_get_data_float_const(const cpl_table *, const char *name); double *cpl_table_get_data_double(cpl_table *, const char *name); const double *cpl_table_get_data_double_const(const cpl_table *, const char *name); char **cpl_table_get_data_string(cpl_table *, const char *name); const char **cpl_table_get_data_string_const(const cpl_table *, const char *name); cpl_array **cpl_table_get_data_array(cpl_table *, const char *); const cpl_array **cpl_table_get_data_array_const(const cpl_table *, const char *); double cpl_table_get(const cpl_table *, const char *, int, int *null); int cpl_table_get_int(const cpl_table *, const char *, int, int *null); float cpl_table_get_float(const cpl_table *, const char *, int, int *null); double cpl_table_get_double(const cpl_table *, const char *, int, int *null); const char *cpl_table_get_string(const cpl_table *, const char *, int); const cpl_array *cpl_table_get_array(const cpl_table *, const char *, int); cpl_error_code cpl_table_set(cpl_table *, const char *, int, double); cpl_error_code cpl_table_set_int(cpl_table *, const char *, int, int); cpl_error_code cpl_table_set_float(cpl_table *, const char *, int, float); cpl_error_code cpl_table_set_double(cpl_table *, const char *, int, double); cpl_error_code cpl_table_set_string(cpl_table *, const char *, int, const char *); cpl_error_code cpl_table_set_array(cpl_table *, const char *, int, const cpl_array *); cpl_error_code cpl_table_fill_column_window(cpl_table *, const char *, int, int, double); cpl_error_code cpl_table_fill_column_window_int(cpl_table *, const char *, int, int, int); cpl_error_code cpl_table_fill_column_window_float(cpl_table *, const char *, int, int, float); cpl_error_code cpl_table_fill_column_window_double(cpl_table *, const char *, int, int, double); cpl_error_code cpl_table_fill_column_window_string(cpl_table *, const char *, int, int, char *); cpl_error_code cpl_table_fill_column_window_array(cpl_table *, const char *, int, int, cpl_array *); cpl_error_code cpl_table_copy_data_int(cpl_table *, const char *, const int *); cpl_error_code cpl_table_copy_data_float(cpl_table *, const char *, const float *); cpl_error_code cpl_table_copy_data_double(cpl_table *, const char *, const double *); cpl_error_code cpl_table_copy_data_string(cpl_table *, const char *, const char **); cpl_error_code cpl_table_shift_column(cpl_table *, const char *, int); cpl_error_code cpl_table_set_invalid(cpl_table *, const char *, int); cpl_error_code cpl_table_set_column_invalid(cpl_table *, const char *, int, int); int cpl_table_is_valid(const cpl_table *, const char *, int); int cpl_table_count_invalid(const cpl_table *, const char *); int cpl_table_has_invalid(const cpl_table *table, const char *name); int cpl_table_has_valid(const cpl_table *table, const char *name); cpl_error_code cpl_table_fill_invalid_int(cpl_table *, const char *, int); cpl_error_code cpl_table_fill_invalid_float(cpl_table *, const char *, float); cpl_error_code cpl_table_fill_invalid_double(cpl_table *, const char *, double); cpl_error_code cpl_table_erase_column(cpl_table *, const char *); cpl_error_code cpl_table_move_column(cpl_table *, const char *, cpl_table *); cpl_error_code cpl_table_duplicate_column(cpl_table *, const char *, const cpl_table *, const char *); cpl_error_code cpl_table_name_column(cpl_table *, const char *, const char *); int cpl_table_has_column(const cpl_table *, const char *); const char *cpl_table_get_column_name(const cpl_table *); cpl_array *cpl_table_get_column_names(const cpl_table *table); cpl_error_code cpl_table_set_size(cpl_table *, int); cpl_table *cpl_table_duplicate(const cpl_table *); cpl_table *cpl_table_extract(const cpl_table *, int, int); cpl_table *cpl_table_extract_selected(const cpl_table *); cpl_error_code cpl_table_erase_selected(cpl_table *); cpl_error_code cpl_table_erase_window(cpl_table *, int, int); cpl_error_code cpl_table_insert_window(cpl_table *, int, int); int cpl_table_compare_structure(const cpl_table *, const cpl_table *); cpl_error_code cpl_table_insert(cpl_table *, const cpl_table *, int); cpl_error_code cpl_table_cast_column(cpl_table *, const char *, const char *, cpl_type); cpl_error_code cpl_table_add_columns(cpl_table *, const char *, const char *); cpl_error_code cpl_table_subtract_columns(cpl_table *, const char *, const char *); cpl_error_code cpl_table_multiply_columns(cpl_table *, const char *, const char *); cpl_error_code cpl_table_divide_columns(cpl_table *, const char *, const char *); cpl_error_code cpl_table_add_scalar(cpl_table *, const char *, double); cpl_error_code cpl_table_subtract_scalar(cpl_table *, const char *, double); cpl_error_code cpl_table_multiply_scalar(cpl_table *, const char *, double); cpl_error_code cpl_table_divide_scalar(cpl_table *, const char *, double); cpl_error_code cpl_table_abs_column(cpl_table *, const char *); cpl_error_code cpl_table_logarithm_column(cpl_table *, const char *, double); cpl_error_code cpl_table_power_column(cpl_table *, const char *, double); cpl_error_code cpl_table_exponential_column(cpl_table *, const char *, double); cpl_error_code cpl_table_erase_invalid_rows(cpl_table *); cpl_error_code cpl_table_erase_invalid(cpl_table *); double cpl_table_get_column_max(const cpl_table *, const char *); double cpl_table_get_column_min(const cpl_table *, const char *); cpl_error_code cpl_table_get_column_maxpos(const cpl_table *, const char *, int *); cpl_error_code cpl_table_get_column_minpos(const cpl_table *, const char *, int *); double cpl_table_get_column_mean(const cpl_table *, const char *); double cpl_table_get_column_median(const cpl_table *, const char *); double cpl_table_get_column_stdev(const cpl_table *, const char *); cpl_error_code cpl_table_sort(cpl_table *, const cpl_propertylist *); int cpl_table_and_selected_window(cpl_table *, int, int); int cpl_table_or_selected_window(cpl_table *, int, int); int cpl_table_not_selected(cpl_table *); cpl_error_code cpl_table_select_row(cpl_table *, int); cpl_error_code cpl_table_unselect_row(cpl_table *, int); cpl_error_code cpl_table_select_all(cpl_table *); cpl_error_code cpl_table_unselect_all(cpl_table *); int cpl_table_and_selected_invalid(cpl_table *, const char *); int cpl_table_or_selected_invalid(cpl_table *, const char *); int cpl_table_and_selected_int(cpl_table *, const char *, cpl_table_select_operator, int); int cpl_table_or_selected_int(cpl_table *, const char *, cpl_table_select_operator, int); int cpl_table_and_selected_float(cpl_table *, const char *, cpl_table_select_operator, float); int cpl_table_or_selected_float(cpl_table *, const char *, cpl_table_select_operator, float); int cpl_table_and_selected_double(cpl_table *, const char *, cpl_table_select_operator, double); int cpl_table_or_selected_double(cpl_table *, const char *, cpl_table_select_operator, double); int cpl_table_and_selected_string(cpl_table *, const char *, cpl_table_select_operator, const char *); int cpl_table_or_selected_string(cpl_table *, const char *, cpl_table_select_operator, const char *); int cpl_table_and_selected(cpl_table *, const char *, cpl_table_select_operator, const char *); int cpl_table_or_selected(cpl_table *, const char *, cpl_table_select_operator, const char *); int cpl_table_is_selected(const cpl_table *, int); int cpl_table_count_selected(const cpl_table *); void cpl_table_dump_structure(const cpl_table *, FILE *); void cpl_table_dump(const cpl_table *, int, int, FILE *); cpl_table *cpl_table_load(const char *, int, int); cpl_table *cpl_table_load_window(const char *, int, int, cpl_array *, int, int); cpl_error_code cpl_table_save(const cpl_table *, const cpl_propertylist *, const cpl_propertylist *, const char *filename, unsigned mode); CPL_END_DECLS #endif /* end of cpl_table.h */