- Timestamp:
- May 28, 2015, 8:28:24 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ohana.20150429/src/opihi/lib.shell/VectorIO.c
r37049 r38330 1 1 # include "opihi.h" 2 2 3 // write a set of vectors to a FITS file (vectors names become fits column names)4 int WriteVectorTable (Header *theader,FTable *ftable, char *extname, Vector **vec, int Nvec, char *format) {3 // write a set of vectors to a FITS FTable structure (vectors names become fits column names) 4 static int WriteVectorTable (FTable *ftable, char *extname, Vector **vec, int Nvec, char *format) { 5 5 6 6 int j; … … 8 8 char *tformat = NULL; 9 9 10 Header *theader = ftable->header; 10 11 gfits_create_table_header (theader, "BINTABLE", extname); 11 12 … … 71 72 72 73 // write a set of vectors to a FITS file (vectors names become fits column names) 73 int WriteVectorTableFITS (char *filename, char *extname, Vector **vec, int Nvec, int append, char *format) {74 75 Header header;76 Matrix matrix;77 Header theader;78 FTable ftable;74 int WriteVectorTableFITS (char *filename, char *extname, Vector **vec, int Nvec, int append, int compress, char *format) { 75 76 Header rawheader; 77 Header cmpheader; 78 FTable rawtable; 79 FTable cmptable; 79 80 80 81 FILE *f = NULL; … … 91 92 } 92 93 93 if (!WriteVectorTable (&theader, &ftable, extname, vec, Nvec, format)) goto escape; 94 // init so free below does not fail if table is not created 95 gfits_init_header (&rawheader); 96 gfits_init_header (&cmpheader); 97 gfits_init_table (&rawtable); 98 gfits_init_table (&cmptable); 99 100 rawtable.header = &rawheader; 101 if (!WriteVectorTable (&rawtable, extname, vec, Nvec, format)) goto escape; 102 103 FTable *outtable = &rawtable; 104 Header *outheader = &rawheader; 105 106 if (compress) { 107 cmptable.header = &cmpheader; 108 if (!gfits_compress_table (&rawtable, &cmptable, 10, "GZIP_1")) goto escape; 109 outtable = &cmptable; 110 outheader = &cmpheader; 111 } 94 112 95 113 if (!append) { 114 Header header; 115 Matrix matrix; 96 116 gfits_init_header (&header); 117 gfits_init_matrix (&matrix); 97 118 header.extend = TRUE; 98 119 gfits_create_header (&header); … … 103 124 gfits_free_matrix (&matrix); 104 125 } 105 gfits_fwrite_Theader (f, &theader); 106 gfits_fwrite_table (f, &ftable); 107 108 gfits_free_header (&theader); 109 gfits_free_table (&ftable); 126 127 // write the actual table data 128 gfits_fwrite_Theader (f, outheader); 129 gfits_fwrite_table (f, outtable); 130 131 gfits_free_header (&rawheader); 132 gfits_free_table (&rawtable); 133 134 if (compress) { 135 gfits_free_header (&cmpheader); 136 gfits_free_table (&cmptable); 137 } 110 138 111 139 fclose (f); … … 114 142 115 143 escape: 116 if (!append) { 117 gfits_free_header (&header); 118 gfits_free_matrix (&matrix); 119 } 120 gfits_free_header (&theader); 121 gfits_free_table (&ftable); 144 gfits_free_header (&rawheader); 145 gfits_free_table (&rawtable); 146 147 if (compress) { 148 gfits_free_header (&cmpheader); 149 gfits_free_table (&cmptable); 150 } 122 151 123 152 fclose (f);
Note:
See TracChangeset
for help on using the changeset viewer.
