IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 19502


Ignore:
Timestamp:
Sep 11, 2008, 2:22:48 PM (18 years ago)
Author:
eugene
Message:

adding psVectorAppend function

Location:
trunk/psLib/src/mathtypes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/mathtypes/psVector.c

    r18311 r19502  
    1010*  @author Joshua Hoblitt, University of Hawaii
    1111*
    12 *  @version $Revision: 1.102 $ $Name: not supported by cvs2svn $
    13 *  @date $Date: 2008-06-24 21:32:52 $
     12*  @version $Revision: 1.103 $ $Name: not supported by cvs2svn $
     13*  @date $Date: 2008-09-12 00:22:48 $
    1414*
    1515*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    2727
    2828#include "psMemory.h"
     29#include "psAbort.h"
    2930#include "psError.h"
    3031#include "psVector.h"
     
    204205
    205206    return vector;
     207}
     208
     209bool psVectorAppend(psVector *vector,...) {
     210
     211    va_list argPtr;
     212   
     213    int N = vector->n;
     214    if (vector->nalloc == vector->n) {
     215        psVectorRealloc (vector, vector->nalloc + 100);
     216    }
     217
     218    // Get the variable list parameters to pass to allocation function
     219    va_start(argPtr, vector);
     220
     221    switch(vector->type.type) {
     222    case PS_DATA_S8:
     223        vector->data.S8[N] = (psS8)va_arg(argPtr, psS32);
     224        break;
     225    case PS_DATA_S16:
     226        vector->data.S16[N] = (psS16)va_arg(argPtr, psS32);
     227        break;
     228    case PS_DATA_S32:
     229        vector->data.S32[N] = (psS32)va_arg(argPtr, psS32);
     230        break;
     231    case PS_DATA_S64:
     232        vector->data.S64[N] = (psS64)va_arg(argPtr, psS64);
     233        break;
     234    case PS_DATA_U8:
     235        vector->data.U8[N] = (psU8)va_arg(argPtr, psU32);
     236        break;
     237    case PS_DATA_U16:
     238        vector->data.U16[N] = (psU16)va_arg(argPtr, psU32);
     239        break;
     240    case PS_DATA_U32:
     241        vector->data.U32[N] = (psU32)va_arg(argPtr, psU32);
     242        break;
     243    case PS_DATA_U64:
     244        vector->data.U64[N] = (psU64)va_arg(argPtr, psU64);
     245        break;
     246    case PS_DATA_F32:
     247        vector->data.F32[N] = (psF32)va_arg(argPtr, psF64);
     248        break;
     249    case PS_DATA_F64:
     250        vector->data.F64[N] = (psF64)va_arg(argPtr, psF64);
     251        break;
     252      default:
     253        psAbort ("invalid data type for vector");
     254    }
     255
     256    vector->n ++;
     257    va_end(argPtr);
     258
     259    return true;
    206260}
    207261
  • trunk/psLib/src/mathtypes/psVector.h

    r19056 r19502  
    1010 * @author Joshua Hoblitt, University of Hawaii
    1111 *
    12  * @version $Revision: 1.72 $ $Name: not supported by cvs2svn $
    13  * @date $Date: 2008-08-14 03:18:41 $
     12 * @version $Revision: 1.73 $ $Name: not supported by cvs2svn $
     13 * @date $Date: 2008-09-12 00:22:48 $
    1414 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
    1515 */
     
    153153
    154154
     155// add one more element of the vector type, extend as needed
     156bool psVectorAppend(psVector *vector,...);
     157
    155158/** Recycle a vector.
    156159 *
Note: See TracChangeset for help on using the changeset viewer.