IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Mar 16, 2006, 3:47:44 PM (20 years ago)
Author:
Paul Price
Message:

PHU=NONE (i.e., megacam split) now working, with concept ingest; changed definition of pmFPAAddSource to return a pmFPAview

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/rel10_ifa/psModules/src/astrom/pmConceptsRead.c

    r6582 r6618  
    22
    33#include "pslib.h"
     4#include "psMetadataItemParse.h"
    45
    56#include "pmFPA.h"
     
    1213// File-static functions
    1314//////////////////////////////////////////////////////////////////////////////////////////////////////////////
    14 
    15 
    16 static float parseF32(psMetadataItem *item
    17                      )
    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 double
    24         return (float)item->data.F64;
    25     case PS_DATA_S32:
    26         // Promote to float
    27         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 *item
    36                       )
    37 {
    38     switch (item->type) {
    39     case PS_TYPE_F64:
    40         return item->data.F64;
    41     case PS_TYPE_F32:
    42         // Promote to double
    43         return (double)item->data.F32;
    44     case PS_TYPE_S32:
    45         // Promote to double
    46         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 *item
    55                    )
    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 *item
    76                            )
    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 return
    83             psStringAppend(&value, "%f", item->data.F32);
    84             return value;
    85         }
    86     case PS_DATA_S32: {
    87             psString value = NULL;    // String to return
    88             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 
    9815
    9916// This function gets called for the really boring concepts --- where all you have to do is parse from a
     
    10623    switch (pattern->type) {
    10724    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
    10927            psMetadataItem *item = psMetadataItemAllocStr(pattern->name, pattern->comment, string);
    11028            psFree(string);
     
    11230        }
    11331    case PS_DATA_S32:
    114         return psMetadataItemAllocS32(pattern->name, pattern->comment, parseS32(concept));
     32        return psMetadataItemAllocS32(pattern->name, pattern->comment, psMetadataItemParseS32(concept));
    11533    case PS_DATA_F32:
    116         return psMetadataItemAllocF32(pattern->name, pattern->comment, parseF32(concept));
     34        return psMetadataItemAllocF32(pattern->name, pattern->comment, psMetadataItemParseF32(concept));
    11735    case PS_DATA_F64:
    118         return psMetadataItemAllocF64(pattern->name, pattern->comment, parseF64(concept));
     36        return psMetadataItemAllocF64(pattern->name, pattern->comment, psMetadataItemParseF64(concept));
    11937    default:
    12038        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.