IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 495


Ignore:
Timestamp:
Apr 21, 2004, 11:05:39 AM (22 years ago)
Author:
harman
Message:

Added array of void pointers

Location:
trunk/psLib/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/collections/psArray.c

    r493 r495  
    88 *  @author Ross Harman, MHPCC
    99 *   
    10  *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
    11  *  @date $Date: 2004-04-21 18:53:10 $
     10 *  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
     11 *  @date $Date: 2004-04-21 21:05:39 $
    1212 *
    1313 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    4848/*****************************************************************************/
    4949
    50 // None
     50static psVoidPtrArray *p_psVoidPtrArrayRealloc(psVoidPtrArray *restrict psArr, int nalloc)
     51{
     52    if(psArr == NULL) {
     53        return psVoidPtrArrayAlloc(nalloc);
     54    }
     55    if(nalloc <= psArr->nalloc) {
     56        if (psArr->n < nalloc) {
     57            psArr->n = nalloc;
     58        }
     59    } else {
     60        psArr->arr = p_psRealloc(psArr->arr, nalloc*sizeof(void*), __FILE__, __LINE__);
     61        psArr->nalloc = nalloc;
     62    }
     63    return psArr;
     64}
     65
     66static void p_psVoidPtrArrayFree(psVoidPtrArray *restrict psArr)
     67{
     68    if (psArr == NULL) {
     69        return;
     70    }
     71    p_psFree(psArr->arr, __FILE__, __LINE__);
     72    p_psFree(psArr, __FILE__, __LINE__);
     73}
    5174
    5275/*****************************************************************************/
     
    239262}
    240263
    241 psVoidPtrArray *psVoidPtrArrayRealloc(psVoidPtrArray *psArr, int nalloc)
    242 {
    243     if(psArr == NULL) {
    244         return psVoidPtrArrayAlloc(nalloc);
    245     }
    246     if(nalloc <= psArr->nalloc) {
    247         if (psArr->n < nalloc) {
    248             psArr->n = nalloc;
    249         }
    250     } else {
    251         psArr->arr = p_psRealloc(psArr->arr, nalloc*sizeof(void*), __FILE__, __LINE__);
    252         psArr->nalloc = nalloc;
    253     }
    254     return psArr;
     264psVoidPtrArray *psVoidPtrArrayRealloc(psVoidPtrArray *restrict psArr, int nalloc, void (*elemFree)(void *))
     265{
     266    int i = 0;
     267
     268    if(psArr == NULL) {
     269        return psArr;
     270    }
     271
     272    for (i = nalloc; i < psArr->n; i++) {
     273        if(elemFree == NULL) {
     274            psMemDecrRefCounter(psArr->arr[i]);
     275        } else {
     276            elemFree(psMemDecrRefCounter(psArr->arr[i]));
     277        }
     278    }
     279
     280    return p_psVoidPtrArrayRealloc(psArr, nalloc);
    255281}
    256282
    257283void psVoidPtrArrayFree(psVoidPtrArray *restrict psArr, void (*elemFree)(void *))
    258284{
    259     if (psArr == NULL) {
    260         return;
    261     }
    262     p_psFree(psArr->arr, __FILE__, __LINE__);
    263     p_psFree(psArr, __FILE__, __LINE__);
    264 }
     285    int i = 0;
     286
     287    if(psArr == NULL) {
     288        return;
     289    }
     290
     291    for(i = 0; i < psArr->nalloc; i++) {
     292        if(elemFree == NULL) {
     293            psMemDecrRefCounter(psArr->arr[i]);
     294        } else {
     295            elemFree(psMemDecrRefCounter(psArr->arr[i]));
     296        }
     297    }
     298    p_psVoidPtrArrayFree(psArr);
     299}
     300
  • trunk/psLib/src/collections/psArray.h

    r493 r495  
    88 *  @author Ross Harman, MHPCC
    99 *   
    10  *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
    11  *  @date $Date: 2004-04-21 18:53:10 $
     10 *  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
     11 *  @date $Date: 2004-04-21 21:05:39 $
    1212 *
    1313 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    198198 */
    199199psFloatArray *psFloatArrayRealloc(
    200     psFloatArray *psArr,  ///< Array to reallocate.
     200    psFloatArray *psArr,    ///< Array to reallocate.
    201201    int nalloc              ///< Total number of elements to make available.
    202202);
     
    229229 */
    230230psDoubleArray *psDoubleArrayRealloc(
    231     psDoubleArray *psArr, ///< Array to reallocate.
     231    psDoubleArray *psArr,   ///< Array to reallocate.
    232232    int nalloc              ///< Total number of elements to make available.
    233233);
     
    290290 */
    291291psVoidPtrArray *psVoidPtrArrayRealloc(
    292     psVoidPtrArray *psArr,  ///< Array to reallocate.
    293     int nalloc              ///< Number of elements.
     292    psVoidPtrArray *restrict psArr, ///< Array to reallocate.
     293    int nalloc,                     ///< Number of elements.
     294    void (*elemFree)(void *)        ///< Callback function responsible for removing array data.
    294295);
    295296
  • trunk/psLib/src/types/psArray.c

    r493 r495  
    88 *  @author Ross Harman, MHPCC
    99 *   
    10  *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
    11  *  @date $Date: 2004-04-21 18:53:10 $
     10 *  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
     11 *  @date $Date: 2004-04-21 21:05:39 $
    1212 *
    1313 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    4848/*****************************************************************************/
    4949
    50 // None
     50static psVoidPtrArray *p_psVoidPtrArrayRealloc(psVoidPtrArray *restrict psArr, int nalloc)
     51{
     52    if(psArr == NULL) {
     53        return psVoidPtrArrayAlloc(nalloc);
     54    }
     55    if(nalloc <= psArr->nalloc) {
     56        if (psArr->n < nalloc) {
     57            psArr->n = nalloc;
     58        }
     59    } else {
     60        psArr->arr = p_psRealloc(psArr->arr, nalloc*sizeof(void*), __FILE__, __LINE__);
     61        psArr->nalloc = nalloc;
     62    }
     63    return psArr;
     64}
     65
     66static void p_psVoidPtrArrayFree(psVoidPtrArray *restrict psArr)
     67{
     68    if (psArr == NULL) {
     69        return;
     70    }
     71    p_psFree(psArr->arr, __FILE__, __LINE__);
     72    p_psFree(psArr, __FILE__, __LINE__);
     73}
    5174
    5275/*****************************************************************************/
     
    239262}
    240263
    241 psVoidPtrArray *psVoidPtrArrayRealloc(psVoidPtrArray *psArr, int nalloc)
    242 {
    243     if(psArr == NULL) {
    244         return psVoidPtrArrayAlloc(nalloc);
    245     }
    246     if(nalloc <= psArr->nalloc) {
    247         if (psArr->n < nalloc) {
    248             psArr->n = nalloc;
    249         }
    250     } else {
    251         psArr->arr = p_psRealloc(psArr->arr, nalloc*sizeof(void*), __FILE__, __LINE__);
    252         psArr->nalloc = nalloc;
    253     }
    254     return psArr;
     264psVoidPtrArray *psVoidPtrArrayRealloc(psVoidPtrArray *restrict psArr, int nalloc, void (*elemFree)(void *))
     265{
     266    int i = 0;
     267
     268    if(psArr == NULL) {
     269        return psArr;
     270    }
     271
     272    for (i = nalloc; i < psArr->n; i++) {
     273        if(elemFree == NULL) {
     274            psMemDecrRefCounter(psArr->arr[i]);
     275        } else {
     276            elemFree(psMemDecrRefCounter(psArr->arr[i]));
     277        }
     278    }
     279
     280    return p_psVoidPtrArrayRealloc(psArr, nalloc);
    255281}
    256282
    257283void psVoidPtrArrayFree(psVoidPtrArray *restrict psArr, void (*elemFree)(void *))
    258284{
    259     if (psArr == NULL) {
    260         return;
    261     }
    262     p_psFree(psArr->arr, __FILE__, __LINE__);
    263     p_psFree(psArr, __FILE__, __LINE__);
    264 }
     285    int i = 0;
     286
     287    if(psArr == NULL) {
     288        return;
     289    }
     290
     291    for(i = 0; i < psArr->nalloc; i++) {
     292        if(elemFree == NULL) {
     293            psMemDecrRefCounter(psArr->arr[i]);
     294        } else {
     295            elemFree(psMemDecrRefCounter(psArr->arr[i]));
     296        }
     297    }
     298    p_psVoidPtrArrayFree(psArr);
     299}
     300
  • trunk/psLib/src/types/psArray.h

    r493 r495  
    88 *  @author Ross Harman, MHPCC
    99 *   
    10  *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
    11  *  @date $Date: 2004-04-21 18:53:10 $
     10 *  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
     11 *  @date $Date: 2004-04-21 21:05:39 $
    1212 *
    1313 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    198198 */
    199199psFloatArray *psFloatArrayRealloc(
    200     psFloatArray *psArr,  ///< Array to reallocate.
     200    psFloatArray *psArr,    ///< Array to reallocate.
    201201    int nalloc              ///< Total number of elements to make available.
    202202);
     
    229229 */
    230230psDoubleArray *psDoubleArrayRealloc(
    231     psDoubleArray *psArr, ///< Array to reallocate.
     231    psDoubleArray *psArr,   ///< Array to reallocate.
    232232    int nalloc              ///< Total number of elements to make available.
    233233);
     
    290290 */
    291291psVoidPtrArray *psVoidPtrArrayRealloc(
    292     psVoidPtrArray *psArr,  ///< Array to reallocate.
    293     int nalloc              ///< Number of elements.
     292    psVoidPtrArray *restrict psArr, ///< Array to reallocate.
     293    int nalloc,                     ///< Number of elements.
     294    void (*elemFree)(void *)        ///< Callback function responsible for removing array data.
    294295);
    295296
Note: See TracChangeset for help on using the changeset viewer.