IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 3441


Ignore:
Timestamp:
Mar 17, 2005, 9:01:01 AM (21 years ago)
Author:
desonia
Message:

fixed psMetadataItemPrint to cast numeric values to specified format.

Location:
trunk/psLib/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/astronomy/psAstronomyErrors.dat

    r3381 r3441  
    3737#
    3838psMetadata_METATYPE_INVALID            Specified psMetadataType, %d, is not supported.
     39psMetadata_FORMAT_INVALID              Specified print format, %%%c, is not supported.
    3940psMetadata_METATYPE_MISMATCH           Specified psMetadataType, %d, is incorrect. Expected %d.
    4041psMetadata_ADD_LIST_FAILED             Failed to add metadata item, %s, to items list.
  • trunk/psLib/src/astronomy/psAstronomyErrors.h

    r3381 r3441  
    77 *  @author Robert DeSonia, MHPCC
    88 *
    9  *  @version $Revision: 1.13 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2005-03-07 20:58:50 $
     9 *  @version $Revision: 1.14 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2005-03-17 19:01:01 $
    1111 *
    1212 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    5555#define PS_ERRORTEXT_psAstrometry_NONLINEAR_TRANSFORM "The %s transfrom is not linear.  Only linear transforms are supported."
    5656#define PS_ERRORTEXT_psMetadata_METATYPE_INVALID "Specified psMetadataType, %d, is not supported."
     57#define PS_ERRORTEXT_psMetadata_FORMAT_INVALID "Specified print format, %%%c, is not supported."
    5758#define PS_ERRORTEXT_psMetadata_METATYPE_MISMATCH "Specified psMetadataType, %d, is incorrect. Expected %d."
    5859#define PS_ERRORTEXT_psMetadata_ADD_LIST_FAILED "Failed to add metadata item, %s, to items list."
  • trunk/psLib/src/astronomy/psMetadataIO.c

    r3381 r3441  
    99*  @author Ross Harman, MHPCC
    1010*
    11 *  @version $Revision: 1.22 $ $Name: not supported by cvs2svn $
    12 *  @date $Date: 2005-03-07 20:58:50 $
     11*  @version $Revision: 1.23 $ $Name: not supported by cvs2svn $
     12*  @date $Date: 2005-03-17 19:01:01 $
    1313*
    1414*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    315315    type = metadataItem->type;
    316316
    317     switch(type) {
    318     case PS_META_BOOL:
    319         fprintf(fd, format, metadataItem->data.B);
     317    // determining the format type
     318    char* fType = strchr(format,'%');
     319    if (fType == NULL) {
     320        // well, the format contains no reference to the metadataItem's data:
     321        // that is truly trival to do!
     322        fprintf(fd,format);
     323        return success;
     324    }
     325
     326    // skip over any format modifiers
     327    const char* formatEnd = format+strlen(format);
     328    while ( (fType < formatEnd) &&
     329        (strchr(" +-01234567890.$#, hlL",*(++fType)) != NULL) ) {}
     330
     331    #define METADATAITEM_NUMERIC_CAST(FORMAT_TYPE) { \
     332        switch(type) { \
     333        case PS_META_BOOL: \
     334            fprintf(fd, format, (FORMAT_TYPE) metadataItem->data.B); \
     335            break; \
     336        case PS_META_S32: \
     337            fprintf(fd,format,(FORMAT_TYPE)  metadataItem->data.S32); \
     338            break; \
     339        case PS_META_F32: \
     340            fprintf(fd, format,(FORMAT_TYPE)  metadataItem->data.F32); \
     341            break; \
     342        case PS_META_F64: \
     343            fprintf(fd, format,(FORMAT_TYPE) metadataItem->data.F64); \
     344            break; \
     345        default: \
     346            psError(PS_ERR_BAD_PARAMETER_TYPE,true, \
     347                    PS_ERRORTEXT_psMetadata_METATYPE_INVALID, (int)type); \
     348            success = false; \
     349        } \
     350    }
     351
     352    switch(*fType) {
     353    case 'd':
     354    case 'i':
     355    case 'c':
     356        METADATAITEM_NUMERIC_CAST(int)
    320357        break;
    321     case PS_META_S32:
    322         fprintf(fd,format, metadataItem->data.S32);
     358    case 'o':
     359    case 'u':
     360    case 'x':
     361    case 'X':
     362        METADATAITEM_NUMERIC_CAST(unsigned int)
    323363        break;
    324     case PS_META_F32:
    325         fprintf(fd, format, metadataItem->data.F32);
     364    case 'e':
     365    case 'E':
     366    case 'f':
     367    case 'F':
     368    case 'g':
     369    case 'G':
     370    case 'a':
     371    case 'A':
     372        METADATAITEM_NUMERIC_CAST(double)
    326373        break;
    327     case PS_META_F64:
    328         fprintf(fd, format, metadataItem->data.F64);
     374    case 's':
     375        if (type == PS_META_STR) {
     376            fprintf(fd,format,(char*)metadataItem->data.V);
     377        } else {
     378            psError(PS_ERR_BAD_PARAMETER_TYPE,true,
     379                    PS_ERRORTEXT_psMetadata_METATYPE_INVALID, (int)type);
     380            success = false;
     381        }
    329382        break;
    330     case PS_META_STR:
    331         fprintf(fd,format, (char*)metadataItem->data.V);
     383    case 'p':
     384        fprintf(fd,format,metadataItem->data.V);
    332385        break;
    333386    default:
    334         psError(PS_ERR_BAD_PARAMETER_TYPE,true, PS_ERRORTEXT_psMetadata_METATYPE_INVALID, (int)type);
    335         success = false;
     387        psError(PS_ERR_BAD_PARAMETER_TYPE, true,
     388                PS_ERRORTEXT_psMetadata_FORMAT_INVALID, *fType);
     389        break;
    336390    }
    337391
  • trunk/psLib/src/collections/psMetadataIO.c

    r3381 r3441  
    99*  @author Ross Harman, MHPCC
    1010*
    11 *  @version $Revision: 1.22 $ $Name: not supported by cvs2svn $
    12 *  @date $Date: 2005-03-07 20:58:50 $
     11*  @version $Revision: 1.23 $ $Name: not supported by cvs2svn $
     12*  @date $Date: 2005-03-17 19:01:01 $
    1313*
    1414*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    315315    type = metadataItem->type;
    316316
    317     switch(type) {
    318     case PS_META_BOOL:
    319         fprintf(fd, format, metadataItem->data.B);
     317    // determining the format type
     318    char* fType = strchr(format,'%');
     319    if (fType == NULL) {
     320        // well, the format contains no reference to the metadataItem's data:
     321        // that is truly trival to do!
     322        fprintf(fd,format);
     323        return success;
     324    }
     325
     326    // skip over any format modifiers
     327    const char* formatEnd = format+strlen(format);
     328    while ( (fType < formatEnd) &&
     329        (strchr(" +-01234567890.$#, hlL",*(++fType)) != NULL) ) {}
     330
     331    #define METADATAITEM_NUMERIC_CAST(FORMAT_TYPE) { \
     332        switch(type) { \
     333        case PS_META_BOOL: \
     334            fprintf(fd, format, (FORMAT_TYPE) metadataItem->data.B); \
     335            break; \
     336        case PS_META_S32: \
     337            fprintf(fd,format,(FORMAT_TYPE)  metadataItem->data.S32); \
     338            break; \
     339        case PS_META_F32: \
     340            fprintf(fd, format,(FORMAT_TYPE)  metadataItem->data.F32); \
     341            break; \
     342        case PS_META_F64: \
     343            fprintf(fd, format,(FORMAT_TYPE) metadataItem->data.F64); \
     344            break; \
     345        default: \
     346            psError(PS_ERR_BAD_PARAMETER_TYPE,true, \
     347                    PS_ERRORTEXT_psMetadata_METATYPE_INVALID, (int)type); \
     348            success = false; \
     349        } \
     350    }
     351
     352    switch(*fType) {
     353    case 'd':
     354    case 'i':
     355    case 'c':
     356        METADATAITEM_NUMERIC_CAST(int)
    320357        break;
    321     case PS_META_S32:
    322         fprintf(fd,format, metadataItem->data.S32);
     358    case 'o':
     359    case 'u':
     360    case 'x':
     361    case 'X':
     362        METADATAITEM_NUMERIC_CAST(unsigned int)
    323363        break;
    324     case PS_META_F32:
    325         fprintf(fd, format, metadataItem->data.F32);
     364    case 'e':
     365    case 'E':
     366    case 'f':
     367    case 'F':
     368    case 'g':
     369    case 'G':
     370    case 'a':
     371    case 'A':
     372        METADATAITEM_NUMERIC_CAST(double)
    326373        break;
    327     case PS_META_F64:
    328         fprintf(fd, format, metadataItem->data.F64);
     374    case 's':
     375        if (type == PS_META_STR) {
     376            fprintf(fd,format,(char*)metadataItem->data.V);
     377        } else {
     378            psError(PS_ERR_BAD_PARAMETER_TYPE,true,
     379                    PS_ERRORTEXT_psMetadata_METATYPE_INVALID, (int)type);
     380            success = false;
     381        }
    329382        break;
    330     case PS_META_STR:
    331         fprintf(fd,format, (char*)metadataItem->data.V);
     383    case 'p':
     384        fprintf(fd,format,metadataItem->data.V);
    332385        break;
    333386    default:
    334         psError(PS_ERR_BAD_PARAMETER_TYPE,true, PS_ERRORTEXT_psMetadata_METATYPE_INVALID, (int)type);
    335         success = false;
     387        psError(PS_ERR_BAD_PARAMETER_TYPE, true,
     388                PS_ERRORTEXT_psMetadata_FORMAT_INVALID, *fType);
     389        break;
    336390    }
    337391
  • trunk/psLib/src/types/psMetadataConfig.c

    r3381 r3441  
    99*  @author Ross Harman, MHPCC
    1010*
    11 *  @version $Revision: 1.22 $ $Name: not supported by cvs2svn $
    12 *  @date $Date: 2005-03-07 20:58:50 $
     11*  @version $Revision: 1.23 $ $Name: not supported by cvs2svn $
     12*  @date $Date: 2005-03-17 19:01:01 $
    1313*
    1414*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    315315    type = metadataItem->type;
    316316
    317     switch(type) {
    318     case PS_META_BOOL:
    319         fprintf(fd, format, metadataItem->data.B);
     317    // determining the format type
     318    char* fType = strchr(format,'%');
     319    if (fType == NULL) {
     320        // well, the format contains no reference to the metadataItem's data:
     321        // that is truly trival to do!
     322        fprintf(fd,format);
     323        return success;
     324    }
     325
     326    // skip over any format modifiers
     327    const char* formatEnd = format+strlen(format);
     328    while ( (fType < formatEnd) &&
     329        (strchr(" +-01234567890.$#, hlL",*(++fType)) != NULL) ) {}
     330
     331    #define METADATAITEM_NUMERIC_CAST(FORMAT_TYPE) { \
     332        switch(type) { \
     333        case PS_META_BOOL: \
     334            fprintf(fd, format, (FORMAT_TYPE) metadataItem->data.B); \
     335            break; \
     336        case PS_META_S32: \
     337            fprintf(fd,format,(FORMAT_TYPE)  metadataItem->data.S32); \
     338            break; \
     339        case PS_META_F32: \
     340            fprintf(fd, format,(FORMAT_TYPE)  metadataItem->data.F32); \
     341            break; \
     342        case PS_META_F64: \
     343            fprintf(fd, format,(FORMAT_TYPE) metadataItem->data.F64); \
     344            break; \
     345        default: \
     346            psError(PS_ERR_BAD_PARAMETER_TYPE,true, \
     347                    PS_ERRORTEXT_psMetadata_METATYPE_INVALID, (int)type); \
     348            success = false; \
     349        } \
     350    }
     351
     352    switch(*fType) {
     353    case 'd':
     354    case 'i':
     355    case 'c':
     356        METADATAITEM_NUMERIC_CAST(int)
    320357        break;
    321     case PS_META_S32:
    322         fprintf(fd,format, metadataItem->data.S32);
     358    case 'o':
     359    case 'u':
     360    case 'x':
     361    case 'X':
     362        METADATAITEM_NUMERIC_CAST(unsigned int)
    323363        break;
    324     case PS_META_F32:
    325         fprintf(fd, format, metadataItem->data.F32);
     364    case 'e':
     365    case 'E':
     366    case 'f':
     367    case 'F':
     368    case 'g':
     369    case 'G':
     370    case 'a':
     371    case 'A':
     372        METADATAITEM_NUMERIC_CAST(double)
    326373        break;
    327     case PS_META_F64:
    328         fprintf(fd, format, metadataItem->data.F64);
     374    case 's':
     375        if (type == PS_META_STR) {
     376            fprintf(fd,format,(char*)metadataItem->data.V);
     377        } else {
     378            psError(PS_ERR_BAD_PARAMETER_TYPE,true,
     379                    PS_ERRORTEXT_psMetadata_METATYPE_INVALID, (int)type);
     380            success = false;
     381        }
    329382        break;
    330     case PS_META_STR:
    331         fprintf(fd,format, (char*)metadataItem->data.V);
     383    case 'p':
     384        fprintf(fd,format,metadataItem->data.V);
    332385        break;
    333386    default:
    334         psError(PS_ERR_BAD_PARAMETER_TYPE,true, PS_ERRORTEXT_psMetadata_METATYPE_INVALID, (int)type);
    335         success = false;
     387        psError(PS_ERR_BAD_PARAMETER_TYPE, true,
     388                PS_ERRORTEXT_psMetadata_FORMAT_INVALID, *fType);
     389        break;
    336390    }
    337391
  • trunk/psLib/src/xml/psXML.c

    r3381 r3441  
    99*  @author Ross Harman, MHPCC
    1010*
    11 *  @version $Revision: 1.22 $ $Name: not supported by cvs2svn $
    12 *  @date $Date: 2005-03-07 20:58:50 $
     11*  @version $Revision: 1.23 $ $Name: not supported by cvs2svn $
     12*  @date $Date: 2005-03-17 19:01:01 $
    1313*
    1414*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    315315    type = metadataItem->type;
    316316
    317     switch(type) {
    318     case PS_META_BOOL:
    319         fprintf(fd, format, metadataItem->data.B);
     317    // determining the format type
     318    char* fType = strchr(format,'%');
     319    if (fType == NULL) {
     320        // well, the format contains no reference to the metadataItem's data:
     321        // that is truly trival to do!
     322        fprintf(fd,format);
     323        return success;
     324    }
     325
     326    // skip over any format modifiers
     327    const char* formatEnd = format+strlen(format);
     328    while ( (fType < formatEnd) &&
     329        (strchr(" +-01234567890.$#, hlL",*(++fType)) != NULL) ) {}
     330
     331    #define METADATAITEM_NUMERIC_CAST(FORMAT_TYPE) { \
     332        switch(type) { \
     333        case PS_META_BOOL: \
     334            fprintf(fd, format, (FORMAT_TYPE) metadataItem->data.B); \
     335            break; \
     336        case PS_META_S32: \
     337            fprintf(fd,format,(FORMAT_TYPE)  metadataItem->data.S32); \
     338            break; \
     339        case PS_META_F32: \
     340            fprintf(fd, format,(FORMAT_TYPE)  metadataItem->data.F32); \
     341            break; \
     342        case PS_META_F64: \
     343            fprintf(fd, format,(FORMAT_TYPE) metadataItem->data.F64); \
     344            break; \
     345        default: \
     346            psError(PS_ERR_BAD_PARAMETER_TYPE,true, \
     347                    PS_ERRORTEXT_psMetadata_METATYPE_INVALID, (int)type); \
     348            success = false; \
     349        } \
     350    }
     351
     352    switch(*fType) {
     353    case 'd':
     354    case 'i':
     355    case 'c':
     356        METADATAITEM_NUMERIC_CAST(int)
    320357        break;
    321     case PS_META_S32:
    322         fprintf(fd,format, metadataItem->data.S32);
     358    case 'o':
     359    case 'u':
     360    case 'x':
     361    case 'X':
     362        METADATAITEM_NUMERIC_CAST(unsigned int)
    323363        break;
    324     case PS_META_F32:
    325         fprintf(fd, format, metadataItem->data.F32);
     364    case 'e':
     365    case 'E':
     366    case 'f':
     367    case 'F':
     368    case 'g':
     369    case 'G':
     370    case 'a':
     371    case 'A':
     372        METADATAITEM_NUMERIC_CAST(double)
    326373        break;
    327     case PS_META_F64:
    328         fprintf(fd, format, metadataItem->data.F64);
     374    case 's':
     375        if (type == PS_META_STR) {
     376            fprintf(fd,format,(char*)metadataItem->data.V);
     377        } else {
     378            psError(PS_ERR_BAD_PARAMETER_TYPE,true,
     379                    PS_ERRORTEXT_psMetadata_METATYPE_INVALID, (int)type);
     380            success = false;
     381        }
    329382        break;
    330     case PS_META_STR:
    331         fprintf(fd,format, (char*)metadataItem->data.V);
     383    case 'p':
     384        fprintf(fd,format,metadataItem->data.V);
    332385        break;
    333386    default:
    334         psError(PS_ERR_BAD_PARAMETER_TYPE,true, PS_ERRORTEXT_psMetadata_METATYPE_INVALID, (int)type);
    335         success = false;
     387        psError(PS_ERR_BAD_PARAMETER_TYPE, true,
     388                PS_ERRORTEXT_psMetadata_FORMAT_INVALID, *fType);
     389        break;
    336390    }
    337391
Note: See TracChangeset for help on using the changeset viewer.