IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 6354


Ignore:
Timestamp:
Feb 7, 2006, 3:03:35 PM (20 years ago)
Author:
desonia
Message:

fixed a leak in psFits table reading and cleaned up things according to
the API Delta report.

-rdd
`

Location:
trunk/psLib
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/fits/psFits.c

    r5511 r6354  
    77 *  @author Robert DeSonia, MHPCC
    88 *
    9  *  @version $Revision: 1.51 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2005-11-14 22:18:30 $
     9 *  @version $Revision: 1.52 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2006-02-08 01:03:34 $
    1111 *
    1212 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    245245    }
    246246
    247     bool psFitsMoveLast(const psFits* fits)
     247    bool psFitsMoveLast(psFits* fits)
    248248    {
    249249        if (fits == NULL) {
  • trunk/psLib/src/fits/psFits.h

    r5511 r6354  
    77 *  @author Robert DeSonia, MHPCC
    88 *
    9  *  @version $Revision: 1.22 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2005-11-14 22:18:30 $
     9 *  @version $Revision: 1.23 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2006-02-08 01:03:34 $
    1111 *
    1212 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    115115*/
    116116bool psFitsMoveLast(
    117     const psFits* fits                 ///< the psFits object to move
     117    psFits* fits                       ///< the psFits object to move
    118118);
    119119
  • trunk/psLib/src/fits/psFitsHeader.c

    r5511 r6354  
    77 *  @author Robert DeSonia, MHPCC
    88 *
    9  *  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2005-11-14 22:18:30 $
     9 *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2006-02-08 01:03:34 $
    1111 *
    1212 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    167167}
    168168
    169 psMetadata* psFitsReadHeaderSet(psMetadata* out,
    170                                 const psFits* fits)
     169psMetadata* psFitsReadHeaderSet(const psFits* fits)
    171170{
    172171    if (fits == NULL) {
    173172        psError(PS_ERR_BAD_PARAMETER_NULL, true,
    174173                PS_ERRORTEXT_psFits_NULL);
    175         psFree(out);
    176174        return NULL;
    177175    }
    178176
    179     if (out == NULL) {
    180         out = psMetadataAlloc();
    181         if (out == NULL) {
    182             psError(PS_ERR_UNKNOWN, false,
    183                     "Failed to allocate a new psMetadata container.");
    184             return NULL;
    185         }
    186     }
     177    psMetadata* out = psMetadataAlloc();
    187178
    188179    int size = psFitsGetSize(fits);
  • trunk/psLib/src/fits/psFitsHeader.h

    r5511 r6354  
    77 *  @author Robert DeSonia, MHPCC
    88 *
    9  *  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2005-11-14 22:18:30 $
     9 *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2006-02-08 01:03:34 $
    1111 *
    1212 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    3737 */
    3838psMetadata* psFitsReadHeaderSet(
    39     psMetadata* out,
    40     ///< The psMetadata to add the header data via psMetadata items.  If null, a
    41     ///< new psMetadata is created.  The keys of the psMetadata are the extension names
    42     ///< of the cooresponding HDUs.
    43 
    4439    const psFits* fits                       ///< the psFits object
    4540);
  • trunk/psLib/src/fits/psFitsTable.c

    r6314 r6354  
    77 *  @author Robert DeSonia, MHPCC
    88 *
    9  *  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2006-02-03 00:11:58 $
     9 *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2006-02-08 01:03:34 $
    1111 *
    1212 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    2323#include "psTrace.h"
    2424#include "psVector.h"
     25#include "config.h"
    2526
    2627#define MAX_STRING_LENGTH 256  // maximum length string for FITS routines
     
    309310        if (status == 0) {
    310311
    311             #define READ_TABLE_ROW_CASE(FITSTYPE, NATIVETYPE, TYPE) \
     312            #define READ_TABLE_ROW_CASE(FITSTYPE, NATIVETYPE, TYPE, VECTYPE) \
    312313        case FITSTYPE: { \
    313314                if (repeat == 1) { \
     
    322323                                  "", (ps##TYPE)value); \
    323324                } else { \
    324                     psVector* value = psVectorAlloc(repeat,PS_DATA_##TYPE); \
     325                    NATIVETYPE* value = psAlloc(sizeof(NATIVETYPE)*repeat); \
     326                    psVector* vec = psVectorAlloc(repeat,PS_TYPE_##VECTYPE); \
    325327                    int anynul = 0; \
    326328                    fits_read_col(fits->fd, FITSTYPE, col,row+1, \
    327                                   1, repeat, NULL, value->data.U8, &anynul, &status); \
    328                     psMetadataAdd(data,PS_LIST_TAIL, name, \
    329                                   PS_DATA_VECTOR, \
    330                                   "", value); \
     329                                  1, repeat, NULL, value, &anynul, &status); \
     330                    for (int lcv = 0; lcv < repeat; lcv++) { \
     331                        vec->data.VECTYPE[lcv] = value[lcv]; \
     332                    } \
     333                    psMetadataAdd(data,PS_LIST_TAIL, name, PS_DATA_VECTOR, "", vec); \
    331334                    psFree(value); \
     335                    psFree(vec); \
    332336                } \
    333337                break; \
     
    338342            case TSHORT:
    339343            case TLONGLONG:
    340                 READ_TABLE_ROW_CASE(TLONG, long, S32)
    341                 READ_TABLE_ROW_CASE(TFLOAT, float, F32)
    342                 READ_TABLE_ROW_CASE(TDOUBLE, double, F64)
    343                 READ_TABLE_ROW_CASE(TLOGICAL, bool, BOOL);
     344                READ_TABLE_ROW_CASE(TLONG, long, S32,S32)
     345                READ_TABLE_ROW_CASE(TFLOAT, float, F32,F32)
     346                READ_TABLE_ROW_CASE(TDOUBLE, double, F64,F64)
     347                READ_TABLE_ROW_CASE(TLOGICAL, bool, BOOL,S8);
    344348            case TSTRING: {
    345349                    char* value = psAlloc(repeat+1);
  • trunk/psLib/src/imageops/psImageGeomManip.c

    r6227 r6354  
    1010 *  @author Ross Harman, MHPCC
    1111 *
    12  *  @version $Revision: 1.18 $ $Name: not supported by cvs2svn $
    13  *  @date $Date: 2006-01-28 01:12:11 $
     12 *  @version $Revision: 1.19 $ $Name: not supported by cvs2svn $
     13 *  @date $Date: 2006-02-08 01:03:35 $
    1414 *
    1515 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    689689
    690690psImage* psImageTransform(psImage *output,
    691                           psArray* blankPixels,
     691                          psPixels** blankPixels,
    692692                          const psImage *input,
    693693                          const psImage *inputMask,
     
    706706    }
    707707    psElemType type = input->type.type;
    708     psPixels* tempPixels = NULL;
    709 
    710     if(blankPixels != NULL) {
    711         tempPixels = psPixelsAlloc(blankPixels->nalloc);
    712         tempPixels->n = blankPixels->n;
    713         tempPixels->data = (psPixelCoord*)blankPixels->data;
     708
     709    if (blankPixels != NULL && *blankPixels == NULL) {
     710        *blankPixels = psPixelsAlloc(0);
    714711    }
    715712
     
    786783    psPlane outPosition;
    787784    psPlane* inPosition = NULL;
    788 
    789 
    790 
    791 
    792785
    793786    #define PSIMAGE_TRANSFORM_DOTRANSFORM(TYPE,MODE) \
     
    808801    if (isnan(value)) { \
    809802        if (blankPixels != NULL) { \
    810             p_psPixelsAppend(tempPixels, tempPixels->nalloc, outPosition.x, outPosition.y); \
     803            p_psPixelsAppend(*blankPixels, (*blankPixels)->nalloc, outPosition.x, outPosition.y); \
    811804        } \
    812805        value = exposedValue; \
     
    873866
    874867    psFree(inPosition);
    875     psFree(tempPixels);
    876868
    877869    return output;
  • trunk/psLib/src/imageops/psImageGeomManip.h

    r6227 r6354  
    88 *  @author Robert DeSonia, MHPCC
    99 *
    10  *  @version $Revision: 1.13 $ $Name: not supported by cvs2svn $
    11  *  @date $Date: 2006-01-28 01:12:11 $
     10 *  @version $Revision: 1.14 $ $Name: not supported by cvs2svn $
     11 *  @date $Date: 2006-02-08 01:03:35 $
    1212 *
    1313 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    144144psImage* psImageTransform(
    145145    psImage *output,                   ///< psImage to recycle, or NULL
    146     psArray* blankPixels,              ///< list of pixels in output image not set, or NULL if no list is desired.
     146    psPixels** blankPixels,            ///< list of pixels in output image not set, or NULL if no list is desired.
    147147    const psImage *input,              ///< psImage to apply transform to
    148148    const psImage *inputMask,          ///< if not NULL, mask of input psImage
     
    151151    psRegion region,                   ///< the size of the transformed image
    152152    const psPixels* pixels,            /**< if not NULL, consists of psPixelCoords and specifies which pixels in
    153                                                                              *  output image shall be transformed; otherwise, entire image generated*/
     153                                                                                 *  output image shall be transformed; otherwise, entire image generated*/
    154154    psImageInterpolateMode mode,       ///< the interpolation scheme to be used
    155155    double exposedValue                   ///< Exposed value to which non-corresponding pixels are set
  • trunk/psLib/test/fits/tst_psFits.c

    r6314 r6354  
    66*  @author Robert DeSonia, MHPCC
    77*
    8 *  @version $Revision: 1.15 $ $Name: not supported by cvs2svn $
    9 *  @date $Date: 2006-02-03 00:12:01 $
     8*  @version $Revision: 1.16 $ $Name: not supported by cvs2svn $
     9*  @date $Date: 2006-02-08 01:03:35 $
    1010*
    1111*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    818818    psFitsMoveExtNum(fits,numHDUs/2, false);
    819819
    820     psMetadata* headerSet = psFitsReadHeaderSet(NULL, fits);
     820    psMetadata* headerSet = psFitsReadHeaderSet(fits);
    821821
    822822    if (headerSet == NULL) {
     
    859859    }
    860860
    861     psMetadata* set2 = psMetadataAlloc();
    862     set2 = psFitsReadHeaderSet(set2,NULL);
     861    psMetadata* set2 = psFitsReadHeaderSet(NULL);
    863862    if (set2 != NULL) {
    864863        psError(PS_ERR_UNKNOWN, false,
     
    867866    }
    868867
    869     psMetadata* set3 = psMetadataAlloc();
    870     set3 = psFitsReadHeaderSet(set3,fits);
    871 
     868    psMetadata* set3 = psFitsReadHeaderSet(fits);
    872869    if (set3 == NULL) {
    873870        psError(PS_ERR_UNKNOWN, false,
     
    12581255                           "row K"
    12591256                       };
     1257
    12601258
    12611259    if (! makeTable()) {
     
    15251523    mkdir("tmpImages",0777);
    15261524
    1527     testReadTypeSize(1,1,0,0,0,0,U8,"tmpImages/1x1_" "U8.fits");
    1528     testReadTypeSize(M,1,M/4,0,M*3/4,0,U8,"tmpImages/Mx1_" "U8.fits");
    1529     testReadTypeSize(1,N,0,N/4,0,N*3/4,U8,"tmpImages/1xN_" "U8.fits");
    1530     testReadTypeSize(M,N,M/4,N/4,M*3/4,N*3/4,U8,"tmpImages/MxN_" "U8.fits");
    1531 
    1532 
    15331525    testReadType(U8,"U8.fits");
    15341526    testReadType(S8,"S8.fits");   // Not a requirement
Note: See TracChangeset for help on using the changeset viewer.