IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Apr 19, 2004, 9:41:51 AM (22 years ago)
Author:
rhl
Message:

Fixed up code for changes in organisation and APIs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/archive/pslib/src/Utils/psArray.h

    r388 r446  
    22#define PS_ARRAY_H
    33
    4 //#include <stdlib.h>
    54/**
    65 * Declare TYPEArray
     
    87#define PS_DECLARE_ARRAY_TYPE(TYPE) \
    98    typedef struct { \
    10         int size;                       /* number of allocated elements */ \
    11         int n;                          /* number of elements in use */ \
    12         \
     9        psType type;                    /* Type of data.  THIS STRUCT ELEMENT MUST BE FIRST IN THE STRUCT */\
     10        int nalloc;                     /* Total number of elements available */\
     11        int n;                          /* Number of elements in use */\
    1312        TYPE *arr;                      /* the actual data */ \
    1413    } PS_CONCAT(TYPE, Array); \
    1514    \
    16 PS_CONCAT(TYPE, Array) *PS_CONCAT3(TYPE,Array,Alloc)(int n, int s); \
     15PS_CONCAT(TYPE, Array) *PS_CONCAT3(TYPE,Array,Alloc)(int n); \
    1716PS_CONCAT(TYPE, Array) *PS_CONCAT3(TYPE,Array,Realloc)(PS_CONCAT(TYPE, Array) *arr, int n); \
    1817void PS_CONCAT3(TYPE,Array,Free)(PS_CONCAT(TYPE, Array) *arr)
     
    2726#define P_PS_CREATE_ARRAY_TYPE(QUAL,PREFIX,TYPE) \
    2827\
    29 QUAL PS_CONCAT(TYPE, Array) *PS_CONCAT4(PREFIX,TYPE,Array,Alloc)(int n, /* initial dimension */\
    30                                                    int s) /* initial number of elements */ \
     28QUAL PS_CONCAT(TYPE, Array) *PS_CONCAT4(PREFIX,TYPE,Array,Alloc)(int n) /* initial dimension */ \
    3129{ \
    3230    PS_CONCAT(TYPE, Array) *arr = psAlloc(sizeof(PS_CONCAT(TYPE, Array))); \
    3331    \
    34     if (n > s) { \
    35         psLogMsg(PS_STRING(TYPE) "ArrayAlloc", PS_LOG_ERROR, "Too few elements requested in array (%d < %d)\n", s, n); \
    36         s = n; \
    37     } \
     32    arr->nalloc = arr->n = n; \
    3833    \
    39     arr->size = s; \
    40     arr->n = n; \
    41     \
    42     if (s == 0) { \
     34    if (n == 0) { \
    4335        arr->arr = NULL; \
    4436    } else { \
    45         arr->arr = psAlloc(s*sizeof(TYPE)); \
     37        arr->arr = psAlloc(n*sizeof(TYPE)); \
    4638    } \
    4739    \
     
    5244{ \
    5345    if (arr == NULL) { \
    54         return PS_CONCAT4(PREFIX,TYPE,Array,Alloc)(n, n); \
     46        return PS_CONCAT4(PREFIX,TYPE,Array,Alloc)(n); \
    5547    } \
    5648    \
    57     if (n <= arr->size) { \
     49    if (n <= arr->nalloc) { \
    5850        if (arr->n < n) { \
    5951            arr->n = n; \
     
    6153    } else { \
    6254        arr->arr = psRealloc(arr->arr, n*sizeof(TYPE)); \
    63         arr->size = n; \
     55        arr->nalloc = n; \
    6456    } \
    6557    \
     
    9183    P_PS_CREATE_ARRAY_TYPE(static, my_, P_PS_CONCAT(TYPE, Ptr)) \
    9284    \
    93     PS_CONCAT(TYPE, PtrArray) *PS_CONCAT3(TYPE,PtrArray,Alloc)(int n, int s) \
     85    PS_CONCAT(TYPE, PtrArray) *PS_CONCAT3(TYPE,PtrArray,Alloc)(int n) \
    9486    { \
    95         PS_CONCAT(TYPE, PtrArray) *arr = PS_CONCAT4(my_,TYPE,PtrArray,Alloc)(n, s); \
     87        PS_CONCAT(TYPE, PtrArray) *arr = PS_CONCAT4(my_,TYPE,PtrArray,Alloc)(n); \
    9688        for (int i = 0; i < arr->n; i++) { \
    9789            arr->arr[i] = psMemIncrRefCounter(PS_CONCAT(TYPE, Alloc)());\
     
    113105    { \
    114106        if (arr == NULL) { return; } \
    115         for (int i = 0; i < arr->size; i++) { \
     107        for (int i = 0; i < arr->nalloc; i++) { \
    116108            PS_CONCAT(TYPE, Free)(psMemDecrRefCounter(arr->arr[i])); \
    117109        } \
Note: See TracChangeset for help on using the changeset viewer.