33#include "moo_fibres_table.h"
86 cpl_ensure(frame != NULL, CPL_ERROR_NULL_INPUT, NULL);
88 const char* filename = cpl_frame_get_filename(frame);
89 cpl_ensure(filename != NULL, CPL_ERROR_NULL_INPUT,
91 cpl_errorstate prev_state = cpl_errorstate_get();
94 res->filename = cpl_strdup(filename);
95 res->primary_header = cpl_propertylist_load( filename,0);
97 cpl_size qnum = cpl_fits_find_extension(filename,
98 MOO_FLX_CATALOG_EXTNAME);
100 res->catalog = cpl_table_load(res->filename,qnum,0);
103 if ( !cpl_errorstate_is_equal(prev_state)){
104 cpl_msg_info(
"moo_flx",
"flx load %d",cpl_error_get_code());
105 cpl_errorstate_set(prev_state);
111static int _moo_strcmpi(
char* s1,
char* s2){
114 int size1 = strlen(s1);
115 int size2 = strlen(s2);
119 for(i=0;i<size1;i++){
120 if(toupper(s1[i])!=toupper(s2[i]))
127static void _moo_remove_spaces(
const char *input,
char *result)
130 for (i = 0; input[i] !=
'\0'; i++) {
131 if (!isspace((
unsigned char) input[i])) {
132 result[j++] = input[i];
138static int _moo_cmp_objname(
const char* obj1,
const char* obj2)
142 char* str1 = cpl_strdup(obj1);
143 char* str2 = cpl_strdup(obj2);
145 _moo_remove_spaces(obj1,str1);
146 _moo_remove_spaces(obj2,str2);
148 res = _moo_strcmpi(str1,str2);
167 cpl_table* res = NULL;
168 cpl_ensure(objname!=NULL,CPL_ERROR_NULL_INPUT,NULL);
169 int nrow = cpl_table_get_nrow(self->catalog);
170 const char** names = cpl_table_get_data_string_const(
171 self->catalog,MOO_FLX_CATALOG_NAME);
173 for(
int i=0; i<nrow; i++){
174 const char* catname = names[i];
175 if ( _moo_cmp_objname(catname,objname)==0){
176 cpl_size qnum = cpl_fits_find_extension(self->filename,
178 res = cpl_table_load(self->filename,qnum,0);
199 if ( self->filename != NULL){
200 cpl_free(self->filename);
202 if ( self->primary_header!= NULL){
203 cpl_propertylist_delete(self->primary_header);
205 if ( self->catalog != NULL){
206 cpl_table_delete(self->catalog);
moo_flx * moo_flx_load(const cpl_frame *frame)
Load a FLX frame and create a moo_flx.
cpl_table * moo_flx_get_obj(moo_flx *self, const char *objname)
Find the TABLE for a given object name.
moo_flx * moo_flx_new(void)
Create a new moo_flx
void moo_flx_delete(moo_flx *self)
Delete a moo_flx.