29#include "moo_sky_lines_list.h"
66 moo_sky_lines_list* res = cpl_calloc(1,
sizeof(moo_sky_lines_list));
83 cpl_ensure(frame != NULL, CPL_ERROR_NULL_INPUT,
85 const char* filename = cpl_frame_get_filename(frame);
86 cpl_ensure(filename != NULL, CPL_ERROR_NULL_INPUT,
90 res->filename = cpl_strdup(filename);
110 if ( self->filename!= NULL){
111 cpl_free(self->filename);
113 if ( self->linecat!= NULL){
114 cpl_table_delete(self->linecat);
116 if ( self->free_zones!= NULL){
117 cpl_table_delete(self->free_zones);
137 double wmin,
double wmax,
double** zwmin,
double** zwmax, cpl_array** sel)
139 cpl_ensure_code(self!=NULL, CPL_ERROR_NULL_INPUT);
140 cpl_errorstate prev_state = cpl_errorstate_get();
142 if (self->free_zones==NULL){
144 NULL, MOO_SKY_LINES_LIST_FREEZONE_TNAME),
" ");
146 cpl_table_select_all(self->free_zones);
147 cpl_table_and_selected_double(self->free_zones,MOO_SKY_LINES_LIST_WMAX_COLNAME,
148 CPL_GREATER_THAN,wmin);
149 cpl_table_and_selected_double(self->free_zones,MOO_SKY_LINES_LIST_WMIN_COLNAME,
151 *zwmin = cpl_table_get_data_double(self->free_zones,
152 MOO_SKY_LINES_LIST_WMIN_COLNAME);
153 *zwmax = cpl_table_get_data_double(self->free_zones,
154 MOO_SKY_LINES_LIST_WMAX_COLNAME);
155 *sel = cpl_table_where_selected(self->free_zones);
158 if ( !cpl_errorstate_is_equal(prev_state)){
159 cpl_msg_error(__func__,
"Can't load skylines for filename %s",
161 cpl_errorstate_set(prev_state);
163 return CPL_ERROR_NONE;
cpl_table * moo_fits_load_extension_table(const char *filename, const char *name, const char *detectorname)
Load a table from FITS file.
cpl_error_code moo_sky_lines_list_get_free_zones(moo_sky_lines_list *self, double wmin, double wmax, double **zwmin, double **zwmax, cpl_array **sel)
Get free zones for a specific wave range.
moo_sky_lines_list * moo_sky_lines_list_load(const cpl_frame *frame)
Load a SKY_LINES_LIST frame and create a moo_sky_lines_list.
void moo_sky_lines_list_delete(moo_sky_lines_list *self)
Delete a moo_sky_lines_list.
moo_sky_lines_list * moo_sky_lines_list_new(void)
Create a new moo_sky_lines_list.