Index: trunk/psLib/src/collections/psArray.c
===================================================================
--- trunk/psLib/src/collections/psArray.c	(revision 433)
+++ trunk/psLib/src/collections/psArray.c	(revision 485)
@@ -1,30 +1,139 @@
-/* remove this file when there is a valid psArray.h */
+/** @file  psArray.c
+ *
+ *  @brief Contains support for array types
+ *
+ *  The type of basic one dimensional arrays are defined here include: int, float, double, complex float, and
+ *  void *.
+ *
+ *  @author Ross Harman, MHPCC
+ *   
+ *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-04-21 00:18:05 $
+ *
+ *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
+ */
 
+/******************************************************************************/
+/*  INCLUDE FILES                                                             */
+/******************************************************************************/
+#include "psMemory.h"
 #include "psArray.h"
+#include "psLogMsg.h"
 
-#include <stdlib.h>
+/******************************************************************************/
+/*  DEFINE STATEMENTS                                                         */
+/******************************************************************************/
 
-psFloatArray *psFloatArrayAlloc(int nalloc)
+// None
+
+/******************************************************************************/
+/*  TYPE DEFINITIONS                                                          */
+/******************************************************************************/
+
+// None
+
+/*****************************************************************************/
+/*  GLOBAL VARIABLES                                                         */
+/*****************************************************************************/
+
+// None
+
+/*****************************************************************************/
+/*  FILE STATIC VARIABLES                                                    */
+/*****************************************************************************/
+
+// None
+
+/*****************************************************************************/
+/*  FUNCTION IMPLEMENTATION - LOCAL                                          */
+/*****************************************************************************/
+
+// None
+
+/*****************************************************************************/
+/* FUNCTION IMPLEMENTATION - PUBLIC                                          */
+/*****************************************************************************/
+
+psFloatArray* psFloatArrayAlloc(int nalloc)
 {
-    psFloatArray *psArray = (psFloatArray*)malloc(sizeof(psFloatArray));
-    psArray->n = nalloc;
-    psArray->arr = (float*)malloc(sizeof(float)*nalloc);
-    
-    return psArray;
+    psFloatArray *psArr = (psFloatArray*)p_psAlloc(sizeof(psFloatArray), __FILE__, __LINE__);
+    psArr->type.dimen = PS_DIMEN_VECTOR;
+    psArr->type.type = PS_TYPE_FLOAT;
+    psArr->nalloc = nalloc;
+    psArr->n = 0;
+
+    if(nalloc == 0) {
+        psArr->arr = NULL;
+    } else {
+        psArr->arr = p_psAlloc(nalloc*sizeof(float), __FILE__, __LINE__);
+    }
+
+    return psArr;
 }
 
-int psFreeFloatArray(psFloatArray *inArray)
+psFloatArray *psFloatArrayRealloc(psFloatArray *psArr, int nalloc)
 {
-    free(inArray->arr);
-    free(inArray);
-    return 0;
+    if(psArr == NULL) {
+        return psFloatArrayAlloc(nalloc);
+    }
+    if(nalloc <= psArr->nalloc) {
+        if (psArr->n < nalloc) {
+            psArr->n = nalloc;
+        }
+    } else {
+        psArr->arr = p_psRealloc(psArr->arr, nalloc*sizeof(float), __FILE__, __LINE__);
+        psArr->nalloc = nalloc;
+    }
+    return psArr;
 }
 
-psIntArray *psIntArrayAlloc(int nalloc)
+void psFloatArrayFree(psFloatArray *restrict psArr)
 {
-    psIntArray *psArray = (psIntArray*)malloc(sizeof(psIntArray));
-    psArray->n = nalloc;
-    psArray->arr = (int*)malloc(sizeof(int)*nalloc);
-    
-    return psArray;
+    if (psArr == NULL) {
+        return;
+    }
+    p_psFree(psArr->arr, __FILE__, __LINE__);
+    p_psFree(psArr, __FILE__, __LINE__);
 }
+
+psIntArray* psIntArrayAlloc(int nalloc)
+{
+    psIntArray *psArr = (psIntArray*)p_psAlloc(sizeof(psIntArray), __FILE__, __LINE__);
+    psArr->type.dimen = PS_DIMEN_VECTOR;
+    psArr->type.type = PS_TYPE_INT;
+    psArr->nalloc = nalloc;
+    psArr->n = 0;
+
+    if(nalloc == 0) {
+        psArr->arr = NULL;
+    } else {
+        psArr->arr = p_psAlloc(nalloc*sizeof(int), __FILE__, __LINE__);
+    }
+
+    return psArr;
+}
+
+psIntArray *psIntArrayRealloc(psIntArray *psArr, int nalloc)
+{
+    if(psArr == NULL) {
+        return psIntArrayAlloc(nalloc);
+    }
+    if(nalloc <= psArr->nalloc) {
+        if (psArr->n < nalloc) {
+            psArr->n = nalloc;
+        }
+    } else {
+        psArr->arr = p_psRealloc(psArr->arr, nalloc*sizeof(int), __FILE__, __LINE__);
+        psArr->nalloc = nalloc;
+    }
+    return psArr;
+}
+
+void psIntArrayFree(psIntArray *restrict psArr)
+{
+    if (psArr == NULL) {
+        return;
+    }
+    p_psFree(psArr->arr, __FILE__, __LINE__);
+    p_psFree(psArr, __FILE__, __LINE__);
+}
