Changeset 164 for trunk/archive/pslib/src/Utils
- Timestamp:
- Mar 9, 2004, 2:34:28 PM (22 years ago)
- Location:
- trunk/archive/pslib/src/Utils
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/archive/pslib/src/Utils/array.c
r141 r164 10 10 P_PS_CREATE_ARRAY_TYPE(static, my_, psVoidPtr); 11 11 12 psVoidPtrArray *psVoidPtrArray New(int n, int s)12 psVoidPtrArray *psVoidPtrArrayAlloc(int n, int s) 13 13 { 14 return my_psVoidPtrArray New(n, s);14 return my_psVoidPtrArrayAlloc(n, s); 15 15 } 16 16 … … 20 20 } 21 21 22 void psVoidPtrArray Del(psVoidPtrArray *arr,23 void (*elemDel)(void *)) // destructor for data on array22 void psVoidPtrArrayFree(psVoidPtrArray *arr, 23 void (*elemFree)(void *)) // destructor for data on array 24 24 { 25 25 if (arr == NULL) { … … 28 28 29 29 for (int i = 0; i < arr->n; i++) { 30 if (elem Del== NULL) {30 if (elemFree == NULL) { 31 31 psMemDecrRefCounter(arr->arr[i]); 32 32 } else { 33 elem Del(psMemDecrRefCounter(arr->arr[i]));33 elemFree(psMemDecrRefCounter(arr->arr[i])); 34 34 } 35 35 } 36 my_psVoidPtrArray Del(arr);36 my_psVoidPtrArrayFree(arr); 37 37 } 38 38 … … 44 44 } psXY; 45 45 46 psXY *psXY New(void)46 psXY *psXYAlloc(void) 47 47 { 48 48 return psAlloc(sizeof(psXY)); 49 49 } 50 50 51 void psXY Del(psXY *xy)51 void psXYFree(psXY *xy) 52 52 { 53 53 psFree(xy); … … 62 62 int main(void) 63 63 { 64 psXYArray *t = psXYArray New(10, 15);65 psXYPtrArray *pt = psXYPtrArray New(10, 10);64 psXYArray *t = psXYArrayAlloc(10, 15); 65 psXYPtrArray *pt = psXYPtrArrayAlloc(10, 10); 66 66 67 67 for (int i = 0; i < t->n; i++) { … … 78 78 printf("\n"); 79 79 80 psXYArray Del(t);80 psXYArrayFree(t); 81 81 82 82 psXY *xy = psMemDecrRefCounter(pt->arr[0]); 83 83 pt->arr[0] = NULL; 84 psXY Del(xy);84 psXYFree(xy); 85 85 86 psXYPtrArray Del(pt);86 psXYPtrArrayFree(pt); 87 87 88 88 psMemCheckLeaks(0, NULL, stderr); -
trunk/archive/pslib/src/Utils/psArray.h
r141 r164 14 14 } PS_CONCAT(TYPE, Array); \ 15 15 \ 16 PS_CONCAT(TYPE, Array) *PS_CONCAT3(TYPE,Array, New)(int n, int s); \16 PS_CONCAT(TYPE, Array) *PS_CONCAT3(TYPE,Array,Alloc)(int n, int s); \ 17 17 PS_CONCAT(TYPE, Array) *PS_CONCAT3(TYPE,Array,Realloc)(PS_CONCAT(TYPE, Array) *arr, int n); \ 18 void PS_CONCAT3(TYPE,Array, Del)(PS_CONCAT(TYPE, Array) *arr)18 void PS_CONCAT3(TYPE,Array,Free)(PS_CONCAT(TYPE, Array) *arr) 19 19 20 20 /*****************************************************************************/ … … 27 27 #define P_PS_CREATE_ARRAY_TYPE(QUAL,PREFIX,TYPE) \ 28 28 \ 29 QUAL PS_CONCAT(TYPE, Array) *PS_CONCAT4(PREFIX,TYPE,Array, New)(int n, /* initial dimension */\29 QUAL PS_CONCAT(TYPE, Array) *PS_CONCAT4(PREFIX,TYPE,Array,Alloc)(int n, /* initial dimension */\ 30 30 int s) /* initial number of elements */ \ 31 31 { \ … … 33 33 \ 34 34 if (n > s) { \ 35 psLogMsg(PS_STRING(TYPE) "Array New", PS_LOG_ERROR, "Too few elements requested in array (%d < %d)\n", s, n); \35 psLogMsg(PS_STRING(TYPE) "ArrayAlloc", PS_LOG_ERROR, "Too few elements requested in array (%d < %d)\n", s, n); \ 36 36 s = n; \ 37 37 } \ … … 52 52 { \ 53 53 if (arr == NULL) { \ 54 return PS_CONCAT4(PREFIX,TYPE,Array, New)(n, n); \54 return PS_CONCAT4(PREFIX,TYPE,Array,Alloc)(n, n); \ 55 55 } \ 56 56 \ … … 67 67 } \ 68 68 \ 69 QUAL void PS_CONCAT4(PREFIX,TYPE,Array, Del)(PS_CONCAT(TYPE,Array) *arr) \69 QUAL void PS_CONCAT4(PREFIX,TYPE,Array,Free)(PS_CONCAT(TYPE,Array) *arr) \ 70 70 { \ 71 71 if (arr == NULL) { \ … … 88 88 P_PS_CREATE_ARRAY_TYPE(static, my_, P_PS_CONCAT(TYPE, Ptr)) \ 89 89 \ 90 PS_CONCAT(TYPE, PtrArray) *PS_CONCAT3(TYPE,PtrArray, New)(int n, int s) \90 PS_CONCAT(TYPE, PtrArray) *PS_CONCAT3(TYPE,PtrArray,Alloc)(int n, int s) \ 91 91 { \ 92 PS_CONCAT(TYPE, PtrArray) *arr = PS_CONCAT4(my_,TYPE,PtrArray, New)(n, s); \92 PS_CONCAT(TYPE, PtrArray) *arr = PS_CONCAT4(my_,TYPE,PtrArray,Alloc)(n, s); \ 93 93 for (int i = 0; i < arr->n; i++) { \ 94 arr->arr[i] = psMemIncrRefCounter,(PS_CONCAT(TYPE, New)());\94 arr->arr[i] = psMemIncrRefCounter,(PS_CONCAT(TYPE, Alloc)());\ 95 95 } \ 96 96 \ … … 101 101 { \ 102 102 for (int i = n; i < arr->n; i++) { \ 103 PS_CONCAT(TYPE, Del)(psMemDecrRefCounter(arr->arr[i]));\103 PS_CONCAT(TYPE, Free)(psMemDecrRefCounter(arr->arr[i]));\ 104 104 } \ 105 105 \ … … 107 107 } \ 108 108 \ 109 void PS_CONCAT3(TYPE,PtrArray, Del)(PS_CONCAT2(TYPE,PtrArray) *arr) \109 void PS_CONCAT3(TYPE,PtrArray,Free)(PS_CONCAT2(TYPE,PtrArray) *arr) \ 110 110 { \ 111 111 if (arr == NULL) { return; } \ 112 112 for (int i = 0; i < arr->size; i++) { \ 113 PS_CONCAT(TYPE, Del)(psMemDecrRefCounter(arr->arr[i])); \113 PS_CONCAT(TYPE, Free)(psMemDecrRefCounter(arr->arr[i])); \ 114 114 } \ 115 PS_CONCAT4(my_, TYPE, PtrArray, Del)(arr); \115 PS_CONCAT4(my_, TYPE, PtrArray, Free)(arr); \ 116 116 } 117 117 … … 129 129 } psVoidPtrArray; 130 130 131 psVoidPtrArray *psVoidPtrArray New(int n, int s);131 psVoidPtrArray *psVoidPtrArrayAlloc(int n, int s); 132 132 psVoidPtrArray *psVoidPtrArrayRealloc(psVoidPtrArray *arr, int n); 133 void psVoidPtrArray Del(psVoidPtrArray *arr,134 void (*elemDel)(void *)); // destructor for array data133 void psVoidPtrArrayFree(psVoidPtrArray *arr, 134 void (*elemFree)(void *)); // destructor for array data 135 135 136 136
Note:
See TracChangeset
for help on using the changeset viewer.
