summaryrefslogtreecommitdiffstats
path: root/src/H5HGprivate.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5HGprivate.h')
-rw-r--r--src/H5HGprivate.h81
1 files changed, 6 insertions, 75 deletions
diff --git a/src/H5HGprivate.h b/src/H5HGprivate.h
index 9546fc1..4915c13 100644
--- a/src/H5HGprivate.h
+++ b/src/H5HGprivate.h
@@ -19,8 +19,11 @@
#ifndef _H5HGprivate_H
#define _H5HGprivate_H
+/* Include package's public header */
#include "H5HGpublic.h"
-#include "H5Fprivate.h"
+
+/* Private headers needed by this file. */
+#include "H5Fprivate.h" /* File access */
/*
* Each collection has a magic number for some redundancy.
@@ -28,89 +31,17 @@
#define H5HG_MAGIC "GCOL"
#define H5HG_SIZEOF_MAGIC 4
-/*
- * Global heap collection version.
- */
-#define H5HG_VERSION 1
-
-/*
- * Pad all global heap messages to a multiple of eight bytes so we can load
- * the entire collection into memory and operate on it there. Eight should
- * be sufficient for machines that have alignment constraints because our
- * largest data type is eight bytes.
- */
-#define H5HG_ALIGNMENT 8
-#define H5HG_ALIGN(X) (H5HG_ALIGNMENT*(((X)+H5HG_ALIGNMENT-1)/ \
- H5HG_ALIGNMENT))
-#define H5HG_ISALIGNED(X) ((X)==H5HG_ALIGN(X))
-
-/*
- * All global heap collections are at least this big. This allows us to read
- * most collections with a single read() since we don't have to read a few
- * bytes of header to figure out the size. If the heap is larger than this
- * then a second read gets the rest after we've decoded the header.
- */
-#define H5HG_MINSIZE 4096
-
-/*
- * Maximum length of the CWFS list, the list of remembered collections that
- * have free space.
- */
-#define H5HG_NCWFS 16
-
-/*
- * The maximum number of links allowed to a global heap object.
- */
-#define H5HG_MAXLINK 65535
-
-/*
- * The size of the collection header, always a multiple of the alignment so
- * that the stuff that follows the header is aligned.
- */
-#define H5HG_SIZEOF_HDR(f) \
- H5HG_ALIGN(4 + /*magic number */ \
- 1 + /*version number */ \
- 3 + /*reserved */ \
- H5F_SIZEOF_SIZE(f)) /*collection size */
-
-/*
- * The overhead associated with each object in the heap, always a multiple of
- * the alignment so that the stuff that follows the header is aligned.
- */
-#define H5HG_SIZEOF_OBJHDR(f) \
- H5HG_ALIGN(2 + /*object id number */ \
- 2 + /*reference count */ \
- 4 + /*reserved */ \
- H5F_SIZEOF_SIZE(f)) /*object data size */
-
-/*
- * The initial guess for the number of messages in a collection. We assume
- * that all objects in that collection are zero length, giving the maximum
- * possible number of objects in the collection. The collection itself has
- * some overhead and each message has some overhead. The `+2' accounts for
- * rounding and for the free space object.
- */
-#define H5HG_NOBJS(f,z) (int)((((z)-H5HG_SIZEOF_HDR(f))/ \
- H5HG_SIZEOF_OBJHDR(f)+2))
-
-/*
- * Makes a global heap object pointer undefined, or checks whether one is
- * defined.
- */
-#define H5HG_undef(HGP) ((HGP)->idx=0)
-#define H5HG_defined(HGP) ((HGP)->idx!=0)
-
+/* Information to locate object in global heap */
typedef struct H5HG_t {
haddr_t addr; /*address of collection */
unsigned idx; /*object ID within collection */
} H5HG_t;
+/* Typedef for heap in memory (defined in H5HG.c) */
typedef struct H5HG_heap_t H5HG_heap_t;
-H5_DLL H5HG_heap_t *H5HG_create(H5F_t *f, hid_t dxpl_id, size_t size);
H5_DLL herr_t H5HG_insert(H5F_t *f, hid_t dxpl_id, size_t size, void *obj,
H5HG_t *hobj/*out*/);
-H5_DLL void *H5HG_peek(H5F_t *f, hid_t dxpl_id, H5HG_t *hobj);
H5_DLL void *H5HG_read(H5F_t *f, hid_t dxpl_id, H5HG_t *hobj, void *object);
H5_DLL int H5HG_link(H5F_t *f, hid_t dxpl_id, H5HG_t *hobj, int adjust);
H5_DLL herr_t H5HG_remove(H5F_t *f, hid_t dxpl_id, H5HG_t *hobj);