hdf5/tools/h5repack/testh5repack_layout.c
Pedro Vicente Nunes 1f80ae6a89 [svn-r8323] Purpose:
bug fix, new tests

Description:
added a couple of #ifdefs to check if a specific filter is available for read
added more tests
the h5tools check filters had a mismatched filter variable

Solution:

Platforms tested:
linux, with several filter configurations (all, some , none )

Misc. update:
2004-04-08 10:59:43 -05:00

109 lines
3.4 KiB
C

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright by the Board of Trustees of the University of Illinois. *
* All rights reserved. *
* *
* This file is part of HDF5. The full HDF5 copyright notice, including *
* terms governing use, modification, and redistribution, is contained in *
* the files COPYING and Copyright.html. COPYING can be found at the root *
* of the source code distribution tree; Copyright.html can be found at the *
* root level of an installed copy of the electronic HDF5 document set and *
* is linked from the top-level documents page. It can also be found at *
* http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
* access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "hdf5.h"
#include "h5test.h"
#include "h5repack.h"
#define DIM1 40
#define DIM2 20
#define CDIM1 20
#define CDIM2 10
#define RANK 2
/*-------------------------------------------------------------------------
* Function: make_layout
*
* Purpose: make several datasets with several layouts in location LOC_ID
*
*-------------------------------------------------------------------------
*/
int make_layout(hid_t loc_id)
{
hid_t dcpl; /* dataset creation property list */
hid_t sid; /* dataspace ID */
hsize_t dims[RANK]={DIM1,DIM2};
hsize_t chunk_dims[RANK]={CDIM1,CDIM2};
int buf[DIM1][DIM2];
int i, j, n;
for (i=n=0; i<DIM1; i++){
for (j=0; j<DIM2; j++){
buf[i][j]=n++;
}
}
/*-------------------------------------------------------------------------
* make several dataset with several layout options
*-------------------------------------------------------------------------
*/
/* create a space */
if((sid = H5Screate_simple(RANK, dims, NULL))<0)
return -1;
/* create a dataset creation property list; the same DCPL is used for all dsets */
if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
goto out;
/*-------------------------------------------------------------------------
* H5D_COMPACT
*-------------------------------------------------------------------------
*/
if(H5Pset_layout (dcpl,H5D_COMPACT)<0)
goto out;
if (make_dset(loc_id,"dset_compact",sid,dcpl,buf)<0)
goto out;
/*-------------------------------------------------------------------------
* H5D_COMPACT
*-------------------------------------------------------------------------
*/
if(H5Pset_layout (dcpl,H5D_CONTIGUOUS)<0)
goto out;
if (make_dset(loc_id,"dset_contiguous",sid,dcpl,buf)<0)
goto out;
/*-------------------------------------------------------------------------
* H5D_CHUNKED
*-------------------------------------------------------------------------
*/
if(H5Pset_chunk(dcpl, RANK, chunk_dims)<0)
goto out;
if (make_dset(loc_id,"dset_chunk",sid,dcpl,buf)<0)
goto out;
/*-------------------------------------------------------------------------
* close space and dcpl
*-------------------------------------------------------------------------
*/
if(H5Sclose(sid)<0)
goto out;
if(H5Pclose(dcpl)<0)
goto out;
return 0;
out:
H5E_BEGIN_TRY {
H5Pclose(dcpl);
H5Sclose(sid);
} H5E_END_TRY;
return -1;
}