1997-07-31 05:17:56 +08:00
|
|
|
|
/*-------------------------------------------------------------------------
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Copyright (C) 1997 National Center for Supercomputing Applications.
|
1997-07-31 05:17:56 +08:00
|
|
|
|
* All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Created: theap.c
|
|
|
|
|
* Jul 17 1997
|
|
|
|
|
* Robb Matzke <robb@maya.nuance.com>
|
1997-07-31 05:17:56 +08:00
|
|
|
|
*
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Purpose:
|
1997-07-31 05:17:56 +08:00
|
|
|
|
*
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Modifications:
|
1997-07-31 05:17:56 +08:00
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
1997-08-16 00:53:11 +08:00
|
|
|
|
#include <testhdf5.h>
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1997-08-16 00:53:11 +08:00
|
|
|
|
#include <H5private.h>
|
1998-03-18 06:46:27 +08:00
|
|
|
|
#include <H5Iprivate.h>
|
1997-08-16 00:53:11 +08:00
|
|
|
|
#include <H5ACprivate.h>
|
1998-02-26 03:13:49 +08:00
|
|
|
|
#include <H5Pprivate.h>
|
1997-08-16 00:53:11 +08:00
|
|
|
|
#include <H5Fprivate.h>
|
|
|
|
|
#include <H5Hprivate.h>
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-01-17 06:23:43 +08:00
|
|
|
|
#define NOBJS 40
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Function: test_heap
|
1997-07-31 05:17:56 +08:00
|
|
|
|
*
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Purpose: Test name and object heaps.
|
1997-07-31 05:17:56 +08:00
|
|
|
|
*
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Return: void
|
1997-07-31 05:17:56 +08:00
|
|
|
|
*
|
1998-01-17 06:23:43 +08:00
|
|
|
|
* Programmer: Robb Matzke
|
|
|
|
|
* robb@maya.nuance.com
|
|
|
|
|
* Jul 17 1997
|
1997-07-31 05:17:56 +08:00
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
void
|
1998-01-17 06:23:43 +08:00
|
|
|
|
test_heap(void)
|
1997-07-31 05:17:56 +08:00
|
|
|
|
{
|
1998-01-17 06:23:43 +08:00
|
|
|
|
int i, j;
|
|
|
|
|
hid_t fid;
|
|
|
|
|
H5F_t *f;
|
|
|
|
|
haddr_t heap_addr;
|
|
|
|
|
char buf[NOBJS + 8];
|
|
|
|
|
const char *s;
|
|
|
|
|
size_t obj[NOBJS];
|
|
|
|
|
herr_t status;
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-01-17 06:23:43 +08:00
|
|
|
|
MESSAGE(5, ("Testing Heaps\n"));
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-01-17 06:23:43 +08:00
|
|
|
|
/* Create the file */
|
1998-02-26 03:13:49 +08:00
|
|
|
|
fid = H5Fcreate("theap.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
|
1998-01-17 06:23:43 +08:00
|
|
|
|
CHECK(fid, FAIL, "H5Fcreate");
|
1998-03-18 06:46:27 +08:00
|
|
|
|
f = H5I_object(fid);
|
|
|
|
|
CHECK(f, NULL, "H5I_object");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-01-17 06:23:43 +08:00
|
|
|
|
/* Create a new heap */
|
|
|
|
|
status = H5H_create(f, H5H_LOCAL, 0, &heap_addr /*out */ );
|
|
|
|
|
CHECK_I(status, "H5H_new");
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-01-17 06:23:43 +08:00
|
|
|
|
/* Add stuff to the heap */
|
|
|
|
|
for (i = 0; i < NOBJS; i++) {
|
|
|
|
|
sprintf(buf, "%03d-", i);
|
|
|
|
|
for (j = 4; j < i; j++)
|
|
|
|
|
buf[j] = '0' + j % 10;
|
|
|
|
|
if (j > 4)
|
|
|
|
|
buf[j] = '\0';
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-01-17 06:23:43 +08:00
|
|
|
|
obj[i] = H5H_insert(f, &heap_addr, strlen(buf) + 1, buf);
|
1998-02-10 03:37:40 +08:00
|
|
|
|
assert ((size_t)(-1)!=obj[i]);
|
1998-01-17 06:23:43 +08:00
|
|
|
|
}
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-01-17 06:23:43 +08:00
|
|
|
|
/* Flush the cache and invalidate everything */
|
|
|
|
|
H5AC_flush(f, NULL, 0, TRUE);
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-01-17 06:23:43 +08:00
|
|
|
|
/* Read the objects back out */
|
|
|
|
|
for (i = 0; i < NOBJS; i++) {
|
|
|
|
|
s = H5H_peek(f, &heap_addr, obj[i]);
|
|
|
|
|
MESSAGE(8, ("object is `%s'\n", s));
|
|
|
|
|
}
|
1997-07-31 05:17:56 +08:00
|
|
|
|
|
1998-01-17 06:23:43 +08:00
|
|
|
|
/* Close the file */
|
|
|
|
|
H5Fclose(fid);
|
|
|
|
|
}
|