Changeset 6767 for trunk/psLib/src/fits/psFitsHeader.c
- Timestamp:
- Apr 4, 2006, 9:52:55 AM (20 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/fits/psFitsHeader.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/fits/psFitsHeader.c
r6354 r6767 7 7 * @author Robert DeSonia, MHPCC 8 8 * 9 * @version $Revision: 1. 2$ $Name: not supported by cvs2svn $10 * @date $Date: 2006-0 2-08 01:03:34$9 * @version $Revision: 1.3 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2006-04-04 19:52:42 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 90 90 switch (keyType) { 91 91 case 'X': // bit 92 case 'B': // byte 93 success = psMetadataAdd(out, 94 PS_LIST_TAIL, 95 keyName, 96 PS_DATA_S8 | PS_META_DUPLICATE_OK, 97 keyComment, 98 atoi(keyValue)); 99 break; 92 100 case 'I': // short int. 101 success = psMetadataAdd(out, 102 PS_LIST_TAIL, 103 keyName, 104 PS_DATA_S16 | PS_META_DUPLICATE_OK, 105 keyComment, 106 (psS16)atoi(keyValue)); 107 break; 93 108 case 'J': // int. 94 case 'B': // byte95 109 success = psMetadataAdd(out, 96 110 PS_LIST_TAIL, … … 100 114 atoi(keyValue)); 101 115 break; 102 case 'U': // unsigned int. may not fit in a psS32 103 case 'K': // long int. can't all fit in a psS32 116 case 'U': // unsigned int. 117 success = psMetadataAdd(out, 118 PS_LIST_TAIL, 119 keyName, 120 PS_DATA_U32 | PS_META_DUPLICATE_OK, 121 keyComment, 122 atol(keyValue)); 123 break; 124 125 case 'K': // long int. can't all fit in a psS32, put in psF64 104 126 case 'F': 105 127 success = psMetadataAdd(out, … … 167 189 } 168 190 169 psMetadata* psFitsReadHeaderSet( const psFits* fits)191 psMetadata* psFitsReadHeaderSet(psMetadata* out, const psFits* fits) 170 192 { 171 193 if (fits == NULL) { 172 194 psError(PS_ERR_BAD_PARAMETER_NULL, true, 173 195 PS_ERRORTEXT_psFits_NULL); 196 psFree(out); 174 197 return NULL; 175 198 } 176 199 177 psMetadata* out = psMetadataAlloc(); 200 if (out == NULL) { 201 out = psMetadataAlloc(); 202 } 178 203 179 204 int size = psFitsGetSize(fits); … … 244 269 break; 245 270 } 271 case PS_DATA_S8: 272 fits_update_key(fits->fd, 273 TBYTE, 274 item->name, 275 &item->data.S8, 276 item->comment, 277 &status); 278 break; 279 case PS_DATA_S16: 280 fits_update_key(fits->fd, 281 TSHORT, 282 item->name, 283 &item->data.S16, 284 item->comment, 285 &status); 286 break; 246 287 case PS_DATA_S32: 247 288 fits_update_key(fits->fd, … … 249 290 item->name, 250 291 &item->data.S32, 292 item->comment, 293 &status); 294 break; 295 case PS_DATA_U8: { 296 unsigned short int temp = item->data.U8; 297 fits_update_key(fits->fd, 298 TUSHORT, 299 item->name, 300 &temp, 301 item->comment, 302 &status); 303 } 304 break; 305 case PS_DATA_U16: 306 fits_update_key(fits->fd, 307 TUSHORT, 308 item->name, 309 &item->data.U16, 310 item->comment, 311 &status); 312 break; 313 case PS_DATA_U32: 314 fits_update_key(fits->fd, 315 TUINT, 316 item->name, 317 &item->data.U32, 251 318 item->comment, 252 319 &status); … … 290 357 } 291 358 359 psFree(iter); 360 292 361 return true; 293 362 } 294 363 364 bool psFitsHeaderValidate(psMetadata *header) 365 { 366 bool valid = true; 367 int status; 368 369 if (header == NULL) { 370 psError(PS_ERR_BAD_PARAMETER_NULL, true, 371 PS_ERRORTEXT_psFits_METADATA_NULL); 372 return false; 373 } 374 375 //transverse the metadata list and inspect at each key 376 377 psListIterator* iter = psListIteratorAlloc(header->list,PS_LIST_HEAD,true); 378 psMetadataItem* item; 379 while ( (item=psListGetAndIncrement(iter)) != NULL ) { 380 psDataType type = item->type; 381 382 if (type > PS_DATA_STRING) { // i.e., a non-primitive type 383 valid = false; 384 } 385 386 if (strlen(item->name) > 8) { 387 item->name[8] = '\0'; // truncate to 8 characters 388 } 389 390 fits_uppercase(item->name); // make uppercase 391 392 // now, let's see if CFITSIO thinks this is a good keyword... 393 status = 0; 394 if (fits_test_keyword(item->name,&status) != 0) { 395 valid = false; 396 } 397 } 398 399 psFree(iter); 400 401 return valid; 402 }
Note:
See TracChangeset
for help on using the changeset viewer.
