IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Apr 20, 2004, 2:18:05 PM (22 years ago)
Author:
harman
Message:

Added Integer array

File:
1 edited

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 */
    215
     16/******************************************************************************/
     17/*  INCLUDE FILES                                                             */
     18/******************************************************************************/
     19#include "psMemory.h"
    320#include "psArray.h"
     21#include "psLogMsg.h"
    422
    5 #include <stdlib.h>
     23/******************************************************************************/
     24/*  DEFINE STATEMENTS                                                         */
     25/******************************************************************************/
    626
    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
     57psFloatArray* psFloatArrayAlloc(int nalloc)
    858{
    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;
    1472}
    1573
    16 int psFreeFloatArray(psFloatArray *inArray)
     74psFloatArray *psFloatArrayRealloc(psFloatArray *psArr, int nalloc)
    1775{
    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;
    2188}
    2289
    23 psIntArray *psIntArrayAlloc(int nalloc)
     90void psFloatArrayFree(psFloatArray *restrict psArr)
    2491{
    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__);
    3097}
     98
     99psIntArray* 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
     116psIntArray *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
     132void 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.