Пример #1
0
int
dup_NC_vararrayV(NC_vararray *ncap, const NC_vararray *ref)
{
	int status = NC_NOERR;

	assert(ref != NULL);
	assert(ncap != NULL);

	if(ref->nelems != 0)
	{
		const size_t sz = ref->nelems * sizeof(NC_var *);
		ncap->value = (NC_var **) malloc(sz);
		if(ncap->value == NULL)
			return NC_ENOMEM;
		(void) memset(ncap->value, 0, sz);
		ncap->nalloc = ref->nelems;
	}

	ncap->nelems = 0;
	{
		NC_var **vpp = ncap->value;
		const NC_var **drpp = (const NC_var **)ref->value;
		NC_var *const *const end = &vpp[ref->nelems];
		for( /*NADA*/; vpp < end; drpp++, vpp++, ncap->nelems++)
		{
			*vpp = dup_NC_var(*drpp);
			if(*vpp == NULL)
			{
				status = NC_ENOMEM;
				break;
			}
		}
	}

	if(status != NC_NOERR)
	{
		free_NC_vararrayV(ncap);
		return status;
	}

	assert(ncap->nelems == ref->nelems);

	return NC_NOERR;
}
Пример #2
0
int
ncmpii_dup_NC_vararrayV(NC_vararray *ncap, const NC_vararray *ref)
{
        int status = NC_NOERR;

        assert(ref != NULL);
        assert(ncap != NULL);

        if(ref->ndefined != 0)
        {
                const MPI_Offset sz = ref->ndefined * sizeof(NC_var *);
                ncap->value = (NC_var **) NCI_Malloc(sz);
                if(ncap->value == NULL)
                        return NC_ENOMEM;
                (void) memset(ncap->value, 0, sz);
                ncap->nalloc = ref->ndefined;
        }

        ncap->ndefined = 0;
        {
                NC_var **vpp = ncap->value;
                const NC_var **drpp = (const NC_var **)ref->value;
                NC_var *const *const end = &vpp[ref->ndefined];
                for( /*NADA*/; vpp < end; drpp++, vpp++, ncap->ndefined++)
                {
                        *vpp = dup_NC_var(*drpp);
                        if(*vpp == NULL)
                        {
                                status = NC_ENOMEM;
                                break;
                        }
                }
        }

        if(status != NC_NOERR)
        {
                ncmpii_free_NC_vararrayV(ncap);
                return status;
        }

        assert(ncap->ndefined == ref->ndefined);

        return NC_NOERR;
}