Changeset 485 for trunk/psLib/src/collections/psArray.c
- Timestamp:
- Apr 20, 2004, 2:18:05 PM (22 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/collections/psArray.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/collections/psArray.c
r433 r485 1 /* remove this file when there is a valid psArray.h */ 1 /** @file psArray.c 2 * 3 * @brief Contains support for array types 4 * 5 * The type of basic one dimensional arrays are defined here include: int, float, double, complex float, and 6 * void *. 7 * 8 * @author Ross Harman, MHPCC 9 * 10 * @version $Revision: 1.2 $ $Name: not supported by cvs2svn $ 11 * @date $Date: 2004-04-21 00:18:05 $ 12 * 13 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii 14 */ 2 15 16 /******************************************************************************/ 17 /* INCLUDE FILES */ 18 /******************************************************************************/ 19 #include "psMemory.h" 3 20 #include "psArray.h" 21 #include "psLogMsg.h" 4 22 5 #include <stdlib.h> 23 /******************************************************************************/ 24 /* DEFINE STATEMENTS */ 25 /******************************************************************************/ 6 26 7 psFloatArray *psFloatArrayAlloc(int nalloc) 27 // None 28 29 /******************************************************************************/ 30 /* TYPE DEFINITIONS */ 31 /******************************************************************************/ 32 33 // None 34 35 /*****************************************************************************/ 36 /* GLOBAL VARIABLES */ 37 /*****************************************************************************/ 38 39 // None 40 41 /*****************************************************************************/ 42 /* FILE STATIC VARIABLES */ 43 /*****************************************************************************/ 44 45 // None 46 47 /*****************************************************************************/ 48 /* FUNCTION IMPLEMENTATION - LOCAL */ 49 /*****************************************************************************/ 50 51 // None 52 53 /*****************************************************************************/ 54 /* FUNCTION IMPLEMENTATION - PUBLIC */ 55 /*****************************************************************************/ 56 57 psFloatArray* psFloatArrayAlloc(int nalloc) 8 58 { 9 psFloatArray *psArray = (psFloatArray*)malloc(sizeof(psFloatArray)); 10 psArray->n = nalloc; 11 psArray->arr = (float*)malloc(sizeof(float)*nalloc); 12 13 return psArray; 59 psFloatArray *psArr = (psFloatArray*)p_psAlloc(sizeof(psFloatArray), __FILE__, __LINE__); 60 psArr->type.dimen = PS_DIMEN_VECTOR; 61 psArr->type.type = PS_TYPE_FLOAT; 62 psArr->nalloc = nalloc; 63 psArr->n = 0; 64 65 if(nalloc == 0) { 66 psArr->arr = NULL; 67 } else { 68 psArr->arr = p_psAlloc(nalloc*sizeof(float), __FILE__, __LINE__); 69 } 70 71 return psArr; 14 72 } 15 73 16 int psFreeFloatArray(psFloatArray *inArray)74 psFloatArray *psFloatArrayRealloc(psFloatArray *psArr, int nalloc) 17 75 { 18 free(inArray->arr); 19 free(inArray); 20 return 0; 76 if(psArr == NULL) { 77 return psFloatArrayAlloc(nalloc); 78 } 79 if(nalloc <= psArr->nalloc) { 80 if (psArr->n < nalloc) { 81 psArr->n = nalloc; 82 } 83 } else { 84 psArr->arr = p_psRealloc(psArr->arr, nalloc*sizeof(float), __FILE__, __LINE__); 85 psArr->nalloc = nalloc; 86 } 87 return psArr; 21 88 } 22 89 23 psIntArray *psIntArrayAlloc(int nalloc)90 void psFloatArrayFree(psFloatArray *restrict psArr) 24 91 { 25 psIntArray *psArray = (psIntArray*)malloc(sizeof(psIntArray));26 psArray->n = nalloc;27 psArray->arr = (int*)malloc(sizeof(int)*nalloc);28 29 return psArray;92 if (psArr == NULL) { 93 return; 94 } 95 p_psFree(psArr->arr, __FILE__, __LINE__); 96 p_psFree(psArr, __FILE__, __LINE__); 30 97 } 98 99 psIntArray* psIntArrayAlloc(int nalloc) 100 { 101 psIntArray *psArr = (psIntArray*)p_psAlloc(sizeof(psIntArray), __FILE__, __LINE__); 102 psArr->type.dimen = PS_DIMEN_VECTOR; 103 psArr->type.type = PS_TYPE_INT; 104 psArr->nalloc = nalloc; 105 psArr->n = 0; 106 107 if(nalloc == 0) { 108 psArr->arr = NULL; 109 } else { 110 psArr->arr = p_psAlloc(nalloc*sizeof(int), __FILE__, __LINE__); 111 } 112 113 return psArr; 114 } 115 116 psIntArray *psIntArrayRealloc(psIntArray *psArr, int nalloc) 117 { 118 if(psArr == NULL) { 119 return psIntArrayAlloc(nalloc); 120 } 121 if(nalloc <= psArr->nalloc) { 122 if (psArr->n < nalloc) { 123 psArr->n = nalloc; 124 } 125 } else { 126 psArr->arr = p_psRealloc(psArr->arr, nalloc*sizeof(int), __FILE__, __LINE__); 127 psArr->nalloc = nalloc; 128 } 129 return psArr; 130 } 131 132 void psIntArrayFree(psIntArray *restrict psArr) 133 { 134 if (psArr == NULL) { 135 return; 136 } 137 p_psFree(psArr->arr, __FILE__, __LINE__); 138 p_psFree(psArr, __FILE__, __LINE__); 139 }
Note:
See TracChangeset
for help on using the changeset viewer.
