#include <hdf5.h>
#define FILE "dsplit"

main() {

    hid_t       file_id, dataset_id, dataspace_id, pid;  /* identifiers */
    hid_t       meta_plist_id, raw_plist_id;
    hsize_t     dims[2];
    herr_t      status;

    H5FD_mem_t      mt, memb_map[H5FD_MEM_NTYPES];
    hid_t           memb_fapl[H5FD_MEM_NTYPES];
    const char     *memb_name[H5FD_MEM_NTYPES];
    char            meta_name[1024], raw_name[1024];
    haddr_t         memb_addr[H5FD_MEM_NTYPES];

    meta_plist_id  = H5Pcreate (H5P_FILE_ACCESS);
    raw_plist_id  = H5Pcreate (H5P_FILE_ACCESS);

    for (mt=H5FD_MEM_DEFAULT; mt<H5FD_MEM_NTYPES; mt=(H5FD_mem_t)(mt+1)) {
       memb_map[mt] = (H5FD_MEM_DRAW==mt?mt:H5FD_MEM_SUPER);
       memb_fapl[mt] = -1;
       memb_name[mt] = NULL;
       memb_addr[mt] = HADDR_UNDEF;
    }

    /* The file access properties */
    memb_fapl[H5FD_MEM_SUPER] = meta_plist_id;
    memb_fapl[H5FD_MEM_DRAW] = raw_plist_id;

    /* Specify to put the meta data in the 
       directory 'meta/' 
    */
    strcpy(meta_name, "meta/%s.meta");
    memb_name[H5FD_MEM_SUPER] = meta_name;

    /* Specify to put the raw data in the 
       directory, 'raw/'                  
    */
    strcpy(raw_name, "raw/%s.raw");
    memb_name[H5FD_MEM_DRAW] = raw_name;

    memb_addr[H5FD_MEM_SUPER] = 0;
    memb_addr[H5FD_MEM_DRAW] = HADDR_MAX/2;

    pid = H5Pcreate (H5P_FILE_ACCESS);
    status=H5Pset_fapl_multi(pid, memb_map, memb_fapl, memb_name, memb_addr, 1);

    file_id = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, pid);

    /* Create the data space for the dataset. */
    dims[0] = 4; 
    dims[1] = 6; 
    dataspace_id = H5Screate_simple(2, dims, NULL);

    /* Create the dataset. */
    dataset_id = H5Dcreate(file_id, "/dset", H5T_STD_I32BE, dataspace_id, H5P_DEFAULT);

    status = H5Pclose (meta_plist_id);
    status = H5Pclose (raw_plist_id);
    status = H5Dclose(dataset_id);
    status = H5Sclose(dataspace_id);
    status = H5Pclose (pid);
    status = H5Fclose(file_id);
}

