Changeset 6618 for branches/rel10_ifa/psModules/src/astrom/pmConceptsRead.c
- Timestamp:
- Mar 16, 2006, 3:47:44 PM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/rel10_ifa/psModules/src/astrom/pmConceptsRead.c
r6582 r6618 2 2 3 3 #include "pslib.h" 4 #include "psMetadataItemParse.h" 4 5 5 6 #include "pmFPA.h" … … 12 13 // File-static functions 13 14 ////////////////////////////////////////////////////////////////////////////////////////////////////////////// 14 15 16 static float parseF32(psMetadataItem *item17 )18 {19 switch (item->type) {20 case PS_DATA_F32:21 return item->data.F32;22 case PS_DATA_F64:23 // Assume it's OK to truncate to floating point from double24 return (float)item->data.F64;25 case PS_DATA_S32:26 // Promote to float27 return (float)item->data.S32;28 default:29 psError(PS_ERR_IO, true, "Concept %s (%s) is not of floating point type (%x) --- treating as NaN.\n",30 item->name, item->comment, item->type);31 return NAN;32 }33 }34 35 static double parseF64(psMetadataItem *item36 )37 {38 switch (item->type) {39 case PS_TYPE_F64:40 return item->data.F64;41 case PS_TYPE_F32:42 // Promote to double43 return (double)item->data.F32;44 case PS_TYPE_S32:45 // Promote to double46 return (double)item->data.S32;47 default:48 psError(PS_ERR_IO, true, "Concept %s (%s) is not of double-precision floating point type (%x) "49 "--- treating as NaN.\n", item->name, item->comment, item->type);50 return NAN;51 }52 }53 54 static int parseS32(psMetadataItem *item55 )56 {57 switch (item->type) {58 case PS_TYPE_S32:59 return item->data.S32;60 case PS_TYPE_F32:61 psLogMsg(__func__, PS_LOG_WARN, "Concept %s (%s) should be S32, but is F32 --- converting.\n",62 item->name, comment);63 return (int)item->data.F32;64 case PS_TYPE_F64:65 psLogMsg(__func__, PS_LOG_WARN, "Concept %s (%s) should be S32, but is F64 --- converting.\n",66 item->name, comment);67 return (int)item->data.F64;68 default:69 psError(PS_ERR_IO, true, "Concept %s (%s) is not of integer type (%x) --- treating as zero.\n",70 item->name, item->comment, item->type);71 return 0;72 }73 }74 75 static psString parseString(psMetadataItem *item76 )77 {78 switch (item->type) {79 case PS_DATA_STRING:80 return psMemIncrRefCounter(item->data.V);81 case PS_DATA_F32: {82 psString value = NULL; // String to return83 psStringAppend(&value, "%f", item->data.F32);84 return value;85 }86 case PS_DATA_S32: {87 psString value = NULL; // String to return88 psStringAppend(&value, "%d", item->data.S32);89 return value;90 }91 default:92 psError(PS_ERR_IO, true, "Concept %s (%s) is not of string type (%x) --- treating as "93 "undefined.\n", item->name, item->comment, item->type);94 return psStringCopy("");95 }96 }97 98 15 99 16 // This function gets called for the really boring concepts --- where all you have to do is parse from a … … 106 23 switch (pattern->type) { 107 24 case PS_DATA_STRING: { 108 psString string = parseString(concept); // Get the string, so I can free it after it goes on the MDI 25 psString string = psMetadataItemParseString(concept); // Get the string, so I can free it after it 26 // goes on the MetadataItem 109 27 psMetadataItem *item = psMetadataItemAllocStr(pattern->name, pattern->comment, string); 110 28 psFree(string); … … 112 30 } 113 31 case PS_DATA_S32: 114 return psMetadataItemAllocS32(pattern->name, pattern->comment, p arseS32(concept));32 return psMetadataItemAllocS32(pattern->name, pattern->comment, psMetadataItemParseS32(concept)); 115 33 case PS_DATA_F32: 116 return psMetadataItemAllocF32(pattern->name, pattern->comment, p arseF32(concept));34 return psMetadataItemAllocF32(pattern->name, pattern->comment, psMetadataItemParseF32(concept)); 117 35 case PS_DATA_F64: 118 return psMetadataItemAllocF64(pattern->name, pattern->comment, p arseF64(concept));36 return psMetadataItemAllocF64(pattern->name, pattern->comment, psMetadataItemParseF64(concept)); 119 37 default: 120 38 psLogMsg(__func__, PS_LOG_WARN, "Concept %s (%s) is not of a standard type (%x)\n",
Note:
See TracChangeset
for help on using the changeset viewer.
