Changeset 5168
- Timestamp:
- Sep 28, 2005, 10:02:49 AM (21 years ago)
- Location:
- trunk/psLib
- Files:
-
- 2 edited
-
src/fits/psFits.c (modified) (8 diffs)
-
test/fits/tst_psFits.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/fits/psFits.c
r5164 r5168 1 /** @file psFits.c r1 /** @file psFits.c 2 2 * 3 3 * @brief Contains Fits I/O routines … … 7 7 * @author Robert DeSonia, MHPCC 8 8 * 9 * @version $Revision: 1. 49$ $Name: not supported by cvs2svn $10 * @date $Date: 2005-09-28 02:37:58$9 * @version $Revision: 1.50 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2005-09-28 20:02:46 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 682 682 psMetadataAddMetadata(out, PS_LIST_HEAD, name, 0, "FITS Header", 683 683 header); 684 } else { // XXX: is this a warning or error? 685 psLogMsg(__func__, PS_LOG_WARN, 686 "Failed to read HDU#%d header data.", 687 lcv); 684 } else { 685 psWarning("Failed to read HDU#%d header data.", 686 lcv); 688 687 } 689 688 … … 1249 1248 #define READ_TABLE_ROW_CASE(FITSTYPE, NATIVETYPE, TYPE) \ 1250 1249 case FITSTYPE: { \ 1251 NATIVETYPE value = 0; \ 1252 int anynul = 0; \ 1253 fits_read_col(fits->fd, FITSTYPE, col,row+1, \ 1254 1, 1, NULL, &value, &anynul, &status); \ 1255 psTrace(".psFits.psFitsReadTableRow",5,"Column #%i, '%s', is type %i, repeat %i, Value = %g\n", \ 1256 col, name, typecode, repeat, (double)value); \ 1257 psMetadataAdd(data,PS_LIST_TAIL, name, \ 1258 PS_DATA_##TYPE, \ 1259 "", (ps##TYPE)value); \ 1250 if (repeat == 1) { \ 1251 NATIVETYPE value; \ 1252 int anynul = 0; \ 1253 fits_read_col(fits->fd, FITSTYPE, col,row+1, \ 1254 1, 1, NULL, &value, &anynul, &status); \ 1255 psTrace(".psFits.psFitsReadTableRow",5,"Column #%i, '%s', is type %i, repeat %i, Value = %g\n", \ 1256 col, name, typecode, repeat, (double)value); \ 1257 psMetadataAdd(data,PS_LIST_TAIL, name, \ 1258 PS_DATA_##TYPE, \ 1259 "", (ps##TYPE)value); \ 1260 } else { \ 1261 psVector* value = psVectorAlloc(repeat,PS_DATA_##TYPE); \ 1262 int anynul = 0; \ 1263 fits_read_col(fits->fd, FITSTYPE, col,row+1, \ 1264 1, repeat, NULL, value->data.U8, &anynul, &status); \ 1265 psMetadataAdd(data,PS_LIST_TAIL, name, \ 1266 PS_DATA_VECTOR, \ 1267 "", value); \ 1268 psFree(value); \ 1269 } \ 1260 1270 break; \ 1261 1271 } … … 1285 1295 } 1286 1296 default: 1297 psWarning("Data type (%d) not supportted for column %d", 1298 typecode, col); 1299 1287 1300 psTrace("psFits.psFitsReadTableRow", 2, 1288 1301 "Column %d or row %d was of a non primitive type, %d", … … 1584 1597 columns->data[n] = psMemIncrRefCounter(item); 1585 1598 } 1599 } else { 1600 // unsupported type -- treating as an error 1601 psError(PS_ERR_BAD_PARAMETER_TYPE, true, 1602 "Unsupported data type (%d) for Metadata Item '%s' in row %d.", 1603 item->type, item->name, row); 1604 psFree(iter); 1605 psFree(columns); 1606 return false; 1586 1607 } 1587 1608 } … … 1591 1612 1592 1613 if (columns->n == 0) { // no table columns found 1593 // XXX: Error? 1614 psError(PS_ERR_BAD_PARAMETER_SIZE, true, 1615 "Did not find any column data to write to a table."); 1616 psFree(columns); 1594 1617 return false; 1595 1618 } … … 1599 1622 psArray* columnTypes = psArrayAlloc(columns->n); 1600 1623 for (int n=0; n < columns->n; n++) { 1601 char* fitsType;1602 1624 columnNames->data[n] = psMemIncrRefCounter(((psMetadataItem*)columns->data[n])->name); 1603 1625 if ( ! getMetadataTForm((psMetadataItem*)columns->data[n], 1604 &fitsType,1) ) { 1605 // XXX: error message 1626 (char**)&(columnTypes->data[n]),1) ) { 1627 psError(PS_ERR_UNKNOWN, true, 1628 "Failed to determine the FITS data type of '%s' (type=%d).", 1629 columnNames->data[n], 1630 ((psMetadataItem*)columns->data[n])->type); 1631 psFree(columns); 1632 psFree(columnNames); 1633 psFree(columnTypes); 1606 1634 return false; 1607 1635 } 1608 columnTypes->data[n] = fitsType;1609 1636 } 1610 1637 -
trunk/psLib/test/fits/tst_psFits.c
r5164 r5168 6 6 * @author Robert DeSonia, MHPCC 7 7 * 8 * @version $Revision: 1.1 0$ $Name: not supported by cvs2svn $9 * @date $Date: 2005-09-28 02:38:01$8 * @version $Revision: 1.11 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2005-09-28 20:02:49 $ 10 10 * 11 11 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 203 203 204 204 psVector* vec = psVectorAlloc(5,PS_TYPE_S32); 205 for (int x=0; x < 5; x++) {206 vec->data.S32[x] = x* 2;205 for (int x=0; x < 4; x++) { 206 vec->data.S32[x] = x*10+row; 207 207 } 208 208 psMetadataAdd(header,PS_LIST_TAIL, "MYVEC", … … 899 899 psBool boolItem = psMetadataLookupBool(NULL, rowData, "MYBOOL"); 900 900 psString strItem = psMetadataLookupStr(NULL, rowData, "MYSTR"); 901 psVector* vecItem = psMetadataLookupPtr(NULL, rowData, "MYVEC"); 901 902 902 903 if (intItem != row) { … … 935 936 row, strItem, strValue); 936 937 return 24; 938 } 939 940 if ( vecItem == NULL ) { 941 psError(PS_ERR_UNKNOWN, true, 942 "Failed to retrieve psVector metadata item from file (row=%d).", 943 row); 944 return 25; 945 } 946 947 if ( vecItem->type.type != PS_DATA_S32 || 948 vecItem->data.S32[0] != row || 949 vecItem->data.S32[3] != row+30 ) { 950 psError(PS_ERR_UNKNOWN, true, 951 "Retrieved psVector (row=%d) didn't match expected values [%d,%d,%d,%d] vs [%d,%d,%d,%d].", 952 row,vecItem->data.S32[0], vecItem->data.S32[1], 953 vecItem->data.S32[2], vecItem->data.S32[3], 954 row,row+10,row+20,row+30); 955 return 26; 937 956 } 938 957 }
Note:
See TracChangeset
for help on using the changeset viewer.
