00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifdef HAVE_CONFIG_H
00020 # include <config.h>
00021 #endif
00022
00023 #include <cpl.h>
00024 #include "sinfo_pro_save.h"
00025 #include "sinfo_key_names.h"
00026 #include "sinfo_functions.h"
00027 #include "sinfo_utilities.h"
00028 #include "sinfo_globals.h"
00029
00030 static int
00031 sinfo_pfits_put_qc(
00032 cpl_propertylist * plist,
00033 cpl_table * qclog);
00034
00035 static void
00036 sinfo_log_pro(char* name_o,
00037 const char* pro_catg,
00038 int frm_type,
00039 cpl_frameset* ref_set,
00040 cpl_frameset** out_set,
00041 cpl_propertylist** plist,
00042 cpl_parameterlist* parlist,
00043 const char* recid);
00044
00045
00046 static void
00047 sinfo_check_name(const char* in, char** ou, int type, char** paf);
00048
00049 static void
00050 sinfo_clean_header(cpl_propertylist** header);
00051 static void
00052 sinfo_clean_cube_header(cpl_propertylist** header);
00053
00054
00055 static FILE *
00056 sinfo_paf_print_header(
00057 const char * filename,
00058 const char * paf_id,
00059 const char * paf_desc,
00060 const char * login_name,
00061 char * datetime) ;
00062
00063
00064
00071
00096
00097 static FILE *
00098 sinfo_paf_print_header(
00099 const char * filename,
00100 const char * paf_id,
00101 const char * paf_desc,
00102 const char * login_name,
00103 char * datetime)
00104 {
00105 FILE * paf ;
00106
00107 if ((paf=fopen(filename, "w"))==NULL) {
00108 sinfo_msg_error("cannot create PAF file [%s]", filename);
00109 return NULL ;
00110 }
00111 fprintf(paf, "PAF.HDR.START ;# start of header\n");
00112 fprintf(paf, "PAF.TYPE \"pipeline product\" ;\n");
00113 fprintf(paf, "PAF.ID \"%s\"\n", paf_id);
00114 fprintf(paf, "PAF.NAME \"%s\"\n", filename);
00115 fprintf(paf, "PAF.DESC \"%s\"\n", paf_desc);
00116 fprintf(paf, "PAF.CRTE.NAME \"%s\"\n", login_name) ;
00117 fprintf(paf, "PAF.CRTE.DAYTIM \"%s\"\n", datetime) ;
00118 fprintf(paf, "PAF.LCHG.NAME \"%s\"\n", login_name) ;
00119 fprintf(paf, "PAF.LCHG.DAYTIM \"%s\"\n", datetime) ;
00120 fprintf(paf, "PAF.CHCK.CHECKSUM \"\"\n");
00121 fprintf(paf, "PAF.HDR.END ;# end of header\n");
00122 fprintf(paf, "\n");
00123 return paf ;
00124 }
00134 int
00135 sinfo_update_fits_card_int(const char* file,const char* card,int value)
00136 {
00137 cpl_propertylist * plist =NULL;
00138 if ((plist = cpl_propertylist_load(file, 0)) == NULL) {
00139 sinfo_msg_error( "getting header from file %s",file);
00140 cpl_propertylist_delete(plist) ;
00141 return -1 ;
00142 }
00143
00144 if (CPL_ERROR_NONE!=cpl_propertylist_set_int(plist,card,value)){
00145 sinfo_msg_error( "setting header of file %s",file);
00146 cpl_propertylist_delete(plist) ;
00147 return -1 ;
00148 }
00149 cpl_propertylist_delete(plist) ;
00150 return 0;
00151 }
00152
00162 int
00163 sinfo_update_fits_card_float(const char* file,const char* card,float value)
00164 {
00165 cpl_propertylist * plist =NULL;
00166 if ((plist = cpl_propertylist_load(file, 0)) == NULL) {
00167 sinfo_msg_error( "getting header from file %s",file);
00168 sinfo_msg_error((char* ) cpl_error_get_message());
00169 sinfo_msg_error((char* ) cpl_error_get_where());
00170 cpl_propertylist_delete(plist) ;
00171 return -1 ;
00172 }
00173
00174 if (CPL_ERROR_NONE!=cpl_propertylist_set_float(plist,card,value)){
00175 sinfo_msg_error( "setting header of file %s",file);
00176 sinfo_msg_error((char* ) cpl_error_get_message());
00177 sinfo_msg_error((char* ) cpl_error_get_where());
00178 cpl_propertylist_delete(plist) ;
00179 return -1 ;
00180 }
00181 cpl_propertylist_delete(plist) ;
00182 return 0;
00183 }
00184
00185
00195 int
00196 sinfo_update_fits_card_double(const char* file,const char* card,double value)
00197 {
00198 cpl_propertylist * plist =NULL;
00199 if ((plist = cpl_propertylist_load(file, 0)) == NULL) {
00200 sinfo_msg_error( "getting header from file %s",file);
00201 cpl_propertylist_delete(plist) ;
00202 return -1 ;
00203 }
00204
00205 if (CPL_ERROR_NONE!=cpl_propertylist_set_double(plist,card,value)){
00206 sinfo_msg_error( "gsetting header of file %s",file);
00207 cpl_propertylist_delete(plist) ;
00208 return -1 ;
00209 }
00210 cpl_propertylist_delete(plist) ;
00211 return 0;
00212 }
00213
00223 int
00224 sinfo_update_fits_card_long(const char* file,const char* card,long value)
00225 {
00226 cpl_propertylist * plist =NULL;
00227 if ((plist = cpl_propertylist_load(file, 0)) == NULL) {
00228 sinfo_msg_error( "getting header from file %s",file);
00229 cpl_propertylist_delete(plist) ;
00230 return -1 ;
00231 }
00232 if (CPL_ERROR_NONE!=cpl_propertylist_set_long(plist,card,value)){
00233 sinfo_msg_error( "setting header of file %s",file);
00234 cpl_propertylist_delete(plist) ;
00235 return -1 ;
00236 }
00237 cpl_propertylist_delete(plist) ;
00238 return 0;
00239 }
00240
00250 int
00251 sinfo_update_ims_fits_card_string(cpl_imagelist* iml,
00252 const char* file,
00253 const char* card,
00254 const char* value)
00255 {
00256
00257 cpl_propertylist * plist =NULL;
00258 if ((plist = cpl_propertylist_load(file, 0)) == NULL) {
00259 sinfo_msg_error( "getting header from reference ima frame %s",file);
00260 cpl_propertylist_delete(plist) ;
00261 return -1 ;
00262 }
00263
00264
00265 if (CPL_ERROR_NONE!=cpl_propertylist_set_string(plist,card,value)){
00266 sinfo_msg_error( "getting header from reference ima frame %s",file);
00267 cpl_propertylist_delete(plist) ;
00268 return -1 ;
00269 }
00270
00271 if (cpl_imagelist_save(iml,file,CPL_BPP_IEEE_FLOAT,
00272 plist,CPL_IO_DEFAULT)!=CPL_ERROR_NONE) {
00273 sinfo_msg_error( "getting header from reference ima frame %s",file);
00274 cpl_propertylist_delete(plist) ;
00275 }
00276 cpl_propertylist_delete(plist) ;
00277 return 0;
00278 }
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378
00379
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476
00477
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502
00503
00504
00505
00506
00507
00508
00509
00510
00511
00512
00513
00514
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535
00536
00537
00538
00539
00540
00541
00542
00543
00544
00545
00546
00547
00548
00549
00550
00551
00552
00553
00554
00555
00556
00557
00558
00559
00560
00573
00574
00575
00576 int sinfo_pro_save_ima(
00577 cpl_image * ima,
00578 cpl_frameset * ref,
00579 cpl_frameset * set,
00580 const char * out_file,
00581 const char * pro_catg,
00582 cpl_table * qclog,
00583 const char * recid,
00584 cpl_parameterlist* parlist)
00585
00586 {
00587 char * name_o ;
00588 char * name_p ;
00589
00590 cpl_propertylist * plist =NULL;
00591 cpl_frame * first_frame=NULL;
00592 char * ref_file=NULL;
00593
00594
00595 first_frame = cpl_frameset_get_first(ref) ;
00596 ref_file = (char*) cpl_strdup(cpl_frame_get_filename(first_frame)) ;
00597
00598 name_o = cpl_malloc(FILE_NAME_SZ * sizeof(char));
00599 name_p = cpl_malloc(FILE_NAME_SZ * sizeof(char));
00600 sinfo_check_name(out_file, &name_o, CPL_FRAME_TYPE_IMAGE, &name_p);
00601 sinfo_msg( "Writing ima %s pro catg %s" , name_o, pro_catg) ;
00602
00603
00604 if ((cpl_error_code)((plist=cpl_propertylist_load(ref_file, 0)) == NULL)) {
00605 sinfo_msg_error( "getting header from reference ima frame %s",ref_file);
00606 cpl_propertylist_delete(plist) ;
00607 cpl_free(ref_file);
00608 return -1 ;
00609 }
00610
00611 sinfo_clean_header(&plist);
00612 if ( ( strstr(pro_catg,"MASTER_PSF") != NULL ) ||
00613 ( strstr(pro_catg,"STD_STAR_SPECTRUM") != NULL ) ||
00614 ( strstr(pro_catg,"STD_STAR_SPECTRA") != NULL ) ) {
00615 sinfo_clean_cube_header(&plist);
00616 }
00617
00618
00619 sinfo_log_pro(name_o, pro_catg, CPL_FRAME_TYPE_IMAGE,
00620 ref,&set,&plist,parlist,recid);
00621 if(qclog != NULL) {
00622 sinfo_pfits_put_qc(plist, qclog) ;
00623 }
00624
00625
00626 if (cpl_image_save(ima, name_o, CPL_BPP_IEEE_FLOAT,
00627 plist,CPL_IO_DEFAULT)!=CPL_ERROR_NONE) {
00628 sinfo_msg_error( "Cannot save the product %s",name_o);
00629 cpl_propertylist_delete(plist) ;
00630 cpl_free(ref_file);
00631 cpl_free(name_o);
00632 cpl_free(name_p);
00633 return -1 ;
00634 }
00635
00636
00637
00638
00639
00640
00641
00642 cpl_propertylist_delete(plist) ;
00643 cpl_msg_indent_less() ;
00644 cpl_free(name_o);
00645 cpl_free(name_p);
00646 cpl_free(ref_file);
00647
00648 return 0 ;
00649 }
00650
00651
00652
00665
00666
00667
00668
00669 int sinfo_pro_save_tbl(
00670 cpl_table * table,
00671 cpl_frameset * ref,
00672 cpl_frameset * set,
00673 const char * out_file,
00674 const char * pro_catg,
00675 cpl_table * qclog,
00676 const char * recid,
00677 cpl_parameterlist* parlist)
00678
00679 {
00680 char * name_o =NULL;
00681 char * name_p =NULL;
00682 cpl_propertylist * plist=NULL ;
00683 cpl_frame* first_frame=NULL;
00684 char* ref_file=NULL;
00685
00686 first_frame = cpl_frameset_get_first(ref) ;
00687 ref_file = cpl_strdup(cpl_frame_get_filename(first_frame)) ;
00688
00689 name_o = cpl_malloc(FILE_NAME_SZ * sizeof(char));
00690 name_p = cpl_malloc(FILE_NAME_SZ * sizeof(char));
00691 sinfo_check_name(out_file, &name_o, CPL_FRAME_TYPE_TABLE, &name_p);
00692 sinfo_msg( "Writing tbl %s pro catg %s" , name_o, pro_catg) ;
00693
00694
00695 if ((cpl_error_code)((plist = cpl_propertylist_load(ref_file,0)) == NULL))
00696 {
00697 sinfo_msg_error( "getting header from tbl frame %s",ref_file);
00698 cpl_propertylist_delete(plist) ;
00699 cpl_free(ref_file);
00700 cpl_free(name_o);
00701 cpl_free(name_p);
00702 return -1 ;
00703 }
00704 sinfo_clean_header(&plist);
00705
00706
00707 sinfo_log_pro(name_o, pro_catg, CPL_FRAME_TYPE_TABLE,
00708 ref,&set,&plist,parlist,recid);
00709 if(qclog != NULL) {
00710 sinfo_pfits_put_qc(plist, qclog) ;
00711 }
00712
00713 if (cpl_table_save(table, plist, NULL, name_o, CPL_IO_DEFAULT)
00714 != CPL_ERROR_NONE) {
00715 sinfo_msg_error( "Cannot save the product: %s", name_o);
00716 cpl_propertylist_delete(plist) ;
00717 cpl_free(ref_file);
00718 cpl_free(name_o);
00719 cpl_free(name_p);
00720 return -1 ;
00721 }
00722
00723
00724
00725
00726
00727
00728
00729 cpl_propertylist_delete(plist) ;
00730 cpl_msg_indent_less() ;
00731 cpl_free(name_o);
00732 cpl_free(name_p);
00733 cpl_free(ref_file);
00734 return 0 ;
00735 }
00736
00737
00738
00739
00752
00753
00754
00755
00756 int sinfo_pro_save_ims(
00757 cpl_imagelist * ims,
00758 cpl_frameset * ref,
00759 cpl_frameset * set,
00760 const char * out_file,
00761 const char * pro_catg,
00762 cpl_table * qclog,
00763 const char * recid,
00764 cpl_parameterlist* parlist)
00765
00766 {
00767 char * name_o=NULL;
00768 char * name_p=NULL;
00769
00770 cpl_propertylist * plist=NULL ;
00771 cpl_frame* first_frame=NULL;
00772 char* ref_file=NULL;
00773
00774
00775 first_frame = cpl_frameset_get_first(ref) ;
00776 ref_file = cpl_strdup(cpl_frame_get_filename(first_frame)) ;
00777
00778 name_o = cpl_malloc(FILE_NAME_SZ * sizeof(char));
00779 name_p = cpl_malloc(FILE_NAME_SZ * sizeof(char));
00780 sinfo_check_name(out_file, &name_o, CPL_FRAME_TYPE_IMAGE, &name_p);
00781 sinfo_msg( "Writing ims %s pro catg %s" , name_o, pro_catg) ;
00782
00783 if ((cpl_error_code)((plist = cpl_propertylist_load(ref_file, 0)) == NULL))
00784 {
00785 sinfo_msg_error( "getting header from ims frame %s",ref_file);
00786 cpl_propertylist_delete(plist) ;
00787 cpl_free(ref_file);
00788 cpl_free(name_o);
00789 cpl_free(name_p);
00790 return -1 ;
00791 }
00792 sinfo_clean_header(&plist);
00793 if ( ( strstr(pro_catg,"STD") != NULL ) ||
00794 ( strstr(pro_catg,"PSF") != NULL ) ||
00795 ( strstr(pro_catg,"OBJ") != NULL ) ) {
00796 sinfo_clean_cube_header(&plist);
00797 }
00798
00799
00800 sinfo_log_pro(name_o, pro_catg, CPL_FRAME_TYPE_IMAGE,
00801 ref,&set,&plist,parlist,recid);
00802
00803 if(qclog != NULL) {
00804 sinfo_pfits_put_qc(plist, qclog) ;
00805 }
00806
00807
00808
00809 if (cpl_imagelist_save(ims, name_o, CPL_BPP_IEEE_FLOAT,
00810 plist,CPL_IO_DEFAULT)!=CPL_ERROR_NONE) {
00811 sinfo_msg_error( "Cannot save the product %s",name_o);
00812 cpl_propertylist_delete(plist) ;
00813 cpl_free(ref_file);
00814 cpl_free(name_o);
00815 cpl_free(name_p);
00816 return -1 ;
00817 }
00818
00819
00820
00821
00822
00823
00824 cpl_propertylist_delete(plist) ;
00825 cpl_msg_indent_less() ;
00826 cpl_free(name_o);
00827 cpl_free(name_p);
00828 cpl_free(ref_file);
00829 return 0 ;
00830 }
00831
00832
00833
00834 static void
00835 sinfo_log_pro(char* name_o,
00836 const char* pro_catg,
00837 int frm_type,
00838 cpl_frameset* ref_set,
00839 cpl_frameset** out_set,
00840 cpl_propertylist** plist,
00841 cpl_parameterlist* parlist,
00842 const char* recid)
00843 {
00844 cpl_frame* product_frame = NULL ;
00845 char * pipe_id=NULL;
00846 cpl_errorstate initial_errorstate = cpl_errorstate_get();
00847
00848 pipe_id = cpl_calloc(FILE_NAME_SZ,sizeof(char));
00849 snprintf(pipe_id,MAX_NAME_SIZE-1,"%s%s","sinfo/",PACKAGE_VERSION);
00850 product_frame = cpl_frame_new() ;
00851 cpl_frame_set_filename(product_frame, name_o) ;
00852 cpl_frame_set_tag(product_frame, pro_catg) ;
00853 cpl_frame_set_type(product_frame, frm_type);
00854 cpl_frame_set_group(product_frame, CPL_FRAME_GROUP_PRODUCT);
00855 cpl_frame_set_level(product_frame, CPL_FRAME_LEVEL_FINAL);
00856
00857 #if defined CPL_VERSION_CODE && CPL_VERSION_CODE >= CPL_VERSION(4, 8, 0)
00858 if(cpl_dfs_setup_product_header(*plist,product_frame,ref_set,parlist,recid,
00859 pipe_id,KEY_VALUE_HPRO_DID,NULL) != CPL_ERROR_NONE) {
00860 sinfo_msg_warning("Problem in the product DFS-compliance");
00861 sinfo_msg_warning((char* ) cpl_error_get_message());
00862 cpl_errorstate_dump(initial_errorstate, CPL_FALSE, NULL);
00863 cpl_error_reset();
00864 }
00865 #else
00866 if(cpl_dfs_setup_product_header(*plist,product_frame,ref_set,parlist,recid,
00867 pipe_id,KEY_VALUE_HPRO_DID) != CPL_ERROR_NONE) {
00868 sinfo_msg_warning("Problem in the product DFS-compliance");
00869 sinfo_msg_warning((char* ) cpl_error_get_message());
00870 cpl_errorstate_dump(initial_errorstate, CPL_FALSE, NULL);
00871 cpl_error_reset();
00872 }
00873 #endif
00874 cpl_frameset_insert(*out_set, product_frame);
00875 cpl_free(pipe_id);
00876
00877 }
00878
00879 static void
00880 sinfo_check_name(const char* in, char** ou, int type, char** paf) {
00881
00882 char* tmp=NULL;
00883 char name_b[512] ;
00884 if (strstr(in, "." ) != NULL ) {
00885 tmp = sinfo_new_get_rootname(in);
00886 strcpy(name_b,tmp);
00887 } else {
00888 snprintf(name_b, MAX_NAME_SIZE-1,in) ;
00889 }
00890 strcpy(*ou,name_b);
00891 if (type == CPL_FRAME_TYPE_TABLE) {
00892 strcat(*ou,".fits");
00893 } else {
00894 strcat(*ou,".fits");
00895 }
00896 strcpy(*paf,name_b);
00897 strcat(*paf,".paf");
00898
00899 }
00900
00901
00902 static void
00903 sinfo_clean_header(cpl_propertylist** header)
00904 {
00905 cpl_propertylist_erase_regexp(*header, "^ESO PRO .*",0);
00906
00907 }
00908
00909
00910 static void
00911 sinfo_clean_cube_header(cpl_propertylist** header)
00912 {
00913 cpl_propertylist_erase_regexp(*header, "^CRVAL*",0);
00914 cpl_propertylist_erase_regexp(*header, "^CRPIX*",0);
00915 cpl_propertylist_erase_regexp(*header, "^CTYPE*",0);
00916 cpl_propertylist_erase_regexp(*header, "^CUNIT*",0);
00917 cpl_propertylist_erase_regexp(*header, "^CD1_1",0);
00918 cpl_propertylist_erase_regexp(*header, "^CD1_2",0);
00919 cpl_propertylist_erase_regexp(*header, "^CD2_1",0);
00920 cpl_propertylist_erase_regexp(*header, "^CD2_2",0);
00921
00922 }
00923
00924
00925
00926
00927
00928
00929 static int
00930 sinfo_pfits_put_qc(
00931 cpl_propertylist * plist,
00932 cpl_table * qclog)
00933 {
00934 char key_name[FILE_NAME_SZ];
00935 char key_value[FILE_NAME_SZ];
00936 char key_type[FILE_NAME_SZ];
00937 char key_help[FILE_NAME_SZ] ;
00938
00939 int i =0;
00940 int n =0;
00941
00942 if (plist == NULL) {
00943 sinfo_msg_error("plist=NULL, something strange");
00944 return -1 ;
00945 }
00946
00947
00948 n=cpl_table_get_nrow(qclog);
00949 for(i=0;i<n;i++) {
00950 strcpy(key_name,"ESO ");
00951 strcat(key_name,cpl_table_get_string(qclog,"key_name",i));
00952 strcpy(key_type,cpl_table_get_string(qclog,"key_type",i));
00953 strcpy(key_value,cpl_table_get_string(qclog,"key_value",i));
00954 strcpy(key_help,cpl_table_get_string(qclog,"key_help",i));
00955
00956
00957 if(!sinfo_propertylist_has(plist,key_name)) {
00958 if(strcmp(key_type,"CPL_TYPE_STRING") == 0) {
00959 cpl_propertylist_append_string(plist, key_name,key_value) ;
00960 cpl_propertylist_set_comment(plist, key_name,key_help) ;
00961 } else if(strcmp(key_type,"CPL_TYPE_BOOL") == 0) {
00962 cpl_propertylist_append_bool(plist, key_name,atoi(key_value)) ;
00963 cpl_propertylist_set_comment(plist, key_name,key_help) ;
00964 } else if(strcmp(key_type,"CPL_TYPE_INT") == 0) {
00965 cpl_propertylist_append_int(plist,key_name,atoi(key_value)) ;
00966 cpl_propertylist_set_comment(plist, key_name,key_help) ;
00967 } else if(strcmp(key_type,"CPL_TYPE_FLOAT") == 0) {
00968 cpl_propertylist_append_float(plist, key_name,(float)atof(key_value)) ;
00969 cpl_propertylist_set_comment(plist, key_name,key_help) ;
00970 } else if(strcmp(key_type,"CPL_TYPE_DOUBLE") == 0) {
00971 cpl_propertylist_append_double(plist, key_name,atof(key_value)) ;
00972 cpl_propertylist_set_comment(plist, key_name,key_help) ;
00973 }
00974 }
00975
00976 }
00977
00978 return 0 ;
00979 }
00980
00981
00982
00983
00984
00985
00986
00987 cpl_table *
00988 sinfo_qclog_init(void)
00989 {
00990
00991 cpl_table *table;
00992
00993 table = cpl_table_new(0);
00994 cpl_table_new_column(table,"key_name", CPL_TYPE_STRING);
00995 cpl_table_new_column(table,"key_type", CPL_TYPE_STRING);
00996 cpl_table_new_column(table,"key_value", CPL_TYPE_STRING);
00997 cpl_table_new_column(table,"key_help", CPL_TYPE_STRING);
00998
00999 return table;
01000 }
01001
01002
01003
01004
01005
01006 int
01007 sinfo_qclog_add_int(cpl_table* table,
01008 const char* key_name,
01009 const int value,
01010 const char* key_help,
01011 const char* format)
01012 {
01013 int sz = cpl_table_get_nrow(table);
01014 int raw = sz;
01015 char key_value[FILE_NAME_SZ];
01016 char key_type[FILE_NAME_SZ];
01017
01018 snprintf(key_value,MAX_NAME_SIZE-1,format,value);
01019 strcpy(key_type,"CPL_TYPE_INT");
01020
01021 cpl_table_set_size(table,sz+1);
01022
01023 cpl_table_set_string(table,"key_name" ,raw,key_name);
01024 cpl_table_set_string(table,"key_type" ,raw,key_type);
01025 cpl_table_set_string(table,"key_value",raw,key_value);
01026 cpl_table_set_string(table,"key_help" ,raw,key_help);
01027
01028 return 0;
01029
01030 }
01031
01032
01033
01034 int
01035 sinfo_qclog_add_bool(cpl_table* table,
01036 const char* key_name,
01037 const char value,
01038 const char* key_help,
01039 const char* format)
01040 {
01041 int sz = cpl_table_get_nrow(table);
01042 int raw = sz;
01043 char key_value[FILE_NAME_SZ];
01044 char key_type[FILE_NAME_SZ];
01045
01046 snprintf(key_value,MAX_NAME_SIZE-1,format,value);
01047 strcpy(key_type,"CPL_TYPE_BOOL");
01048
01049 cpl_table_set_size(table,sz+1);
01050
01051 cpl_table_set_string(table,"key_name" ,raw,key_name);
01052 cpl_table_set_string(table,"key_type" ,raw,key_type);
01053 cpl_table_set_string(table,"key_value",raw,key_value);
01054 cpl_table_set_string(table,"key_help" ,raw,key_help);
01055
01056 return 0;
01057
01058 }
01059
01060
01061
01062 int
01063 sinfo_qclog_add_float(cpl_table* table,
01064 const char* key_name,
01065 const float value,
01066 const char* key_help,
01067 const char* format)
01068 {
01069 int sz = cpl_table_get_nrow(table);
01070 int raw = sz;
01071 char key_value[FILE_NAME_SZ];
01072 char key_type[FILE_NAME_SZ];
01073
01074 snprintf(key_value,MAX_NAME_SIZE-1,format,value);
01075 strcpy(key_type,"CPL_TYPE_FLOAT");
01076
01077 cpl_table_set_size(table,sz+1);
01078
01079 cpl_table_set_string(table,"key_name" ,raw,key_name);
01080 cpl_table_set_string(table,"key_type" ,raw,key_type);
01081 cpl_table_set_string(table,"key_value",raw,key_value);
01082 cpl_table_set_string(table,"key_help" ,raw,key_help);
01083
01084 return 0;
01085
01086 }
01087
01088
01089
01090 int
01091 sinfo_qclog_add_double(cpl_table* table,
01092 const char* key_name,
01093 const double value,
01094 const char* key_help,
01095 const char* format)
01096 {
01097 int sz = cpl_table_get_nrow(table);
01098 int raw = sz;
01099 char key_value[FILE_NAME_SZ];
01100 char key_type[FILE_NAME_SZ];
01101
01102 snprintf(key_value,MAX_NAME_SIZE-1,format,value);
01103 strcpy(key_type,"CPL_TYPE_DOUBLE");
01104
01105 cpl_table_set_size(table,sz+1);
01106
01107 cpl_table_set_string(table,"key_name" ,raw,key_name);
01108 cpl_table_set_string(table,"key_type" ,raw,key_type);
01109 cpl_table_set_string(table,"key_value",raw,key_value);
01110 cpl_table_set_string(table,"key_help" ,raw,key_help);
01111
01112 return 0;
01113
01114 }
01115
01116 int
01117 sinfo_qclog_add_string(cpl_table* table,
01118 const char* key_name,
01119 const char* value,
01120 const char* key_help,
01121 const char* format)
01122 {
01123 int sz = cpl_table_get_nrow(table);
01124 int raw = sz;
01125 char key_value[FILE_NAME_SZ];
01126 char key_type[FILE_NAME_SZ];
01127
01128 snprintf(key_value,MAX_NAME_SIZE-1,format,value);
01129 strcpy(key_type,"CPL_TYPE_STRING");
01130
01131 cpl_table_set_size(table,sz+1);
01132
01133 cpl_table_set_string(table,"key_name" ,raw,key_name);
01134 cpl_table_set_string(table,"key_type" ,raw,key_type);
01135 cpl_table_set_string(table,"key_value",raw,key_value);
01136 cpl_table_set_string(table,"key_help" ,raw,key_help);
01137
01138 return 0;
01139
01140 }
01141
01142
01143
01144