void convert_table(char *in,char *out) { TABLE src,dst; int i; if (open_table(&src,in,"I")<0) { print_error("Cannot open input file %s",in); exit_session(ERR_OPEN); } else handle_select_flag(&src,'Q',NULL); if (create_table(&dst,out,src.row,src.col,'W',src.ident)<0) { close_table(&src); print_error("Cannot create output file %s",out); exit_session(ERR_CREAT); } else { reset_print_progress(); for (i=1;i<=src.col;i++) { print_progress("Convert table: ", (int)((100*i)/src.col),1); copy_col(&src,&dst,i); } CP_non_std_desc(&src,&dst); close_table(&dst); close_table(&src); } }
void convert_spec(char *in,char *out) { SPECTRUM src,dst; if (open_spec(&src,in,"I")<0) { print_error("Cannot open input file %s",in); exit_session(ERR_OPEN); } else if (create_spec(&dst,out,src.npts,src.start,src.step,src.data_type, src.ident,src.cunit)<0) { close_spec(&src); print_error("Cannot create output file %s",out); exit_session(ERR_CREAT); } else { int i; for (i=0;i<src.npts;i++) WR_spec(&dst,i,RD_spec(&src,i)); CP_non_std_desc(&src,&dst); close_spec(&dst); close_spec(&src); } }
void convert_image(char *in,char *out) { IMAGE2D src,dst; int npix[2]; double start[2],step[2]; if (open_frame(&src,in,"I")<0) { print_error("Cannot open input file %s",in); exit_session(ERR_OPEN); } else { npix[0]=src.nx; npix[1]=src.ny; start[0]=src.startx; start[1]=src.starty; step[0]=src.stepx; step[1]=src.stepy; if (create_frame(&dst,out,npix,start,step,src.data_type,src.ident,src.cunit)<0) { close_frame(&src); print_error("Cannot create output file %s",out); exit_session(ERR_CREAT); } else { int i,j; for (i=0;i<src.nx;i++) for (j=0;j<src.ny;j++) WR_frame(&dst,i,j,RD_frame(&src,i,j)); CP_non_std_desc(&src,&dst); close_frame(&dst); close_frame(&src); } } printf("\n"); }
int main(int argc, char **argv) { TABLE intab, outtab; TIGERfile intig, outtig; char **argval, **argname; char text[1024]; float x, y; set_arglist("-in none -out null"); init_session(argv, argc, &argname, &argval); if (open_tiger_frame(&intig,argval[0],"I") < 0) { sprintf(text, "Unable to open input datacube '%s'", argval[0]); print_error(text); exit_session(ERR_OPEN); } }
void Handle_Error(char *routine, int status) { char errtext[512]; int level; if (Error_Control_Level != NULL) { level = Error_Control_Level[Error_Current_Level]; } else level = FATAL; switch (level) { /* What to do when an error occurs ? */ case FATAL : /* causes program to exit */ sprintf(errtext,"FATAL error from routine %s", routine); print_error(errtext); strcpy(errtext,"\0"); get_tiger_errmsg(status,errtext); print_error(errtext); exit_session(status); exit(1); case WARNING : /* display warning */ sprintf(errtext,"WARNING from routine %s", routine); print_warning(errtext); get_tiger_errmsg(status,errtext); print_warning(errtext); break; case NONE : /* return status */ break; default : /* it's up to the user to handle the error */ break; } }
int main(int argc, char *argv[]) { int ret = 1, i; dldev_t dev; /* for data security */ /* umask(S_IRWXG | S_IRWXO); */ while((i = getopt(argc, argv, "hd:")) != -1){ switch(i){ case 'd': dev_file = optarg; break; case 'h': default: usage(); break; } } argc -= optind; argv += optind; #ifdef USB_USBHID dev.usb.file = dev_file; #endif if(open_dev(&dev)){ ERROR("open_dev"); goto exit; } if(start_session(&dev)){ ERROR("read_app_info"); goto exit; } /******************************************************************************/ fprintf(stdout, "a: acd.app_idx\nc: acd.code_loc\nd: acd.db_loc\n" "i: acd.code_invalid\nm: acd.db_modified\nI: acd.db_invalid\n" "p: acd.passwd_req\nb: acd.user_banner\nidx " "acdimIpb type inst asd add stat refr bann code banner\n"); for(i = 0; i < NUM_APPS; i++){ if(!dev.app[i].acd.app_idx) continue; fprintf(stdout, "%2d: %d%d%d%d%d%d%d%d %02x %02x %04x %04x %04x %04x %04x %04x %s\n", i, dev.app[i].acd.app_idx, dev.app[i].acd.code_loc, dev.app[i].acd.db_loc, dev.app[i].acd.code_invalid, dev.app[i].acd.db_modified, dev.app[i].acd.db_invalid, dev.app[i].acd.passwd_req, dev.app[i].acd.user_banner, dev.app[i].acb.app_type, dev.app[i].acb.app_inst, dev.app[i].acb.asd_addr, dev.app[i].acb.add_addr, dev.app[i].acb.state_mgr_addr, dev.app[i].acb.refresh_addr, dev.app[i].acb.banner_addr, dev.app[i].acb.code_addr, dev.app[i].banner ); } fprintf(stdout, "sync id: %s\n", dev.icb.sync_id); /******************************************************************************/ if(exit_session(&dev)){ ERROR("exit_session"); goto exit; } ret = 0; exit: close_dev(&dev); exit(ret); }
void convert_datacube(char *in,char *out) { E3D_file src,dst; SPECTRUM sig, noise, *rms, *signal; SPAXEL *spaxels; E3Dspec_desc *ptdesc; int i, specId, nbspax, npix=-1; double start = -1, end; char extname[lg_name+1], tablename[lg_name+1]; if (open_E3D_file(&src,in,"I")<0) { print_error("Cannot open input file %s",in); exit_session(ERR_OPEN); } else { if (has_common_bounds(&src)) { get_common_param(&src,&npix,&start,&end); } if (create_E3D_file(&dst,out,npix,start,src.step,src.data_type,src.ident,src.cunit) < 0) { close_E3D_file(&src); print_error("Cannot create output file %s",out); exit_session(ERR_CREAT); } else { signal = NULL; rms = NULL; ptdesc = NULL; if (src.signal != NULL) { signal = &sig; ptdesc = src.signal; } if (src.noise != NULL) { rms = &noise; ptdesc = src.noise; } else { if (src.signal == NULL) { close_E3D_file(&src); print_error("Inconsistent input file (no spectra inside)"); exit_session(ERR_BAD_PARAM); } } reset_print_progress(); for (i=0;i<src.nbspec;i++) { print_progress("Convert datacube: ", (int)((100*i)/src.nbspec),1); specId = ptdesc[i].specId; get_E3D_spec(&src,signal,rms,specId); set_quality(rms); put_E3D_spec(&dst,signal,rms,specId); nbspax = get_E3D_spaxels(&src,specId,&spaxels); put_E3D_spaxels(&dst,specId,nbspax,spaxels); } if (src.data_format == TIGER_FORMAT) { /* set groups */ set_tiger_group(&src); } put_E3D_groups(&dst,src.ngroups,src.groups); print_progress("Convert datacube: ", (int)100,1); CP_non_std_desc(&src,&dst); close_E3D_file(&src); close_E3D_file(&dst); printf("\n"); if (src.data_format == TIGER_FORMAT) { /* save table in special extension */ get_science_table_name(in,tablename); append_tbl_extension(out, OutputIO.basic_io); sprintf(extname,"%s[%s]",out,E3D_TIGER_EXT); convert_table(tablename,extname); } if (dst.data_format == TIGER_FORMAT) { /* save science extension as table */ strcpy(tablename,out); remove_file_extension(tablename); sprintf(extname,"%s[%s]",in,E3D_TIGER_EXT); convert_table(extname,tablename); } } } }
int main(int argc, char **argv) { TIGERfile image; SPECTRUM signal,noise; SLICE s_signal; char **argval, **arglabel, toto[50]; int nolens, i,j, npix=300, nb_spec=100, status, nol[105]; double start, step; short sval; long lval; float fval, x[105],y[105]; double dval; step = 1; start = 1; printf("IOLIB routines for Tiger format:\n\n"); init_session(argv,argc,&arglabel,&argval); /* set_control_level(WARNING); */ printf("\nOnly signal spectra:\n\n"); /* 1 - Type SHORT */ for (nolens=1;nolens<=nb_spec+5;nolens++) { nol[nolens-1] = nolens; x[nolens-1] = (float)nolens; y[nolens-1] = (float)nolens; } printf("Image creation (type of storage = Short) ..."); fflush(stdout); create_tiger_frame(&image,"s_chk_tiger_io",npix,start,step,SHORT, "associated_tbl","dummy frame",NULL); printf("Ok\n"); printf("Writing into created image ..."); fflush(stdout); set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y); for (nolens=1;nolens<=nb_spec;nolens++) { init_new_tiger_spec(&image,&signal,npix,start); for (j=0;j<signal.npts;j++) { WR_spec(&signal,j,(short)(nolens*j)); } put_tiger_spec(&image,&signal,NULL,nolens); } printf("Ok\n"); printf("Saving created image ..."); fflush(stdout); WR_desc(&image,"TOTO",CHAR,10,"tototototo"); fval = 25.6; WR_desc(&image,"FTOTO",FLOAT,1,&fval); close_tiger_frame(&image); printf("Ok\n"); printf("Opening previous image ..."); fflush(stdout); image.history[0] = '\0'; open_tiger_frame(&image,"s_chk_tiger_io","I"); printf("Ok\n"); printf("%s\n",image.history); nolens = (int)(nb_spec/2); status = exist_lens(&image,nolens); if (status < 0) { printf("unable to locate signal for lens #%d\n",nolens); fflush(stdout); return(-1); } printf("Reading image values slice by slice ..."); fflush(stdout); for (i=0;i<npix;i++) { get_tiger_slice(&image,&s_signal,NULL,i); for (j=0;j<s_signal.npts;j++) { nolens = s_signal.specId[j]; sval = (short)RD_slice(&s_signal,j); if (sval != (short)(nolens*i)) { printf("FATAL : Unexpected values in image\n"); printf("expected value = %d, got %d\n",(short)(nolens*i),sval); printf("at slice %d, pixel %d\n",i,j); return(-1); } } } printf("Ok\n"); RD_desc(&image,"TOTO",CHAR,10,toto); printf("TOTO = %s\n",toto); printf("Closing image ..."); close_tiger_frame(&image); printf("Ok\n"); /* printf("Opening previous image in IO mode..."); fflush(stdout); open_tiger_frame(&image,"s_chk_tiger_io","IO"); printf("Ok\n"); printf("Writing image values spectrum by spectrum ..."); fflush(stdout); for (nolens=nb_spec+1;nolens<=nb_spec+5;nolens++) { init_new_tiger_spec(&image,&signal,npix,start); for (j=0;j<signal.npts;j++) { WR_spec(&signal,j,(short)(nolens*j)); } put_tiger_spec(&image,&signal,NULL,nolens); } printf("Ok\n"); close_tiger_frame(&image); printf("Opening previous image ..."); open_tiger_frame(&image,"s_chk_tiger_io","I"); printf("Ok\n"); printf("Reading image values spectrum by spectrum ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec+5;nolens++) { get_tiger_spec(&image,&signal,NULL,nol[nolens-1]); for (j=0;j<signal.npts;j++) { sval = (short)RD_spec(&signal,j); if (sval != (short)(nolens*j)) { printf("FATAL : Unexpected values in image\n"); printf("expected value = %d, got %d\n",(short)(nolens*j),sval); printf("at nolens %d, pixel %d\n",nolens,j); return(-1); } } } printf("Ok\n"); close_tiger_frame(&image); */ printf("Deleting previous image ..."); printf("Deleting previous image ..."); fflush(stdout); delete_tiger_frame(&image); printf("Ok\n\n"); printf("Image creation slice by slice (type of storage = Short) ..."); fflush(stdout); create_tiger_frame(&image,"s_chk_tiger_io",npix,start,step,SHORT, "associated_tbl","dummy frame",NULL); printf("Ok\n"); if (has_common_bounds(&image)) printf("Common bounds Ok\n"); printf("Setting lenses coordinates ..."); set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y); printf("Ok\n"); printf("Writing into created image ..."); fflush(stdout); for (i=0;i<npix;i++) { init_new_tiger_slice(&image,&s_signal,nb_spec); for (j=0;j<s_signal.npts;j++) { nolens = s_signal.specId[j]; WR_slice(&s_signal,j,(short)(nolens*i)); } put_tiger_slice(&image,&s_signal,NULL,i); } printf("Ok\n"); printf("Closing image ..."); close_tiger_frame(&image); printf("Ok\n"); printf("Opening previous image ..."); fflush(stdout); open_tiger_frame(&image,"s_chk_tiger_io","I"); printf("Ok\n"); get_lenses_no(&image,nol); printf("Reading image values spectrum by spectrum ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { get_tiger_spec(&image,&signal,NULL,nol[nolens-1]); for (j=0;j<signal.npts;j++) { sval = (short)RD_spec(&signal,j); if (sval != (short)(nolens*j)) { printf("FATAL : Unexpected values in image\n"); printf("expected value = %d, got %d\n",(short)(nolens*j),sval); printf("at nolens %d, pixel %d\n",nolens,j); return(-1); } } } printf("Ok\n"); close_tiger_frame(&image); printf("Deleting previous image ..."); fflush(stdout); delete_tiger_frame(&image); printf("Ok\n\n"); /* 2 - Type LONG */ printf("Image creation (type of storage = Long) ..."); fflush(stdout); create_tiger_frame(&image,"l_chk_tiger_io",-1,start,step,LONG,"associated_tbl","dummy frame",NULL); printf("Ok\n"); set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y); printf("Writing into created image ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { init_new_tiger_spec(&image,&signal,npix,start); for (j=0;j<signal.npts;j++) { WR_spec(&signal,j,(long)(nolens*j)); } put_tiger_spec(&image,&signal,NULL,nolens); } printf("Ok\n"); printf("Saving created image ..."); fflush(stdout); close_tiger_frame(&image); printf("Ok\n"); printf("Opening previous image ..."); fflush(stdout); open_tiger_frame(&image,"l_chk_tiger_io","I"); printf("Ok\n"); printf("Reading image values spectrum by spectrum ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { get_tiger_spec(&image,&signal,NULL,nolens); for (j=0;j<signal.npts;j++) { lval = (long)RD_spec(&signal,j); if (lval != (long)(nolens*j)) { printf("FATAL : Unexpected values in image\n"); return(-1); } } } printf("Ok\n"); printf("Reading image values slice by slice ..."); fflush(stdout); for (i=0;i<npix;i++) { get_tiger_slice(&image,&s_signal,NULL,i); for (j=0;j<s_signal.npts;j++) { nolens = s_signal.specId[j]; lval = (long)RD_slice(&s_signal,j); if (lval != (long)(nolens*i)) { printf("FATAL : Unexpected values in image\n"); printf("expected value = %ld, got %ld\n",(long)(nolens*i),lval); printf("at slice %d, pixel %d\n",i,j); return(-1); } } } printf("Ok\n"); printf("Deleting previous image ..."); fflush(stdout); delete_tiger_frame(&image); printf("Ok\n\n"); /* 3 - Type FLOAT */ printf("Image creation (type of storage = Float) ..."); fflush(stdout); create_tiger_frame(&image,"f_chk_tiger_io",npix,start,step,FLOAT,"associated_tbl","dummy frame",NULL); printf("Ok\n"); set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y); printf("Writing into created image ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { init_new_tiger_spec(&image,&signal,npix,start); for (j=0;j<signal.npts;j++) { WR_spec(&signal,j,(float)(nolens*j)); } put_tiger_spec(&image,&signal,NULL,nolens); } printf("Ok\n"); printf("Saving created image ..."); fflush(stdout); close_tiger_frame(&image); printf("Ok\n"); printf("Opening previous image ..."); fflush(stdout); open_tiger_frame(&image,"f_chk_tiger_io","I"); printf("Ok\n"); printf("Reading image values ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { get_tiger_spec(&image,&signal,NULL,nolens); for (j=0;j<signal.npts;j++) { fval = (float)RD_spec(&signal,j); if (fval != (float)(nolens*j)) { printf("FATAL : Unexpected values in image\n"); return(-1); } } } printf("Ok\n"); printf("Deleting previous image ..."); fflush(stdout); delete_tiger_frame(&image); printf("Ok\n\n"); /* 4 - Type DOUBLE */ printf("Image creation (type of storage = Double) ..."); fflush(stdout); create_tiger_frame(&image,"d_chk_tiger_io",npix,start,step,DOUBLE,"associated_tbl","dummy frame",NULL); printf("Ok\n"); set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y); printf("Writing into created image ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { init_new_tiger_spec(&image,&signal,npix,start); for (j=0;j<signal.npts;j++) { WR_spec(&signal,j,(double)(nolens*j)); } put_tiger_spec(&image,&signal,NULL,nolens); } printf("Ok\n"); printf("Saving created image ..."); fflush(stdout); close_tiger_frame(&image); printf("Ok\n"); printf("Opening previous image ..."); fflush(stdout); open_tiger_frame(&image,"d_chk_tiger_io","I"); printf("Ok\n"); printf("Reading image values ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { get_tiger_spec(&image,&signal,NULL,nolens); for (j=0;j<signal.npts;j++) { dval = (double)RD_spec(&signal,j); if (dval != (double)(nolens*j)) { printf("FATAL : Unexpected values in image\n"); return(-1); } } } printf("Ok\n"); printf("Deleting previous image ..."); fflush(stdout); delete_tiger_frame(&image); printf("Ok\n\n"); #ifdef nonEURO3D printf("Only noise spectra:\n\n"); /* 1 - Type SHORT */ printf("Image creation (type of storage = Short) ..."); fflush(stdout); create_tiger_frame(&image,"s_chk_tiger_io",npix,start,step,SHORT, "associated_tbl","dummy frame",NULL); printf("Ok\n"); set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y); printf("Writing into created image ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { init_new_tiger_spec(&image,&noise,npix,start); for (j=0;j<noise.npts;j++) { WR_spec(&noise,j,(short)(nolens*j)); } put_tiger_spec(&image,NULL,&noise,nolens); } printf("Ok\n"); printf("Saving created image ..."); fflush(stdout); close_tiger_frame(&image); printf("Ok\n"); printf("Opening previous image ..."); fflush(stdout); open_tiger_frame(&image,"s_chk_tiger_io","I"); printf("Ok\n"); nolens = (int)(nb_spec/2); status = exist_lens(&image,nolens); if (status < 0) { printf("unable to locate noise from lens no %d\n",nolens); fflush(stdout); return(-1); } printf("Reading image values ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { get_tiger_spec(&image,NULL,&noise,nolens); for (j=0;j<noise.npts;j++) { sval = (short)RD_spec(&noise,j); if (sval != (short)(nolens*j)) { printf("FATAL : Unexpected values in image\n"); return(-1); } } } printf("Ok\n"); printf("Deleting previous image ..."); fflush(stdout); delete_tiger_frame(&image); printf("Ok\n\n"); /* 2 - Type LONG */ printf("Image creation (type of storage = Long) ..."); fflush(stdout); create_tiger_frame(&image,"l_chk_tiger_io",npix,start,step,LONG,"associated_tbl","dummy frame",NULL); printf("Ok\n"); set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y); printf("Writing into created image ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { init_new_tiger_spec(&image,&noise,npix,start); for (j=0;j<noise.npts;j++) { WR_spec(&noise,j,(long)(nolens*j)); } put_tiger_spec(&image,NULL,&noise,nolens); } printf("Ok\n"); printf("Saving created image ..."); fflush(stdout); close_tiger_frame(&image); printf("Ok\n"); printf("Opening previous image ..."); fflush(stdout); open_tiger_frame(&image,"l_chk_tiger_io","I"); printf("Ok\n"); printf("Reading image values ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { get_tiger_spec(&image,NULL,&noise,nolens); for (j=0;j<noise.npts;j++) { lval = (long)RD_spec(&noise,j); if (lval != (long)(nolens*j)) { printf("FATAL : Unexpected values in image\n"); return(-1); } } } printf("Ok\n"); printf("Deleting previous image ..."); fflush(stdout); delete_tiger_frame(&image); printf("Ok\n\n"); /* 3 - Type FLOAT */ printf("Image creation (type of storage = Float) ..."); fflush(stdout); create_tiger_frame(&image,"f_chk_tiger_io",npix,start,step,FLOAT,"associated_tbl","dummy frame",NULL); printf("Ok\n"); set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y); printf("Writing into created image ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { init_new_tiger_spec(&image,&noise,npix,start); for (j=0;j<noise.npts;j++) { WR_spec(&noise,j,(float)(nolens*j)); } put_tiger_spec(&image,NULL,&noise,nolens); } printf("Ok\n"); printf("Saving created image ..."); fflush(stdout); close_tiger_frame(&image); printf("Ok\n"); printf("Opening previous image ..."); fflush(stdout); open_tiger_frame(&image,"f_chk_tiger_io","I"); printf("Ok\n"); printf("Reading image values ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { get_tiger_spec(&image,NULL,&noise,nolens); for (j=0;j<noise.npts;j++) { fval = (float)RD_spec(&noise,j); if (fval != (float)(nolens*j)) { printf("FATAL : Unexpected values in image\n"); return(-1); } } } printf("Ok\n"); printf("Deleting previous image ..."); fflush(stdout); delete_tiger_frame(&image); printf("Ok\n\n"); /* 4 - Type DOUBLE */ printf("Image creation (type of storage = Double) ..."); fflush(stdout); create_tiger_frame(&image,"d_chk_tiger_io",npix,start,step,DOUBLE,"associated_tbl","dummy frame",NULL); printf("Ok\n"); set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y); printf("Writing into created image ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { init_new_tiger_spec(&image,&noise,npix,start); for (j=0;j<noise.npts;j++) { WR_spec(&noise,j,(double)(nolens*j)); } put_tiger_spec(&image,NULL,&noise,nolens); } printf("Ok\n"); printf("Saving created image ..."); fflush(stdout); close_tiger_frame(&image); printf("Ok\n"); printf("Opening previous image ..."); fflush(stdout); open_tiger_frame(&image,"d_chk_tiger_io","I"); printf("Ok\n"); printf("Reading image values ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { get_tiger_spec(&image,NULL,&noise,nolens); for (j=0;j<noise.npts;j++) { dval = (double)RD_spec(&noise,j); if (dval != (double)(nolens*j)) { printf("FATAL : Unexpected values in image\n"); return(-1); } } } printf("Ok\n"); printf("Deleting previous image ..."); fflush(stdout); delete_tiger_frame(&image); printf("Ok\n\n"); #endif printf("Signal & noise spectra:\n\n"); /* 1 - Type SHORT */ printf("Image creation (type of storage = Short) ..."); fflush(stdout); create_tiger_frame(&image,"s_chk_tiger_io",npix,start,step,SHORT, "associated_tbl","dummy frame",NULL); printf("Ok\n"); set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y); printf("Writing into created image ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { init_new_tiger_spec(&image,&signal,npix,start); init_new_tiger_spec(&image,&noise,npix,start); for (j=0;j<signal.npts;j++) { WR_spec(&signal,j,(short)(nolens*j)); WR_spec(&noise,j,(short)(nolens*j)); } put_tiger_spec(&image,&signal,&noise,nolens); } printf("Ok\n"); printf("Saving created image ..."); fflush(stdout); close_tiger_frame(&image); printf("Ok\n"); printf("Opening previous image ..."); fflush(stdout); open_tiger_frame(&image,"s_chk_tiger_io","I"); printf("Ok\n"); nolens = (int)(nb_spec/2); status = exist_lens(&image,nolens); if (status < 0) { printf("unable to locate signal from lens no %d\n",nolens); fflush(stdout); return(-1); } printf("Reading image values ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { get_tiger_spec(&image,&signal,&noise,nolens); for (j=0;j<signal.npts;j++) { sval = (short)RD_spec(&signal,j); if (sval != (short)(nolens*j)) { printf("FATAL : Unexpected values in signal\n"); return(-1); } sval = (short)RD_spec(&noise,j); if (sval != (short)(nolens*j)) { printf("FATAL : Unexpected values in noise\n"); return(-1); } } } printf("Ok\n"); printf("Deleting previous image ..."); fflush(stdout); delete_tiger_frame(&image); printf("Ok\n\n"); /* 2 - Type LONG */ printf("Image creation (type of storage = Long) ..."); fflush(stdout); create_tiger_frame(&image,"l_chk_tiger_io",npix,start,step,LONG,"associated_tbl","dummy frame",NULL); printf("Ok\n"); set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y); printf("Writing into created image ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { init_new_tiger_spec(&image,&signal,npix,start); init_new_tiger_spec(&image,&noise,npix,start); for (j=0;j<signal.npts;j++) { WR_spec(&signal,j,(long)(nolens*j)); WR_spec(&noise,j,(long)(nolens*j)); } put_tiger_spec(&image,&signal,&noise,nolens); } printf("Ok\n"); printf("Saving created image ..."); fflush(stdout); close_tiger_frame(&image); printf("Ok\n"); printf("Opening previous image ..."); fflush(stdout); open_tiger_frame(&image,"l_chk_tiger_io","I"); printf("Ok\n"); printf("Reading image values ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { get_tiger_spec(&image,&signal,&noise,nolens); for (j=0;j<signal.npts;j++) { lval = (long)RD_spec(&signal,j); if (lval != (long)(nolens*j)) { printf("FATAL : Unexpected values in signal\n"); return(-1); } lval = (long)RD_spec(&noise,j); if (lval != (long)(nolens*j)) { printf("FATAL : Unexpected values in noise\n"); return(-1); } } } printf("Ok\n"); printf("Deleting previous image ..."); fflush(stdout); delete_tiger_frame(&image); printf("Ok\n\n"); /* 3 - Type FLOAT */ printf("Image creation (type of storage = Float) ..."); fflush(stdout); create_tiger_frame(&image,"f_chk_tiger_io",npix,start,step,FLOAT,"associated_tbl","dummy frame",NULL); printf("Ok\n"); set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y); printf("Writing into created image ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { init_new_tiger_spec(&image,&signal,npix,start); init_new_tiger_spec(&image,&noise,npix,start); for (j=0;j<signal.npts;j++) { WR_spec(&signal,j,(float)(nolens*j)); WR_spec(&noise,j,(float)(nolens*j)); } put_tiger_spec(&image,&signal,&noise,nolens); } printf("Ok\n"); printf("Saving created image ..."); fflush(stdout); close_tiger_frame(&image); printf("Ok\n"); printf("Opening previous image ..."); fflush(stdout); open_tiger_frame(&image,"f_chk_tiger_io","I"); printf("Ok\n"); printf("Reading image values ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { get_tiger_spec(&image,&signal,&noise,nolens); for (j=0;j<signal.npts;j++) { fval = (float)RD_spec(&signal,j); if (fval != (float)(nolens*j)) { printf("FATAL : Unexpected values in signal\n"); return(-1); } fval = (float)RD_spec(&noise,j); if (fval != (float)(nolens*j)) { printf("FATAL : Unexpected values in noise\n"); return(-1); } } } printf("Ok\n"); printf("Deleting previous image ..."); fflush(stdout); delete_tiger_frame(&image); printf("Ok\n\n"); /* 4 - Type DOUBLE */ printf("Image creation (type of storage = Double) ..."); fflush(stdout); create_tiger_frame(&image,"d_chk_tiger_io",npix,start,step,DOUBLE,"associated_tbl","dummy frame",NULL); printf("Ok\n"); set_lenses_coord(&image,"XPOS","YPOS",nb_spec,nol,x,y); printf("Writing into created image ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { init_new_tiger_spec(&image,&signal,npix,start); init_new_tiger_spec(&image,&noise,npix,start); for (j=0;j<signal.npts;j++) { WR_spec(&signal,j,(double)(nolens*j)); WR_spec(&noise,j,(double)(nolens*j)); } put_tiger_spec(&image,&signal,&noise,nolens); } printf("Ok\n"); printf("Saving created image ..."); fflush(stdout); close_tiger_frame(&image); printf("Ok\n"); printf("Opening previous image ..."); fflush(stdout); open_tiger_frame(&image,"d_chk_tiger_io","I"); printf("Ok\n"); printf("Reading image values ..."); fflush(stdout); for (nolens=1;nolens<=nb_spec;nolens++) { get_tiger_spec(&image,&signal,&noise,nolens); for (j=0;j<signal.npts;j++) { dval = (double)RD_spec(&signal,j); if (dval != (double)(nolens*j)) { printf("FATAL : Unexpected values in signal\n"); return(-1); } dval = (double)RD_spec(&noise,j); if (dval != (double)(nolens*j)) { printf("FATAL : Unexpected values in noise\n"); return(-1); } } } printf("Ok\n"); printf("Deleting previous image ..."); fflush(stdout); delete_tiger_frame(&image); printf("Ok\n\n"); exit_session(0); return(0); }
int main(int argc, char **argv) { int nocol_short, nocol_long, nocol_float, nocol_double; int status; char **argval, **arglabel; int i, nbrow = NBROW, nbcol=NBCOL, sel[NBROW]; short sval, s_colbuf[NBROW], s_key; long lval, l_colbuf[NBROW]; float fval, f_colbuf[NBROW]; double dval, d_colbuf[NBROW]; char ident[20]; char selection[30]; TABLE table; /* init_session() checking */ printf("IOLIB environment routines :\n\n"); fflush(stdout); init_session(argv,argc,&arglabel,&argval); /* set_control_level(WARNING); */ printf("Table creation ..."); fflush(stdout); strcpy(ident,"Dummy table"); create_table(&table,"chk_tbl_io",nbrow,nbcol,'W',ident); printf("Ok\n"); fflush(stdout); /* printf("Column creation ...(format Characters) "); fflush(stdout); nocol_char = create_col(&table,":TEXT",CHAR,'N',"A20",NULL); if (nocol_char < 0) { printf("Problem creating column TEXT, status returned = %d\n", nocol_char); exit (-1); } printf("Ok\n"); fflush(stdout); printf("Writing into created column ..."); fflush(stdout); for (i=0; i<nbrow; i++) { sprintf(text,"String no %2d",i); WR_tbl(&table,i,nocol_char,text); } printf("Ok\n"); fflush(stdout); */ printf("Column creation ...(format Short) "); fflush(stdout); nocol_short = create_col(&table,":SHORT",SHORT,'N',"I2",NULL); if (nocol_short < 0) { printf("Problem creating column SHORT, status returned = %d\n", nocol_short); exit (-1); } printf("Ok\n"); fflush(stdout); printf("Writing into created column ..."); fflush(stdout); for (i=0; i<nbrow; i++) { sval = (short)i; WR_tbl(&table,i,nocol_short,&sval); } printf("Ok\n"); fflush(stdout); printf("Column creation ...(format Long) "); fflush(stdout); nocol_long = create_col(&table,":LONG",LONG,'N',"I4",NULL); if (nocol_long < 0) { printf("Problem creating column LONG, status returned = %d\n", nocol_long); exit (-1); } printf("Ok\n"); fflush(stdout); printf("Writing into created column ..."); fflush(stdout); for (i=0; i<nbrow; i++) { lval = (long)i; WR_tbl(&table,i,nocol_long,&lval); } printf("Ok\n"); fflush(stdout); printf("Column creation ...(format Float) "); fflush(stdout); nocol_float = create_col(&table,":FLOAT",FLOAT,'N',"F9.6",NULL); if (nocol_float < 0) { printf("Problem creating column FLOAT, status returned = %d\n", nocol_float); exit (-1); } printf("Ok\n"); fflush(stdout); printf("Writing into created column ..."); fflush(stdout); for (i=0; i<nbrow; i++) { fval = (float)i; WR_tbl(&table,i,nocol_float,&fval); } printf("Ok\n"); fflush(stdout); printf("Column creation ...(format Double) "); fflush(stdout); nocol_double = create_col(&table,":DOUBLE",DOUBLE,'N',"E15.5",NULL); if (nocol_double < 0) { printf("Problem creating column DOUBLE, status returned = %d\n", nocol_double); exit (-1); } printf("Ok\n"); fflush(stdout); printf("Writing into created column ..."); fflush(stdout); for (i=0; i<nbrow; i++) { dval = (double)i; WR_tbl(&table,i,nocol_double,&dval); } printf("Ok\n\n"); fflush(stdout); for (i=0; i<nbrow; i++) { if (i%2 == 0) sel[i] = 0; else sel[i] = 1; } write_selection(&table,sel,"check_selection"); printf("Saving created table ..."); fflush(stdout); close_table(&table); printf("Ok\n"); fflush(stdout); printf("Opening previous table ..."); fflush(stdout); open_table(&table,"chk_tbl_io","I"); printf("Ok\n"); fflush(stdout); printf("Handling selection ..."); fflush(stdout); handle_select_flag(&table,'W',selection); printf("Ok\n"); fflush(stdout); printf("Reading columns info ..."); fflush(stdout); /* nocol_char = get_col_ref(&table,":TEXT"); */ nocol_short = get_col_ref(&table,":SHORT"); nocol_long = get_col_ref(&table,":LONG"); nocol_float = get_col_ref(&table,":FLOAT"); nocol_double = get_col_ref(&table,":DOUBLE"); printf("Ok\n"); nbrow = table.row; /* printf("Reading previous column ...(format Characters) "); fflush(stdout); RD_col(&table,nocol_char,c_colbuf); for (i=0; i<nbrow; i++) { sprintf(text,"String no %2d",i); if (strcmp(text,(c_colbuf+i*21)) != 0) { printf("FATAL : Unexpected values in table, line %d\n",i); return(-1); } } printf("Ok\n"); printf("Reading previous column item by item ...(format Characters) "); fflush(stdout); for (i=0; i<nbrow; i++) { RD_tbl(&table,i,nocol_char,Rtext); sprintf(text,"String no %2d",i); if (strcmp(text,Rtext) != 0) { printf("FATAL : Unexpected values in table, line %d\n",i); printf("*%s* is not *%s*\n", Rtext, text); return(-1); } } printf("Ok\n"); */ printf("Reading previous column ...(format Short) "); fflush(stdout); s_colbuf[0] = 0; RD_col(&table,nocol_short,s_colbuf); printf("Ok\n"); printf("Searching for no 501 ... "); fflush(stdout); s_key = 501; status = search_in_col(&table,nocol_short,&s_key); if (status >= 0) printf("Found in line %d\n",status); else { printf("Unable to find it\n"); return(-1); } printf("Searching for no 500 ... "); fflush(stdout); s_key = 500; status = search_in_col(&table,nocol_short,&s_key); if (status >= 0) printf("Found in line %d\n",status); else { printf("Unable to find it (not selected)\n"); } for (i=0; i<nbrow; i++) { if (s_colbuf[i] != (short)(2*i+1)) { printf("FATAL : Unexpected values in table, line %d\n",i); printf("Read %d, Expected %d\n",s_colbuf[i],2*i+1); return(-1); } } printf("Ok\n"); printf("Reading previous column item by item ...(format Short) "); fflush(stdout); for (i=0; i<nbrow; i++) { RD_tbl(&table,i,nocol_short,&sval); if (sval != (short)(2*i+1)) { printf("FATAL : Unexpected values in table, line %d\n",i); return(-1); } } printf("Ok\n"); printf("Reading previous column ..(format Long) "); fflush(stdout); RD_col(&table,nocol_long,l_colbuf); for (i=0; i<nbrow; i++) { if (l_colbuf[i] != (long)(2*i+1)) { printf("FATAL : Unexpected values in table, line %d\n",i); return(-1); } } printf("Ok\n"); printf("Reading previous column item by item ...(format Long) "); fflush(stdout); for (i=0; i<nbrow; i++) { RD_tbl(&table,i,nocol_long,&lval); if (lval != (long)(2*i+1)) { printf("FATAL : Unexpected values in table, line %d\n",i); return(-1); } } printf("Ok\n"); printf("Reading previous column ...(format Float) "); fflush(stdout); RD_col(&table,nocol_float,f_colbuf); for (i=0; i<nbrow; i++) { if (f_colbuf[i] != (float)(2*i+1)) { printf("FATAL : Unexpected values in table, line %d\n",i); return(-1); } } printf("Ok\n"); printf("Reading previous column item by item ...(format Float) "); fflush(stdout); for (i=0; i<nbrow; i++) { RD_tbl(&table,i,nocol_float,&fval); if (fval != (float)(2*i+1)) { printf("FATAL : Unexpected values in table, line %d\n",i); return(-1); } } printf("Ok\n"); printf("Reading previous column ..(format Double) "); fflush(stdout); RD_col(&table,nocol_double,d_colbuf); for (i=0; i<nbrow; i++) { if (ABS(d_colbuf[i] - (double)(2*i+1)) > 1e-8) { printf("FATAL : Unexpected values in table, line %d\n",i); return(-1); } } printf("Ok\n"); printf("Reading previous column item by item ...(format Double) "); fflush(stdout); for (i=0; i<nbrow; i++) { RD_tbl(&table,i,nocol_double,&dval); if (ABS(dval - (double)(2*i+1)) > 1e-8) { printf("FATAL : Unexpected values in table, line %d\n",i); return(-1); } } printf("Ok\n"); fflush(stdout); printf("Deleting previous table ..."); fflush(stdout); delete_table(&table); printf("Ok\n"); fflush(stdout); exit_session(0); return(0); }