summaryrefslogtreecommitdiffstats
path: root/src/H5HGprivate.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5HGprivate.h')
-rw-r--r--src/H5HGprivate.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/H5HGprivate.h b/src/H5HGprivate.h
new file mode 100644
index 0000000..aebb3f8
--- /dev/null
+++ b/src/H5HGprivate.h
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 1998 NCSA
+ * All rights reserved.
+ *
+ * Programmer: Robb Matzke <matzke@llnl.gov>
+ * Friday, March 27, 1998
+ */
+#ifndef _H5HGprivate_H
+#define _H5HGprivate_H
+
+#include <H5HGpublic.h>
+
+/*
+ * Each collection has a magic number for some redundancy.
+ */
+#define H5HG_MAGIC "GCOL"
+#define H5HG_SIZEOF_MAGIC 4
+
+/*
+ * Global heap collection version.
+ */
+#define H5HG_VERSION 1
+
+/*
+ * 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.
+ */
+#define H5HG_SIZEOF_HDR(f) (4 + /*magic number */ \
+ 1 + /*version number */ \
+ 3 + /*reserved */ \
+ H5F_SIZEOF_SIZE(f)) /*collection size */
+
+/*
+ * The overhead associated with each object in the heap.
+ */
+#define H5HG_SIZEOF_OBJHDR(f) (2 + /*reference count */ \
+ 2 + /*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.
+ */
+#define H5HG_NOBJS(f,z) (int)((((z)-H5HG_SIZEOF_HDR(f))/ \
+ H5HG_SIZEOF_OBJHDR(f)+1))
+
+typedef struct H5HG_t H5HG_t;
+
+herr_t H5HG_create (H5F_t *f, size_t size);
+herr_t H5HG_insert (H5F_t *f, size_t size, void *obj, H5HG_t *hobj/*out*/);
+void *H5HG_peek (H5F_t *f, H5HG_t *hobj);
+void *H5HG_read (H5F_t *f, H5HG_t *hobj, void *object);
+intn H5HG_link (H5F_t *f, H5HG_t *hobj, intn adjust);
+herr_t H5HG_remove (H5F_t *f, H5HG_t *hobj);
+herr_t H5HG_debug(H5F_t *f, const haddr_t *addr, FILE *stream, intn indent,
+ intn fwidth);
+
+#endif