IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 7448


Ignore:
Timestamp:
Jun 8, 2006, 3:25:42 PM (20 years ago)
Author:
drobbin
Message:

Added psMetadataPrint to tst_01 (moved from 07) and expanded test. Added type support to code for printing vectors. Also added FILE* argument to psMetadataPrint per SDRS.

Location:
trunk/psLib
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/types/psMetadata.c

    r7380 r7448  
    1212 *  @author Ross Harman, MHPCC
    1313 *
    14  *  @version $Revision: 1.108 $ $Name: not supported by cvs2svn $
    15  *  @date $Date: 2006-06-07 03:22:06 $
     14 *  @version $Revision: 1.109 $ $Name: not supported by cvs2svn $
     15 *  @date $Date: 2006-06-09 01:25:42 $
    1616 *
    1717 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    2121/*  INCLUDE FILES                                                             */
    2222/******************************************************************************/
    23 #include<stdio.h>
    24 #include<stdarg.h>
    25 #include<string.h>
     23#include <stdio.h>
     24#include <stdarg.h>
     25#include <string.h>
    2626
    2727#include "fitsio.h"
     
    10961096
    10971097
    1098 void psMetadataPrint(psMetadata *md,
     1098void psMetadataPrint(FILE *fd,
     1099                     psMetadata *md,
    10991100                     int level)
    11001101{
    11011102    PS_ASSERT_PTR_NON_NULL(md,);
     1103    if (fd == NULL) {
     1104        fd = stdout;
     1105    } else {
     1106        if ( fprintf(fd, "\n") < 0 ) {
     1107            psError(PS_ERR_IO, true,
     1108                    "Invalid file pointer in psMetadataPrint.  Could not write to fd.\n");
     1109            return;
     1110        }
     1111    }
    11021112    psMetadataIterator *iter = psMetadataIteratorAlloc(md, PS_LIST_HEAD, NULL); // Iterator
    11031113    psMetadataItem *item = NULL; // Item from metadata
     
    11051115        // Indent...
    11061116        for (int i = 0; i < level; i++) {
    1107             printf(" ");
    1108         }
    1109         printf("%s", item->name);
     1117            fprintf(fd, " ");
     1118        }
     1119        fprintf(fd, "%s", item->name);
    11101120        if (item->comment && strlen(item->comment) > 0) {
    1111             printf(" (%s)", item->comment);
    1112         }
    1113         printf(": ");
     1121            fprintf(fd, " (%s)", item->comment);
     1122        }
     1123        fprintf(fd, ": ");
    11141124        switch (item->type) {
    11151125        case PS_DATA_STRING:
    1116             printf("%s", (char*)(item->data.V));
     1126            fprintf(fd, "%s", (char*)(item->data.V));
    11171127            break;
    11181128        case PS_DATA_BOOL:
    11191129            if (item->data.B) {
    1120                 printf("True");
     1130                fprintf(fd, "True");
    11211131            } else {
    1122                 printf("False");
     1132                fprintf(fd, "False");
    11231133            }
    11241134            break;
    11251135        case PS_DATA_S8:
    1126             printf("%d", item->data.S8);
     1136            fprintf(fd, "%d", item->data.S8);
    11271137            break;
    11281138        case PS_DATA_S16:
    1129             printf("%d", item->data.S16);
     1139            fprintf(fd, "%d", item->data.S16);
    11301140            break;
    11311141        case PS_DATA_S32:
    1132             printf("%d", item->data.S32);
     1142            fprintf(fd, "%d", item->data.S32);
    11331143            break;
    11341144        case PS_DATA_U8:
    1135             printf("%u", item->data.U8);
     1145            fprintf(fd, "%u", item->data.U8);
    11361146            break;
    11371147        case PS_DATA_U16:
    1138             printf("%u", item->data.U16);
     1148            fprintf(fd, "%u", item->data.U16);
    11391149            break;
    11401150        case PS_DATA_U32:
    1141             printf("%u", item->data.U32);
     1151            fprintf(fd, "%u", item->data.U32);
    11421152            break;
    11431153        case PS_DATA_F32:
    1144             printf("%f", item->data.F32);
     1154            fprintf(fd, "%f", item->data.F32);
    11451155            break;
    11461156        case PS_DATA_F64:
    1147             printf("%f", item->data.F64);
     1157            fprintf(fd, "%f", item->data.F64);
    11481158            break;
    11491159        case PS_DATA_METADATA:
    1150             printf("\n");
    1151             psMetadataPrint(item->data.V, level + 1);
     1160            //            fprintf(fd, "\n");
     1161            psMetadataPrint(fd, item->data.V, level + 1);
     1162            for (int i = 0; i < level; i++) {
     1163                fprintf(fd, "  ");
     1164            }
     1165            fprintf(fd, "%s  -- END\n", item->name);
    11521166            break;
    11531167        case PS_DATA_REGION: {
    11541168                psString region = psRegionToString(*(psRegion*)item->data.V);
    1155                 printf("%s", region);
     1169                fprintf(fd, "%s", region);
    11561170                psFree(region);
    11571171                break;
    11581172            }
    11591173        case PS_DATA_LIST:
    1160             printf("<a list of unknown contents>");
     1174            fprintf(fd, "<a list of unknown contents>");
    11611175            break;
    11621176        case PS_DATA_TIME: {
    11631177                psString time = psTimeToISO(item->data.V);
    1164                 printf("%s", time);
     1178                fprintf(fd, "%s", time);
    11651179                psFree(time);
    11661180                break;
    11671181            }
     1182        case PS_DATA_VECTOR: {
     1183                psVector *vector = item->data.V;
     1184                switch (vector->type.type) {
     1185                case PS_DATA_U8:
     1186                    fprintf(fd, "U8  ");
     1187                    for (int i = 0; i < vector->n; i++) {
     1188                        fprintf(fd, "%u ", vector->data.U8[i]);
     1189                    }
     1190                    break;
     1191                case PS_DATA_U16:
     1192                    fprintf(fd, "U16  ");
     1193                    for (int i = 0; i < vector->n; i++) {
     1194                        fprintf(fd, "%u ", vector->data.U16[i]);
     1195                    }
     1196                    break;
     1197                case PS_DATA_U32:
     1198                    fprintf(fd, "U32  ");
     1199                    for (int i = 0; i < vector->n; i++) {
     1200                        fprintf(fd, "%u ", vector->data.U32[i]);
     1201                    }
     1202                    break;
     1203                    /*            case PS_DATA_U64:
     1204                                    fprintf(fd, "U64  ");
     1205                                    for (int i = 0; i < vector->n; i++) {
     1206                                        fprintf(fd, "%u ", vector->data.U64[i]);
     1207                                    }
     1208                                    break;
     1209                    */
     1210                case PS_DATA_S8:
     1211                    fprintf(fd, "S8  ");
     1212                    for (int i = 0; i < vector->n; i++) {
     1213                        fprintf(fd, "%d ", vector->data.S8[i]);
     1214                    }
     1215                    break;
     1216                case PS_DATA_S16:
     1217                    fprintf(fd, "S16  ");
     1218                    for (int i = 0; i < vector->n; i++) {
     1219                        fprintf(fd, "%d ", vector->data.S16[i]);
     1220                    }
     1221                    break;
     1222                case PS_DATA_S32:
     1223                    fprintf(fd, "S32  ");
     1224                    for (int i = 0; i < vector->n; i++) {
     1225                        fprintf(fd, "%d ", vector->data.S32[i]);
     1226                    }
     1227                    break;
     1228                    /*            case PS_DATA_S64:
     1229                                    fprintf(fd, "S64  ");
     1230                                    for (int i = 0; i < vector->n; i++) {
     1231                                        fprintf(fd, "%ld ", vector->data.S64[i]);
     1232                                    }
     1233                                    break;
     1234                    */
     1235                case PS_DATA_F32:
     1236                    fprintf(fd, "F32 ");
     1237                    for (int i = 0; i < vector->n; i++) {
     1238                        fprintf(fd, "%f ", vector->data.F32[i]);
     1239                    }
     1240                    break;
     1241                case PS_DATA_F64:
     1242                    fprintf(fd, "F64 ");
     1243                    for (int i = 0; i < vector->n; i++) {
     1244                        fprintf(fd, "%f ", vector->data.F64[i]);
     1245                    }
     1246                    break;
     1247                case PS_DATA_UNKNOWN:
     1248                default:
     1249                    psError(PS_ERR_BAD_PARAMETER_VALUE, true,
     1250                            PS_ERRORTEXT_psMetadata_METATYPE_INVALID, vector->type.type);
     1251                    return;
     1252                }
     1253                break;
     1254            }
    11681255        default:
    1169             printf("\n");
     1256            fprintf(fd, "\n");
    11701257            psError(PS_ERR_IO, false, "Non-printable metadata type: %x\n", item->type);
    11711258        }
    1172         printf("\n");
     1259        fprintf(fd, "\n");
    11731260    }
    11741261    psFree(iter);
  • trunk/psLib/src/types/psMetadata.h

    r7380 r7448  
    1111*  @author Ross Harman, MHPCC
    1212*
    13 *  @version $Revision: 1.77 $ $Name: not supported by cvs2svn $
    14 *  @date $Date: 2006-06-07 03:22:06 $
     13*  @version $Revision: 1.78 $ $Name: not supported by cvs2svn $
     14*  @date $Date: 2006-06-09 01:25:42 $
    1515*
    1616*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    947947);
    948948
    949 /** Print metadata collection to screen      */
     949/** Prints metadata collection.
     950 *
     951 *  Metadata contents are printed to a valid file descriptor if one exists.  Otherwise,
     952 *  fd should be NULL and the contents are printed to the screen (stdout).
     953*/
    950954void psMetadataPrint(
     955    FILE *fd,                          ///< File Descriptor or NULL
    951956    psMetadata *md,                    ///< Metadata collection to print.
    952957    int level                          ///< the level of metadata items.
  • trunk/psLib/test/types/tst_psArguments.c

    r7202 r7448  
    55*  @author  David Robbins, MHPCC
    66*
    7 *  @version $Revision: 1.2 $  $Name: not supported by cvs2svn $
    8 *  @date  $Date: 2006-05-25 03:51:51 $
     7*  @version $Revision: 1.3 $  $Name: not supported by cvs2svn $
     8*  @date  $Date: 2006-06-09 01:25:42 $
    99*
    1010*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    7474    }
    7575
    76     psMetadataPrint(args, 4);
     76    psMetadataPrint(NULL, args, 4);
    7777
    7878    psFree(args);
  • trunk/psLib/test/types/tst_psMetadata_01.c

    r7377 r7448  
    55*  @author  dRob, MHPCC
    66*
    7 *  @version $Revision: 1.6 $  $Name: not supported by cvs2svn $
    8 *  @date  $Date: 2006-06-07 01:39:17 $
     7*  @version $Revision: 1.7 $  $Name: not supported by cvs2svn $
     8*  @date  $Date: 2006-06-09 01:25:42 $
    99*
    1010*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    3131    return ( !runTestSuite(stderr,"psMetadata_01",tests,argc,argv) );
    3232
    33 }
    34 
    35 static psMetadata *setupMeta(void)
    36 {
    37     psMetadata *md = NULL;
    38     md = psMetadataAlloc();
    39 
    40     psMetadataAddBool(md, PS_LIST_TAIL, "item1", 0, "I am a boolean", true);
    41     psMetadataAddS32(md, PS_LIST_TAIL, "item2", 0, "I am a integer", 55);
    42     psMetadataAddF32(md, PS_LIST_TAIL, "item3", 0, "I am a float", 3.14);
    43     psMetadataAddF64(md, PS_LIST_TAIL, "item4", 0, "I am a double", 6.28);
    44     psMetadataAddStr(md, PS_LIST_TAIL, "item5", 0, "I am a string", "GNIRTS");
    45 
    46     return md;
    4733}
    4834
     
    11096}
    11197
     98static psMetadata *setupMeta2(void)
     99{
     100    psMetadata *md = NULL;
     101    psVector *vec = NULL;
     102    psMetadata *newMD = NULL;
     103    psTime *time;
     104    int i = 0;
     105    md = psMetadataAlloc();
     106    newMD = psMetadataAlloc();
     107    vec = psVectorAlloc(60, PS_DATA_S32);
     108    time = psTimeAlloc(PS_TIME_TAI);
     109    for (i = 0; i < 5; i++) {
     110        vec->data.S32[i] = i+1;
     111    }
     112    vec->n = 5;
     113    time->sec = 1000;
     114    time->nsec = 25;
     115    time->leapsecond = true;
     116    psMetadataAddBool(md, PS_LIST_TAIL, "item1", 0, "I am a boolean", true);
     117    psMetadataAddS32(md, PS_LIST_TAIL, "item2", 0, "I am a integer", 55);
     118    psMetadataAddF32(md, PS_LIST_TAIL, "item3", 0, NULL, 3.14);
     119    psMetadataAddF64(md, PS_LIST_TAIL, "item4", 0, "", 6.28);
     120    psMetadataAddStr(md, PS_LIST_TAIL, "item5", 0, "I am a string", "GNIRTS");
     121    psMetadataAddVector(md, PS_LIST_TAIL, "vector6", 0, "I am a vector", vec);
     122    psMetadataAddTime(md, PS_LIST_TAIL, "time01", 0, "I am time", time);
     123    psMetadataAddS8(md, PS_LIST_TAIL, "item6", 0, "I am S8", 6);
     124    psMetadataAddS16(md, PS_LIST_TAIL, "item7", 0, "I am S16", -666);
     125    psMetadataAddU8(md, PS_LIST_TAIL, "item8", 0, "I am U8", 6);
     126    psMetadataAddU16(md, PS_LIST_TAIL, "item9", 0, "I am U16", 666);
     127    psMetadataAddU32(md, PS_LIST_TAIL, "item10", 0, "I am U32", 666);
     128
     129    psMetadataAddS32(newMD, PS_LIST_TAIL, "ITEM01", 0, NULL, 666);
     130    psMetadata *newestMD = NULL;
     131    newestMD = psMetadataAlloc();
     132    psMetadataAddVector(newestMD, PS_LIST_TAIL, "VECTORNEW", 0, "Newest VECTOR", vec);
     133    psMetadataAddStr(newestMD, PS_LIST_TAIL, "cell", 0, "I am a p-Star", "pStArRs");
     134    psMetadataAddMetadata(newMD, PS_LIST_TAIL, "META NEW", 0, "I AM Newest METADATA", newestMD);
     135    psMetadataAddF32(newMD, PS_LIST_TAIL, "ITEM02", 0, "I AM FLOAT", 666.6);
     136    psMetadataAddF64(newMD, PS_LIST_TAIL, "ITEM03", 0, "I AM DOUBLE", 666.666);
     137
     138    psMetadataAddMetadata(md, PS_LIST_TAIL, "metadata7", 0, "I am a metadata", newMD);
     139    psFree(time);
     140    psFree(newestMD);
     141    psFree(vec);
     142    psFree(newMD);
     143    return md;
     144}
     145
    112146psS32 testMetadataPrint(void)
    113147{
    114148    psMetadata *meta = NULL;
    115     meta = setupMeta();
    116     psMetadataPrint(meta, 0);
     149    meta = setupMeta2();
     150    psMetadataPrint(NULL, meta, 0);
    117151    psFree(meta);
    118152    return 0;
  • trunk/psLib/test/types/verified/tst_psArguments.stdout

    r7223 r7448  
    1010    -int       (1)               Int1
    1111               (2)               Int2
    12     -string (Test String): new
    13     -float (Test Float): 0.000000
    14     -int (Integers):
    15      int1 (Int1): 1
    16      int2 (Int2): 2
     12        -string (Test String): new
     13        -float (Test Float): 0.000000
     14        -int (Integers):
     15          int1 (Int1): 1
     16          int2 (Int2): 2
     17        -int  -- END
    1718
  • trunk/psLib/test/types/verified/tst_psMetadata_01.stdout

    r7377 r7448  
    11item1 (I am a boolean): True
    22item2 (I am a integer): 55
    3 item3 (I am a float): 3.140000
    4 item4 (I am a double): 6.280000
     3item3: 3.140000
     4item4: 6.280000
    55item5 (I am a string): GNIRTS
     6vector6 (I am a vector): S32  1 2 3 4 5
     7time01 (I am time): 1970-01-01T<DATE>.0Z
     8item6 (I am S8): 6
     9item7 (I am S16): -666
     10item8 (I am U8): 6
     11item9 (I am U16): 666
     12item10 (I am U32): 666
     13metadata7 (I am a metadata):
     14  ITEM01: 666
     15  META NEW (I AM Newest METADATA):
     16    VECTORNEW (Newest VECTOR): S32  1 2 3 4 5
     17    cell (I am a p-Star): pStArRs
     18  META NEW  -- END
     19
     20  ITEM02 (I AM FLOAT): 666.599976
     21  ITEM03 (I AM DOUBLE): 666.666000
     22metadata7  -- END
     23
Note: See TracChangeset for help on using the changeset viewer.