varray.c

来自「关系型数据库 Postgresql 6.5.2」· C语言 代码 · 共 49 行

C
49
字号
/* ************************************************************************ * * Varray.c * *	  routines to provide a generic set of functions to handle variable sized * arrays.	  originally by Jiang Wu * ************************************************************************/#include <stdio.h>#include <stdlib.h>#include "Varray.h"Varray *NewVarray(size_t nobj, size_t size)/* * NewVarray -- allocate a Varray to contain an array of val each of which *				is size valSize.  Returns the Varray if successful, *				returns NULL otherwise. */{	Varray	   *result;	if (nobj == 0)		nobj = VARRAY_INITIAL_SIZE;	result = (Varray *) malloc(sizeof(Varray));	result->val = (void *) calloc(nobj, size);	if (result == NULL)		return NULL;	result->size = size;	result->nobj = 0;	result->maxObj = nobj;	return result;}intAppendVarray(Varray * array, void *value, CopyingFunct copy)/* * AppendVarray -- append value to the end of array.  This function *				   returns the size of the array after the addition of *				   the new element. */{	copy(value, VARRAY_NTH(array->val, array->size, array->nobj));	array->nobj++;	if (array->nobj >= array->maxObj)		ENLARGE_VARRAY(array, array->maxObj / 2);	return array->nobj;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?