IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 5, 2004, 1:14:15 PM (22 years ago)
Author:
gusciora
Message:

Improved the CHECK macros in psConstants.h.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/dataManip/psConstants.h

    r1963 r1964  
    66 *  @author GLG, MHPCC
    77 *
    8  *  @version $Revision: 1.7 $ $Name: not supported by cvs2svn $
    9  *  @date $Date: 2004-10-05 22:47:21 $
     8 *  @version $Revision: 1.8 $ $Name: not supported by cvs2svn $
     9 *  @date $Date: 2004-10-05 23:14:15 $
    1010 *
    1111 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    8888p_psMemSetPersistent(NAME->data.V, true); \
    8989
     90
     91
     92
     93
     94
    9095/** Preprocessor macro to generate error on an incorrect type */
    91 #define PS_CHECK_VECTOR_TYPE(NAME, TYPE) \
     96#define PS_CHECK_VECTOR_TYPE_RETURN_NULL(NAME, TYPE) \
    9297if (NAME->type.type != TYPE) { \
    9398    psError(__func__,"Unallowable operation: %s has incorrect type.", #NAME); \
    94 }
    95 
    96 /** Preprocessor macro to generate error on a NULL vector */
    97 #define PS_CHECK_NULL_VECTOR(NAME) \
    98 if (NAME == NULL || NAME->data.V == NULL) { \
    99     psError(__func__,"Unallowable operation: %s or its data is NULL.", #NAME); \
    100 }
    101 
    102 /** Preprocessor macro to generate error on a NULL vector */
    103 #define PS_CHECK_NULL_VECTOR_ACTION(NAME, ACTION) \
    104 if (NAME == NULL || NAME->data.V == NULL) { \
    105     if (ACTION == 0) { \
    106         psError(__func__,"Unallowable operation: %s or its data is NULL.", #NAME); \
    107         return(NULL); \
    108     } \
    109     if (ACTION == 1) { \
    110         psAbort(__func__, "Unallowable operation: %s or its data is NULL.", #NAME); \
    111     } \
     99    return(NULL); \
    112100}
    113101
     
    120108
    121109/** Preprocessor macro to generate error on a NULL poniter */
    122 #define PS_CHECK_NULL_PTR(NAME) \
    123 if (NAME == NULL) { \
    124     psError(__func__,"Unallowable operation: %s is NULL.", #NAME); \
    125 }
    126 
    127 /** Preprocessor macro to generate error on a NULL poniter */
    128110#define PS_CHECK_NULL_PTR_RETURN_NULL(NAME) \
    129111if (NAME == NULL) { \
    130112    psError(__func__,"Unallowable operation: %s is NULL.", #NAME); \
    131113    return(NULL); \
    132 }
    133 
    134 /** Preprocessor macro to generate error for zero length vector */
    135 #define PS_CHECK_EMPTY_VECTOR(NAME) \
    136 if (NAME->n < 1) { \
    137     psError(__func__,"Unallowable operation: %s has zero n value.", #NAME); \
    138 }
    139 
    140 /** Preprocessor macro to generate error for zero length vector */
    141 #define PS_CHECK_EMPTY_VECTOR_ACTION(NAME, ACTION) \
    142 if (NAME->n < 1) { \
    143     if (ACTION == 0) { \
    144         psError(__func__,"Unallowable operation: %s has zero n value.", #NAME); \
    145         return(NULL); \
    146     } \
    147     if (ACTION == 1) { \
    148         psAbort(__func__,"Unallowable operation: %s has zero n value.", #NAME); \
    149     } \
    150114}
    151115
     
    158122
    159123/** Preprocessor macro to generate error on differing size vectors */
    160 #define PS_CHECK_VECTOR_SIZE_EQUAL(VEC1, VEC2) \
     124#define PS_CHECK_VECTOR_SIZE_EQUAL_RETURN_NULL(VEC1, VEC2) \
    161125if (VEC1->n != VEC2->n) { \
    162126    psError(__func__,"Vector %s has size %d, Vector %s has size %d.", #VEC1, VEC1->n, #VEC2, VEC2->n); \
     127    return(NULL); \
    163128}
    164129
     
    171136
    172137/** Preprocessor macro to generate error on a NULL image */
    173 #define PS_CHECK_NULL_IMAGE(NAME)                                                          \
     138#define PS_CHECK_NULL_IMAGE_RETURN_NULL(NAME) \
    174139if (NAME == NULL || NAME->data.V == NULL) {                                                         \
    175140    psError(__func__,"Unallowable operation: %s or its data is NULL.", #NAME);                          \
     141    return(NULL); \
    176142}
    177143
    178144/** Preprocessor macro to generate error for zero length rows or columns */
    179 #define PS_CHECK_EMPTY_IMAGE(NAME)                                                          \
     145#define PS_CHECK_EMPTY_IMAGE_RETURN_NULL(NAME) \
    180146if (NAME->numCols < 1 || NAME->numRows < 1) {                                                       \
    181147    psError(__func__,"Unallowable operation: %s has zero rows or columns (%dx%d).", #NAME,              \
    182148            NAME->numCols, NAME->numRows);                                                          \
    183 }
    184 
    185 /** Preprocessor macro to generate error on a NULL 1DPolynomial */
    186 #define PS_CHECK_NULL_1DPOLY(NAME)                                                          \
    187 if (NAME == NULL || NAME->coeff == NULL) {                                                         \
    188     psError(__func__,"Unallowable operation: %s or its data is NULL.", #NAME);                          \
    189 }
    190 
    191 /** Preprocessor macro to generate error on a NULL 1DPolynomial */
    192 #define PS_CHECK_NULL_1DPOLY_ACTION(NAME, ACTION)                                                          \
    193 if (NAME == NULL || NAME->coeff == NULL) {                                                         \
    194     if (ACTION == 0) { \
    195         psError(__func__,"Unallowable operation: %s or its coeffs is NULL.", #NAME);                          \
    196         return(NULL); \
    197     } \
    198     if (ACTION == 1) { \
    199         psAbort(__func__,"Unallowable operation: %s or its coeffs is NULL.", #NAME);                          \
    200     } \
     149    return(NULL); \
    201150}
    202151
     
    206155    return(NULL); \
    207156} \
     157
     158
     159
     160
    208161
    209162#define PS_PRINT_VECTOR(NAME) \
     
    216169psVector *X32 = psVectorAlloc(X64->n, PS_TYPE_F32); \
    217170for (int i=0;i<X64->n;i++) { \
    218     X32->data.F32[i] = X64->data.F64[i]; \
     171    X32->data.F32[i] = (float) X64->data.F64[i]; \
    219172} \
     173
     174#define PS_VECTOR_F32_TO_F64(X32, X64) \
     175psVector *X64 = psVectorAlloc(X32->n, PS_TYPE_F64); \
     176for (int i=0;i<X32->n;i++) { \
     177    X64->data.F64[i] = (float) X32->data.F32[i]; \
     178} \
     179
    220180
    221181#define PS_MAX(A, B) \
Note: See TracChangeset for help on using the changeset viewer.