IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 28, 2005, 1:34:10 PM (21 years ago)
Author:
desonia
Message:

Changes to psMetadata to match latest SDRS.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/astronomy/psMetadataIO.c

    r3264 r3341  
    99*  @author Ross Harman, MHPCC
    1010*
    11 *  @version $Revision: 1.20 $ $Name: not supported by cvs2svn $
    12 *  @date $Date: 2005-02-17 19:26:23 $
     11*  @version $Revision: 1.21 $ $Name: not supported by cvs2svn $
     12*  @date $Date: 2005-02-28 23:34:10 $
    1313*
    1414*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    101101/*****************************************************************************/
    102102
    103 static void p_saxEndElement(void *ctx, const xmlChar *tagName);
    104 static void p_psInitVectorXml(void *ctx, char *tagName);
    105 static void p_psInitMetadataItemXml(void *ctx, char *tagName);
    106 static void p_saxStartElement(void *ctx, const xmlChar *tagName, const xmlChar **atts);
     103static void saxEndElement(void *ctx, const xmlChar *tagName);
     104static void initVectorXml(void *ctx, char *tagName);
     105static void initMetadataItemXml(void *ctx, char *tagName);
     106static void saxStartElement(void *ctx, const xmlChar *tagName, const xmlChar **atts);
    107107
    108108/** Determines if a line is blank (whitespace only) or a commentline. It returns true if so. The input string
     
    307307{
    308308    psMetadataType type;
    309     psElemType pType;
    310309    psBool success = true;
    311310
     
    315314
    316315    type = metadataItem->type;
    317     pType = metadataItem->pType;
    318316
    319317    switch(type) {
    320     case PS_META_PRIMITIVE:
    321         switch(pType) {
    322         case PS_TYPE_BOOL:
    323             fprintf(fd, format, metadataItem->data.B);
    324             break;
    325         case PS_TYPE_S32:
    326             fprintf(fd,format, metadataItem->data.S32);
    327             break;
    328         case PS_TYPE_F32:
    329             fprintf(fd, format, metadataItem->data.F32);
    330             break;
    331         case PS_TYPE_F64:
    332             fprintf(fd, format, metadataItem->data.F64);
    333             break;
    334         default:
    335             psError(PS_ERR_BAD_PARAMETER_TYPE,true, PS_ERRORTEXT_psMetadata_METATYPE_INVALID, (int)pType);
    336             success = false;
    337         }
     318    case PS_META_BOOL:
     319        fprintf(fd, format, metadataItem->data.B);
     320        break;
     321    case PS_META_S32:
     322        fprintf(fd,format, metadataItem->data.S32);
     323        break;
     324    case PS_META_F32:
     325        fprintf(fd, format, metadataItem->data.F32);
     326        break;
     327    case PS_META_F64:
     328        fprintf(fd, format, metadataItem->data.F64);
    338329        break;
    339330    case PS_META_STR:
     
    419410        switch (keyType) {
    420411        case 'I':
    421             success = psMetadataAdd(output, PS_LIST_TAIL, keyName, PS_TYPE_S32, PS_META_PRIMITIVE,
     412            success = psMetadataAdd(output, PS_LIST_TAIL, keyName, PS_META_S32,
    422413                                    keyComment, atoi(keyValue));
    423414            break;
    424415        case 'F':
    425             success = psMetadataAdd(output, PS_LIST_TAIL, keyName, PS_TYPE_F64, PS_META_PRIMITIVE,
     416            success = psMetadataAdd(output, PS_LIST_TAIL, keyName, PS_META_F64,
    426417                                    keyComment, atof(keyValue));
    427418            break;
    428419        case 'C':
    429             success = psMetadataAdd(output, PS_LIST_TAIL, keyName, PS_TYPE_PTR, PS_META_STR, keyComment,
    430                                     keyValue);
     420            success = psMetadataAdd(output, PS_LIST_TAIL, keyName, PS_META_STR,
     421                                    keyComment, keyValue);
    431422            break;
    432423        case 'L':
    433424            tempBool = (keyValue[0] == 'T') ? 1 : 0;
    434             success = psMetadataAdd(output, PS_LIST_TAIL, keyName, PS_TYPE_BOOL, PS_META_PRIMITIVE, keyComment,
    435                                     tempBool);
     425            success = psMetadataAdd(output, PS_LIST_TAIL, keyName, PS_META_BOOL,
     426                                    keyComment, tempBool);
    436427            break;
    437428        case 'U':
     
    460451    char *strComment = NULL;
    461452    char *linePtr = NULL;
     453    psElemType vecType = PS_TYPE_PTR;
    462454    psS32 status = 0;
    463455    psU32 lineCount = 0;
     
    467459    psVector *tempVec = NULL;
    468460    FILE *fp = NULL;
    469     psElemType pType;
    470461    psMetadataType mdType;
    471462
     
    535526            } else if(!strncmp(strType, "*", 1)) {
    536527                mdType = PS_META_LIST;
    537                 pType = PS_TYPE_PTR;
    538528            } else if(!strncmp(strType, "STR", 3)) {
    539529                mdType = PS_META_STR;
    540                 pType = PS_TYPE_PTR;
    541             } else if(!strncmp(strType, "BOOL", 3)) {
    542                 mdType = PS_META_PRIMITIVE;
    543                 pType = PS_TYPE_BOOL;
     530            } else if(!strncmp(strType, "BOOL", 4)) {
     531                mdType = PS_META_BOOL;
    544532            } else if(!strncmp(strType, "S32", 3)) {
    545                 mdType = PS_META_PRIMITIVE;
    546                 pType = PS_TYPE_S32;
     533                mdType = PS_META_S32;
    547534            } else if(!strncmp(strType, "F32", 3)) {
    548                 mdType = PS_META_PRIMITIVE;
    549                 pType = PS_TYPE_F32;
     535                mdType = PS_META_F32;
    550536            } else if(!strncmp(strType, "F64", 3)) {
    551                 mdType = PS_META_PRIMITIVE;
    552                 pType = PS_TYPE_F64;
     537                mdType = PS_META_F64;
    553538            } else {
    554539                (*nFail)++;
     
    559544
    560545            if(*strName == '@') {
     546                vecType = PS_META_PRIMITIVE_TYPE(mdType);
    561547                mdType = PS_META_VEC;
    562548            }
     
    604590            switch (mdType) {
    605591            case PS_META_LIST:
    606                 psMetadataAdd(md, PS_LIST_TAIL, strName, pType, mdType, NULL, NULL);
     592                psMetadataAdd(md, PS_LIST_TAIL, strName, mdType, NULL, NULL);
    607593                break;
    608594            case PS_META_STR:
    609                 psMetadataAdd(md, PS_LIST_TAIL, strName, pType, mdType, strComment, strValue);
     595                psMetadataAdd(md, PS_LIST_TAIL, strName, mdType, strComment, strValue);
    610596                break;
    611597            case PS_META_VEC:
    612                 tempVec = parseVector(strValue, pType, &status);
     598                tempVec = parseVector(strValue, vecType, &status);
    613599                if(!status) {
    614                     psMetadataAdd(md, PS_LIST_TAIL, strName+1, pType, mdType, strComment, tempVec);
     600                    psMetadataAdd(md, PS_LIST_TAIL, strName+1, mdType, strComment, tempVec);
     601                } else {
     602                    status = 0;
     603                    (*nFail)++;
     604                    psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_PARSE_FAILED, strValue, strName,
     605                            strType, lineCount, fileName);
     606                    continue;
     607                }
     608                psFree(tempVec);
     609                break;
     610            case PS_META_BOOL:
     611                tempBool = parseBool(strValue, &status);
     612                if(!status) {
     613                    psMetadataAdd(md, PS_LIST_TAIL, strName, mdType, strComment, tempBool);
    615614                } else {
    616615                    status = 0;
     
    621620                }
    622621                break;
    623             case PS_META_PRIMITIVE:
    624                 switch (pType) {
    625                 case PS_TYPE_BOOL:
    626                     tempBool = parseBool(strValue, &status);
    627                     if(!status) {
    628                         psMetadataAdd(md, PS_LIST_TAIL, strName, pType, mdType, strComment, tempBool);
    629                     } else {
    630                         status = 0;
    631                         (*nFail)++;
    632                         psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_PARSE_FAILED, strValue, strName,
    633                                 strType, lineCount, fileName);
    634                         continue;
    635                     }
    636                     break;
    637                 case PS_TYPE_S32:
    638                     tempInt = (psS32)parseValue(strValue, &status);
    639                     if(!status) {
    640                         psMetadataAdd(md, PS_LIST_TAIL, strName, pType, mdType, strComment, tempInt);
    641                     } else {
    642                         status = 0;
    643                         (*nFail)++;
    644                         psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_PARSE_FAILED, strValue, strName,
    645                                 strType, lineCount, fileName);
    646                         continue;
    647                     }
    648                     break;
    649                 case PS_TYPE_F32:
    650                 case PS_TYPE_F64:
    651                     tempDbl = parseValue(strValue, &status);
    652                     if(!status) {
    653                         psMetadataAdd(md, PS_LIST_TAIL, strName, pType, mdType, strComment, tempDbl);
    654                     } else {
    655                         status = 0;
    656                         (*nFail)++;
    657                         psError(PS_ERR_IO, true,
    658                                 PS_ERRORTEXT_psMetadataIO_PARSE_FAILED, strValue, strName, strType, lineCount,
    659                                 fileName);
    660                         continue;
    661                     }
    662                     break;
    663                 default:
     622            case PS_META_S32:
     623                tempInt = (psS32)parseValue(strValue, &status);
     624                if(!status) {
     625                    psMetadataAdd(md, PS_LIST_TAIL, strName, mdType, strComment, tempInt);
     626                } else {
     627                    status = 0;
    664628                    (*nFail)++;
    665                     psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_FILE_TYPE_INVALID, mdType, lineCount,
     629                    psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_PARSE_FAILED, strValue, strName,
     630                            strType, lineCount, fileName);
     631                    continue;
     632                }
     633                break;
     634            case PS_META_F32:
     635            case PS_META_F64:
     636                tempDbl = parseValue(strValue, &status);
     637                if(!status) {
     638                    psMetadataAdd(md, PS_LIST_TAIL, strName, mdType, strComment, tempDbl);
     639                } else {
     640                    status = 0;
     641                    (*nFail)++;
     642                    psError(PS_ERR_IO, true,
     643                            PS_ERRORTEXT_psMetadataIO_PARSE_FAILED, strValue, strName, strType, lineCount,
    666644                            fileName);
    667645                    continue;
    668                 } // switch
     646                }
    669647                break;
    670648            default:
     
    682660}
    683661
    684 static void p_saxStartElement(void *ctx, const xmlChar *tagName, const xmlChar **atts)
     662static void saxStartElement(void *ctx, const xmlChar *tagName, const xmlChar **atts)
    685663{
    686664    psU64 i = 0;
     
    709687    // Metadata containter for housing element attributes used by other SAX events
    710688    htAtts = psHashAlloc(10);
     689
    711690
    712691    // Get tag name
     
    745724
    746725    // Add attributes to metadata
    747     psMetadataAdd(md, PS_LIST_TAIL, "htAtts", PS_TYPE_PTR, PS_META_HASH, NULL, htAtts);
     726
     727    psMetadataAdd(md, PS_LIST_TAIL, "htAtts", PS_META_HASH, NULL, htAtts);
    748728
    749729    psFree(psTagName);
     730    psFree(htAtts);
    750731
    751732    return;
    752733}
    753734
    754 static void p_psInitMetadataItemXml(void *ctx, char *tagName)
     735static void initMetadataItemXml(void *ctx, char *tagName)
    755736{
    756737    psBool overwrite = false;
     
    760741    psF64 tempDbl = 0.0;
    761742    psS32 tempInt = 0.0;
    762     psElemType pType = PS_TYPE_PTR;
    763     psMetadataType mdType = PS_META_PRIMITIVE;
     743    psMetadataType mdType = PS_META_UNKNOWN;
    764744    char *fileName = NULL;
    765745    char *strName = NULL;
     
    802782        if(xmlStrEqual(BAD_CAST strType, BAD_CAST "psString")) {
    803783            mdType = PS_META_STR;
    804             pType = PS_TYPE_PTR;
    805784        } else if(xmlStrEqual(BAD_CAST strType, BAD_CAST "psBool")) {
    806             mdType = PS_META_PRIMITIVE;
    807             pType = PS_TYPE_U8;
     785            mdType = PS_META_BOOL;
    808786        } else if(xmlStrEqual(BAD_CAST strType, BAD_CAST "psS32")) {
    809             mdType = PS_META_PRIMITIVE;
    810             pType = PS_TYPE_S32;
     787            mdType = PS_META_S32;
    811788        } else if(xmlStrEqual(BAD_CAST strType, BAD_CAST "psF32")) {
    812             mdType = PS_META_PRIMITIVE;
    813             pType = PS_TYPE_F32;
     789            mdType = PS_META_F32;
    814790        } else if(xmlStrEqual(BAD_CAST strType, BAD_CAST "psF64")) {
    815             mdType = PS_META_PRIMITIVE;
    816             pType = PS_TYPE_F64;
     791            mdType = PS_META_F64;
    817792        } else {
    818793            psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_TYPE_INVALID_LINE_FILE, strType, lineNumber,
     
    853828    switch(mdType) {
    854829    case PS_META_LIST:
    855         psMetadataAdd(md, PS_LIST_TAIL, strName, pType, mdType, NULL, NULL);
     830        psMetadataAdd(md, PS_LIST_TAIL, strName, mdType, NULL, NULL);
    856831        break;
    857832    case PS_META_STR:
    858         psMetadataAdd(md, PS_LIST_TAIL, strName, pType, mdType, NULL, strValue);
     833        psMetadataAdd(md, PS_LIST_TAIL, strName, mdType, NULL, strValue);
    859834        break;
    860     case PS_META_PRIMITIVE:
    861         switch(pType) {
    862         case PS_TYPE_BOOL:
    863             tempBool = parseBool((char*)strValue, &status);
    864             if(!status) {
    865                 psMetadataAdd(md, PS_LIST_TAIL, strName, pType, mdType, NULL, tempBool);
    866             } else {
    867                 status = 0;
    868                 psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_PARSE_FAILED, strValue, strName, strType,
    869                         lineNumber, fileName);
    870             }
    871             break;
    872         case PS_TYPE_S32:
    873             tempInt = (psS32)parseValue((char*)strValue, &status);
    874             if(!status) {
    875                 psMetadataAdd(md, PS_LIST_TAIL, strName, pType, mdType, NULL, tempInt);
    876             } else {
    877                 status = 0;
    878                 psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_PARSE_FAILED, strValue, strName, strType,
    879                         lineNumber, fileName);
    880             }
    881             break;
    882         case PS_TYPE_F32:
    883         case PS_TYPE_F64:
    884             tempDbl = parseValue((char*)strValue, &status);
    885             if(!status) {
    886                 psMetadataAdd(md, PS_LIST_TAIL, strName, pType, mdType, NULL, tempDbl);
    887             } else {
    888                 status = 0;
    889                 psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_PARSE_FAILED, strValue, strName, strType,
    890                         lineNumber, fileName);
    891             }
    892             break;
    893         default:
    894             psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_FILE_TYPE_INVALID, strType, lineNumber, fileName);
    895         } // End switch
     835    case PS_META_BOOL:
     836        tempBool = parseBool((char*)strValue, &status);
     837        if(!status) {
     838            psMetadataAdd(md, PS_LIST_TAIL, strName, mdType, NULL, tempBool);
     839        } else {
     840            status = 0;
     841            psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_PARSE_FAILED, strValue, strName, strType,
     842                    lineNumber, fileName);
     843        }
     844        break;
     845    case PS_META_S32:
     846        tempInt = (psS32)parseValue((char*)strValue, &status);
     847        if(!status) {
     848            psMetadataAdd(md, PS_LIST_TAIL, strName, mdType, NULL, tempInt);
     849        } else {
     850            status = 0;
     851            psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_PARSE_FAILED, strValue, strName, strType,
     852                    lineNumber, fileName);
     853        }
     854        break;
     855    case PS_META_F32:
     856    case PS_META_F64:
     857        tempDbl = parseValue((char*)strValue, &status);
     858        if(!status) {
     859            psMetadataAdd(md, PS_LIST_TAIL, strName, mdType, NULL, tempDbl);
     860        } else {
     861            status = 0;
     862            psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_PARSE_FAILED, strValue, strName, strType,
     863                    lineNumber, fileName);
     864        }
    896865        break;
    897866    default:
     
    899868    } // End switch
    900869
    901 
    902870    return;
    903871}
    904872
    905873
    906 static void p_psInitVectorXml(void *ctx, char *tagName)
     874static void initVectorXml(void *ctx, char *tagName)
    907875{
    908876    bool overwrite = false;
     
    910878    psU32 lineNumber = 0;
    911879    psElemType pType = PS_TYPE_PTR;
    912     psMetadataType mdType = PS_META_PRIMITIVE;
    913880    char *strName = NULL;
    914881    char *strType = NULL;
     
    952919    strType = psHashLookup(htAtts, "psType");
    953920    if(strType!= NULL) {
    954         if(xmlStrEqual(BAD_CAST strType, BAD_CAST "psString")) {
    955             mdType = PS_META_STR;
    956             pType = PS_TYPE_PTR;
    957         } else if(xmlStrEqual(BAD_CAST strType, BAD_CAST "psBool")) {
    958             mdType = PS_META_PRIMITIVE;
     921        if(xmlStrEqual(BAD_CAST strType, BAD_CAST "psBool")) {
    959922            pType = PS_TYPE_U8;
    960923        } else if(xmlStrEqual(BAD_CAST strType, BAD_CAST "psS32")) {
    961             mdType = PS_META_PRIMITIVE;
    962924            pType = PS_TYPE_S32;
    963925        } else if(xmlStrEqual(BAD_CAST strType, BAD_CAST "psF32")) {
    964             mdType = PS_META_PRIMITIVE;
    965926            pType = PS_TYPE_F32;
    966927        } else if(xmlStrEqual(BAD_CAST strType, BAD_CAST "psF64")) {
    967             mdType = PS_META_PRIMITIVE;
    968928            pType = PS_TYPE_F64;
    969929        } else {
     
    1006966    vec = parseVector((char*)strValue, pType, &status);
    1007967    if(!status) {
    1008         psMetadataAdd(md, PS_LIST_TAIL, strName+1, pType, mdType, NULL, vec);
     968        psMetadataAdd(md, PS_LIST_TAIL, strName+1, PS_META_VEC, NULL, vec);
    1009969    } else {
    1010970        psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_PARSE_FAILED, strValue, strName, strType,
     
    1014974}
    1015975
    1016 static void p_saxEndElement(void *ctx, const xmlChar *tagName)
     976static void saxEndElement(void *ctx, const xmlChar *tagName)
    1017977{
    1018978    char *psStartTagName = NULL;
     
    10521012    // Initialize psLib structs
    10531013    if(!strcmp(psEndTagName, "psMetadataItem")) {
    1054         p_psInitMetadataItemXml(ctx, psEndTagName);
     1014        initMetadataItemXml(ctx, psEndTagName);
    10551015    } else if(!strcmp(psEndTagName, "psVector")) {
    1056         p_psInitVectorXml(ctx, psEndTagName);
     1016        initVectorXml(ctx, psEndTagName);
    10571017    } else if(strcmp(psEndTagName, "psRoot")) {
    10581018        psError(PS_ERR_IO, true, PS_ERRORTEXT_psMetadataIO_TAG_UNKNOWN, psEndTagName);
     
    10951055    saxHandler.startDocument            = NULL;
    10961056    saxHandler.endDocument              = NULL;
    1097     saxHandler.startElement             = p_saxStartElement;
    1098     saxHandler.endElement               = p_saxEndElement;
     1057    saxHandler.startElement             = saxStartElement;
     1058    saxHandler.endElement               = saxEndElement;
    10991059    saxHandler.reference                = NULL;
    11001060    saxHandler.characters               = NULL;
Note: See TracChangeset for help on using the changeset viewer.