IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 7448 for trunk/psLib/src/types


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/src/types
Files:
2 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.
Note: See TracChangeset for help on using the changeset viewer.