Varray.c
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:1k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /* ************************************************************************
  2.  *
  3.  * Varray.c
  4.  *
  5.  *   routines to provide a generic set of functions to handle variable sized
  6.  * arrays.   originally by Jiang Wu
  7.  * ************************************************************************/
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include "Varray.h"
  11. Varray *
  12. NewVarray(size_t nobj, size_t size)
  13. /*
  14.  * NewVarray -- allocate a Varray to contain an array of val each of which
  15.  * is size valSize.  Returns the Varray if successful,
  16.  * returns NULL otherwise.
  17.  */
  18. {
  19. Varray    *result;
  20. if (nobj == 0)
  21. nobj = VARRAY_INITIAL_SIZE;
  22. result = (Varray *) malloc(sizeof(Varray));
  23. result->val = (void *) calloc(nobj, size);
  24. if (result == NULL)
  25. return NULL;
  26. result->size = size;
  27. result->nobj = 0;
  28. result->maxObj = nobj;
  29. return result;
  30. }
  31. int
  32. AppendVarray(Varray * array, void *value, CopyingFunct copy)
  33. /*
  34.  * AppendVarray -- append value to the end of array.  This function
  35.  *    returns the size of the array after the addition of
  36.  *    the new element.
  37.  */
  38. {
  39. copy(value, VARRAY_NTH(array->val, array->size, array->nobj));
  40. array->nobj++;
  41. if (array->nobj >= array->maxObj)
  42. ENLARGE_VARRAY(array, array->maxObj / 2);
  43. return array->nobj;
  44. }