Changeset 3128 in Sophya for trunk/SophyaExt/FitsIOServer/fabtwriter.cc
- Timestamp:
- Jan 11, 2007, 7:07:52 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaExt/FitsIOServer/fabtwriter.cc
r3114 r3128 53 53 DoubleKey.resize(0); 54 54 LongKey.resize(0); 55 LongLongKey.resize(0); 55 56 StringKey.resize(0); 56 57 … … 78 79 79 80 // create d'un Primary HDU 80 // longnaxes[1] = {0};81 //if(fits_create_img (FitsPtr,BYTE_IMG,0,naxes,&sta)) {81 //LONGLONG naxes[1] = {0}; 82 //if(fits_create_imgll(FitsPtr,BYTE_IMG,0,naxes,&sta)) { 82 83 // printerror(sta); 83 84 // throw NullPtrError("FitsWriter::cr_or_upd_fits: Error creating Primary extension\n"); … … 125 126 } 126 127 128 /*! Write a long long value into Fits Header */ 129 void FitsWriter::WriteKey(const char *keyname,LONGLONG val,char* comment) 130 { 131 if(keyname==NULL || strlen(keyname)<=0) return; 132 KeyLongLong k; 133 k.keyname=keyname; 134 k.val=val; 135 if(comment) k.comment=comment; else k.comment=""; 136 LongLongKey.push_back(k); 137 } 138 127 139 /*! Write a string value into Fits Header */ 128 140 void FitsWriter::WriteKey(const char *keyname,string val,char* comment) … … 142 154 int sta=0; 143 155 if(DoubleKey.size()>0) 144 for(unsigned inti=0;i<DoubleKey.size();i++) {156 for(unsigned long i=0;i<DoubleKey.size();i++) { 145 157 char* key = const_cast<char*>(DoubleKey[i].keyname.c_str()); 146 158 char* com = const_cast<char*>(DoubleKey[i].comment.c_str()); … … 150 162 } 151 163 if(LongKey.size()>0) 152 for(unsigned inti=0;i<LongKey.size();i++) {164 for(unsigned long i=0;i<LongKey.size();i++) { 153 165 char* key = const_cast<char*>(LongKey[i].keyname.c_str()); 154 166 char* com = const_cast<char*>(LongKey[i].comment.c_str()); … … 157 169 printerror(sta); 158 170 } 171 if(LongLongKey.size()>0) 172 for(unsigned long i=0;i<LongLongKey.size();i++) { 173 char* key = const_cast<char*>(LongLongKey[i].keyname.c_str()); 174 char* com = const_cast<char*>(LongLongKey[i].comment.c_str()); 175 LONGLONG val = LongLongKey[i].val; 176 if(fits_update_key(FitsPtr,TLONGLONG,key,&val,com,&sta)) 177 printerror(sta); 178 } 159 179 if(StringKey.size()>0) 160 for(unsigned inti=0;i<StringKey.size();i++) {180 for(unsigned long i=0;i<StringKey.size();i++) { 161 181 char* key = const_cast<char*>(StringKey[i].keyname.c_str()); 162 182 char* com = const_cast<char*>(StringKey[i].comment.c_str()); … … 167 187 DoubleKey.resize(0); 168 188 LongKey.resize(0); 189 LongLongKey.resize(0); 169 190 StringKey.resize(0); 170 191 } 171 192 172 void FitsWriter::printerrorwrite(const char* type,int col, longrow,int sta)193 void FitsWriter::printerrorwrite(const char* type,int col,LONGLONG row,int sta) 173 194 { 174 195 if(sta==NUM_OVERFLOW) {NOverFlow++; return;} … … 176 197 char str[256]; 177 198 sprintf(str,"FitsWriter::Write_%s: Error Writing Fits c=%d r=%ld sta=%d" 178 ,type,col, row,sta);199 ,type,col,(long)row,sta); 179 200 throw NotAvailableOperation(str); 180 201 } … … 208 229 int c5 = fbtw.AddCol("vard","","arcmin",TDOUBLE); // col=4 209 230 fbtw.SetDebug(3); 210 for( longi=0;i<1000;i++) {231 for(LONGLONG i=0;i<1000;i++) { 211 232 double x = i; 212 233 fbtw.Write(c1,i,1000.*x); // if overflow, managed by cfitsio … … 228 249 TVector<float> dataf(100); 229 250 TVector<int_4> datal(100); 230 for( longi=0;i<9990;i+=100) {231 longi2=i+100-1; if(i2>=9990) i2=9990-1;232 for( longj=0;j<100;j++) datad(i) = ...;233 for( longj=0;j<100;j++) dataf(i) = ...;234 for( longj=0;j<100;j++) datal(i) = ...;251 for(LONGLONG i=0;i<9990;i+=100) { 252 LONGLONG i2=i+100-1; if(i2>=9990) i2=9990-1; 253 for(LONGLONG j=0;j<100;j++) datad(i) = ...; 254 for(LONGLONG j=0;j<100;j++) dataf(i) = ...; 255 for(LONGLONG j=0;j<100;j++) datal(i) = ...; 235 256 fbtw.Write(1,i,datal); 236 257 fbtw.Write(2,i,dataf); … … 251 272 cout<<"Writing Keys"<<endl; 252 273 fbtw.WriteKey("MYKEYL",(long)123456789,"my LONG key"); 274 fbtw.WriteKey("MYKEYLL",(LONGLONG)123456789,"my LONGLONG key"); 253 275 fbtw.WriteKey("MYKEYD",1.9999999,"my DOUBLE key"); 254 276 fbtw.WriteKey("MYKEYC","how are you ?","my CHAR* key"); … … 265 287 cout<<"Writing Keys"<<endl; 266 288 fbtw2.WriteKey("MYKEYL",(long)-123456789,"my new LONG key"); 289 fbtw2.WriteKey("MYKEYLL",(LONGLONG)-123456789,"my new LONGLONG key"); 267 290 fbtw2.WriteKey("MYKEYD",-1.9999999,"my new clef DOUBLE key"); 268 291 fbtw2.WriteKey("MYKEYC","how are you NOW ?","my new CHAR* key"); … … 275 298 276 299 cout<<">>>>> Write into the 2 tables simultaneously"<<endl; 277 for( inti=0;i<NNN;i++) {300 for(LONGLONG i=0;i<NNN;i++) { 278 301 fbtw.Write(i1,i,i+1.); 279 302 fbtw.Write(i2,i,i+11.); … … 462 485 throw ParmError("FitsABTWriter::createtbl: Zero column asked !\n"); 463 486 464 longnrows = 0;487 LONGLONG nrows = 0; 465 488 char *extname = NULL; 466 489 char **ttype = (char **) malloc(tfields*sizeof(char *)); … … 472 495 strcpy(extname,ExtName.c_str()); 473 496 } 474 int i; 475 for(i=0;i<tfields;i++) { 497 for(int i=0;i<tfields;i++) { 476 498 ttype[i] = (char *) malloc((strlen(Label[i].c_str())+1)*sizeof(char)); 477 499 strcpy(ttype[i],Label[i].c_str()); … … 491 513 // menage 492 514 if(extname) delete [] extname; 493 for(i =0;i<tfields;i++) {515 for(int i=0;i<tfields;i++) { 494 516 if(ttype[i]) delete [] ttype[i]; 495 517 if(tform[i]) delete [] tform[i]; … … 525 547 526 548 /*! Write signed char (1 Byte) data to FITS file (see below) */ 527 void FitsABTWriter::Write(int col, longrow,int_1 val)549 void FitsABTWriter::Write(int col,LONGLONG row,int_1 val) 528 550 { 529 551 #ifdef TSBYTE … … 538 560 539 561 /*! Write unsigned char (1 Byte) data to FITS file (see below) */ 540 void FitsABTWriter::Write(int col, longrow,uint_1 val)562 void FitsABTWriter::Write(int col,LONGLONG row,uint_1 val) 541 563 { 542 564 if(FirstTime) createtbl(); … … 547 569 548 570 /*! Write short (2 Bytes) data to FITS file (see below) */ 549 void FitsABTWriter::Write(int col, longrow,int_2 val)571 void FitsABTWriter::Write(int col,LONGLONG row,int_2 val) 550 572 { 551 573 if(FirstTime) createtbl(); … … 556 578 557 579 /*! Write unsigned short (2 Bytes) data to FITS file (see below) */ 558 void FitsABTWriter::Write(int col, longrow,uint_2 val)580 void FitsABTWriter::Write(int col,LONGLONG row,uint_2 val) 559 581 { 560 582 if(FirstTime) createtbl(); … … 565 587 566 588 /*! Write long (4 Bytes) data to FITS file (see below) */ 567 void FitsABTWriter::Write(int col, longrow,int_4 val)589 void FitsABTWriter::Write(int col,LONGLONG row,int_4 val) 568 590 { 569 591 if(FirstTime) createtbl(); … … 576 598 577 599 /*! Write unsigned long (4 Bytes) data to FITS file (see below) */ 578 void FitsABTWriter::Write(int col, longrow,uint_4 val)600 void FitsABTWriter::Write(int col,LONGLONG row,uint_4 val) 579 601 { 580 602 if(FirstTime) createtbl(); … … 587 609 588 610 /*! Write long long (8 Bytes) data to FITS file (see below) */ 589 void FitsABTWriter::Write(int col, longrow,int_8 val)611 void FitsABTWriter::Write(int col,LONGLONG row,int_8 val) 590 612 { 591 613 #ifdef TLONGLONG … … 600 622 601 623 /*! Write float data to FITS file (see below) */ 602 void FitsABTWriter::Write(int col, longrow,float val)624 void FitsABTWriter::Write(int col,LONGLONG row,float val) 603 625 { 604 626 if(FirstTime) createtbl(); … … 609 631 610 632 /*! Write double data to FITS file (see below) */ 611 void FitsABTWriter::Write(int col, longrow,double val)633 void FitsABTWriter::Write(int col,LONGLONG row,double val) 612 634 { 613 635 if(FirstTime) createtbl(); … … 628 650 629 651 /*! Write a vector of unsigned short (2 Bytes) data to FITS file (see below) */ 630 long FitsABTWriter::Write(int col,longrow,TVector<uint_2>& val)631 { 632 if(FirstTime) createtbl(); 633 longnel = val.Size();652 LONGLONG FitsABTWriter::Write(int col,LONGLONG row,TVector<uint_2>& val) 653 { 654 if(FirstTime) createtbl(); 655 LONGLONG nel = val.Size(); 634 656 int sta=0; 635 657 if(fits_write_col(FitsPtr,TUSHORT,col+1,row+1,1,nel,val.Data(),&sta)) … … 639 661 640 662 /*! Write a vector of long (4 Bytes) data to FITS file (see below) */ 641 long FitsABTWriter::Write(int col,longrow,TVector<int_4>& val)642 { 643 if(FirstTime) createtbl(); 644 longnel = val.Size();663 LONGLONG FitsABTWriter::Write(int col,LONGLONG row,TVector<int_4>& val) 664 { 665 if(FirstTime) createtbl(); 666 LONGLONG nel = val.Size(); 645 667 int sta=0; 646 668 // Bug ou inconsistence cfitsio sur machine ou long=8Bytes ? … … 652 674 653 675 /*! Write a vector of long long (8 Bytes) data to FITS file (see below) */ 654 long FitsABTWriter::Write(int col,longrow,TVector<int_8>& val)676 LONGLONG FitsABTWriter::Write(int col,LONGLONG row,TVector<int_8>& val) 655 677 { 656 678 #ifdef TLONGLONG 657 679 if(FirstTime) createtbl(); 658 longnel = val.Size();680 LONGLONG nel = val.Size(); 659 681 int sta=0; 660 682 if(fits_write_col(FitsPtr,TLONGLONG,col+1,row+1,1,nel,val.Data(),&sta)) … … 667 689 668 690 /*! Write a vector of float data to FITS file (see below) */ 669 long FitsABTWriter::Write(int col,longrow,TVector<float>& val)670 { 671 if(FirstTime) createtbl(); 672 longnel = val.Size();691 LONGLONG FitsABTWriter::Write(int col,LONGLONG row,TVector<float>& val) 692 { 693 if(FirstTime) createtbl(); 694 LONGLONG nel = val.Size(); 673 695 int sta=0; 674 696 if(fits_write_col(FitsPtr,TFLOAT,col+1,row+1,1,nel,val.Data(),&sta)) … … 678 700 679 701 /*! Write a vector of double data to FITS file (see below) */ 680 long FitsABTWriter::Write(int col,longrow,TVector<double>& val)681 { 682 if(FirstTime) createtbl(); 683 longnel = val.Size();702 LONGLONG FitsABTWriter::Write(int col,LONGLONG row,TVector<double>& val) 703 { 704 if(FirstTime) createtbl(); 705 LONGLONG nel = val.Size(); 684 706 int sta=0; 685 707 if(fits_write_col(FitsPtr,TDOUBLE,col+1,row+1,1,nel,val.Data(),&sta)) … … 785 807 786 808 int sta=0; 787 if(fits_create_img (FitsPtr,BitPix,2,Naxis,&sta)) {809 if(fits_create_imgll(FitsPtr,BitPix,2,Naxis,&sta)) { 788 810 printerror(sta); 789 811 throw NullPtrError("FitsImg2DWriter::createimg: Error creating image extension\n"); … … 802 824 uint_2* arr = new uint_2[Naxis[0]]; 803 825 804 for( intl=0;l<Naxis[1];l++) {805 for( intc=0;c<Naxis[0];c++) arr[c] = data(l,c);806 longdeb = l*Naxis[0]+1, nel = Naxis[0]; int sta=0;826 for(LONGLONG l=0;l<Naxis[1];l++) { 827 for(LONGLONG c=0;c<Naxis[0];c++) arr[c] = data(l,c); 828 LONGLONG deb = l*Naxis[0]+1, nel = Naxis[0]; int sta=0; 807 829 fits_write_img(FitsPtr,TUSHORT,deb,nel,arr,&sta); 808 830 if(sta) { … … 823 845 int_4* arr = new int_4[Naxis[0]]; 824 846 825 for( intl=0;l<Naxis[1];l++) {826 for( intc=0;c<Naxis[0];c++) arr[c] = data(l,c);827 longdeb = l*Naxis[0]+1, nel = Naxis[0]; int sta=0;847 for(LONGLONG l=0;l<Naxis[1];l++) { 848 for(LONGLONG c=0;c<Naxis[0];c++) arr[c] = data(l,c); 849 LONGLONG deb = l*Naxis[0]+1, nel = Naxis[0]; int sta=0; 828 850 fits_write_img(FitsPtr,T,deb,nel,arr,&sta); 829 851 if(sta) { … … 843 865 float* arr = new float[Naxis[0]]; 844 866 845 for( intl=0;l<Naxis[1];l++) {846 for( intc=0;c<Naxis[0];c++) arr[c] = data(l,c);847 longdeb = l*Naxis[0]+1, nel = Naxis[0]; int sta=0;867 for(LONGLONG l=0;l<Naxis[1];l++) { 868 for(LONGLONG c=0;c<Naxis[0];c++) arr[c] = data(l,c); 869 LONGLONG deb = l*Naxis[0]+1, nel = Naxis[0]; int sta=0; 848 870 fits_write_img(FitsPtr,TFLOAT,deb,nel,arr,&sta); 849 871 if(sta) { … … 863 885 double* arr = new double[Naxis[0]]; 864 886 865 for( intl=0;l<Naxis[1];l++) {866 for( intc=0;c<Naxis[0];c++) arr[c] = data(l,c);867 longdeb = l*Naxis[0]+1, nel = Naxis[0]; int sta=0;887 for(LONGLONG l=0;l<Naxis[1];l++) { 888 for(LONGLONG c=0;c<Naxis[0];c++) arr[c] = data(l,c); 889 LONGLONG deb = l*Naxis[0]+1, nel = Naxis[0]; int sta=0; 868 890 fits_write_img(FitsPtr,TDOUBLE,deb,nel,arr,&sta); 869 891 if(sta) { … … 972 994 973 995 int sta=0; 974 if(fits_create_img (FitsPtr,BitPix,3,Naxis,&sta)) {996 if(fits_create_imgll(FitsPtr,BitPix,3,Naxis,&sta)) { 975 997 printerror(sta); 976 998 throw NullPtrError("FitsImg3DWriter::createimg: Error creating 3D image extension\n"); … … 991 1013 uint_2* arr = new uint_2[Naxis[0]]; 992 1014 993 for( int k=0;k<Naxis[2];k++) for(intj=0;j<Naxis[1];j++) {994 for( inti=0;i<Naxis[0];i++) arr[i] = data(i,j,k);995 longdeb = Naxis[0]*(j+Naxis[1]*k)+1, nel = Naxis[0]; int sta=0;1015 for(LONGLONG k=0;k<Naxis[2];k++) for(LONGLONG j=0;j<Naxis[1];j++) { 1016 for(LONGLONG i=0;i<Naxis[0];i++) arr[i] = data(i,j,k); 1017 LONGLONG deb = Naxis[0]*(j+Naxis[1]*k)+1, nel = Naxis[0]; int sta=0; 996 1018 fits_write_img(FitsPtr,TUSHORT,deb,nel,arr,&sta); 997 1019 if(sta) { … … 1015 1037 int_4* arr = new int_4[Naxis[0]]; 1016 1038 1017 for( int k=0;k<Naxis[2];k++) for(intj=0;j<Naxis[1];j++) {1018 for( inti=0;i<Naxis[0];i++) arr[i] = data(i,j,k);1019 longdeb = Naxis[0]*(j+Naxis[1]*k)+1, nel = Naxis[0]; int sta=0;1039 for(LONGLONG k=0;k<Naxis[2];k++) for(LONGLONG j=0;j<Naxis[1];j++) { 1040 for(LONGLONG i=0;i<Naxis[0];i++) arr[i] = data(i,j,k); 1041 LONGLONG deb = Naxis[0]*(j+Naxis[1]*k)+1, nel = Naxis[0]; int sta=0; 1020 1042 fits_write_img(FitsPtr,T,deb,nel,arr,&sta); 1021 1043 if(sta) { … … 1038 1060 float* arr = new float[Naxis[0]]; 1039 1061 1040 for( int k=0;k<Naxis[2];k++) for(intj=0;j<Naxis[1];j++) {1041 for( inti=0;i<Naxis[0];i++) arr[i] = data(i,j,k);1042 longdeb = Naxis[0]*(j+Naxis[1]*k)+1, nel = Naxis[0]; int sta=0;1062 for(LONGLONG k=0;k<Naxis[2];k++) for(LONGLONG j=0;j<Naxis[1];j++) { 1063 for(LONGLONG i=0;i<Naxis[0];i++) arr[i] = data(i,j,k); 1064 LONGLONG deb = Naxis[0]*(j+Naxis[1]*k)+1, nel = Naxis[0]; int sta=0; 1043 1065 fits_write_img(FitsPtr,TFLOAT,deb,nel,arr,&sta); 1044 1066 if(sta) { … … 1061 1083 double* arr = new double[Naxis[0]]; 1062 1084 1063 for( int k=0;k<Naxis[2];k++) for(intj=0;j<Naxis[1];j++) {1064 for( inti=0;i<Naxis[0];i++) arr[i] = data(i,j,k);1065 longdeb = Naxis[0]*(j+Naxis[1]*k)+1, nel = Naxis[0]; int sta=0;1085 for(LONGLONG k=0;k<Naxis[2];k++) for(LONGLONG j=0;j<Naxis[1];j++) { 1086 for(LONGLONG i=0;i<Naxis[0];i++) arr[i] = data(i,j,k); 1087 LONGLONG deb = Naxis[0]*(j+Naxis[1]*k)+1, nel = Naxis[0]; int sta=0; 1066 1088 fits_write_img(FitsPtr,TDOUBLE,deb,nel,arr,&sta); 1067 1089 if(sta) {
Note:
See TracChangeset
for help on using the changeset viewer.