summaryrefslogtreecommitdiffstats
path: root/src/H5HGpkg.h
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2003-07-09 18:00:43 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2003-07-09 18:00:43 (GMT)
commit839de1e367efcc7d56cc71ff96a5e7cee8507f16 (patch)
treea4f4a5a2eb979517f42580fda9c011b3f535389e /src/H5HGpkg.h
parent2bbf08c3fc35ca5d60a7618c73069af3e7476e85 (diff)
downloadhdf5-839de1e367efcc7d56cc71ff96a5e7cee8507f16.zip
hdf5-839de1e367efcc7d56cc71ff96a5e7cee8507f16.tar.gz
hdf5-839de1e367efcc7d56cc71ff96a5e7cee8507f16.tar.bz2
[svn-r7189] Purpose:
Code cleanup Description: Break some of the "debugging" routines into their own module, so they aren't pulled into every executable, which certainly isn't going to use them. Platforms tested: h5committested
Diffstat (limited to 'src/H5HGpkg.h')
-rw-r--r--src/H5HGpkg.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/H5HGpkg.h b/src/H5HGpkg.h
new file mode 100644
index 0000000..ee029c4
--- /dev/null
+++ b/src/H5HGpkg.h
@@ -0,0 +1,92 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * 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. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ * Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
+ * Wednesday, July 9, 2003
+ *
+ * Purpose: This file contains declarations which are visible
+ * only within the H5HG package. Source files outside the
+ * H5HG package should include H5HGprivate.h instead.
+ */
+#ifndef H5HG_PACKAGE
+#error "Do not include this file outside the H5HG package!"
+#endif
+
+#ifndef _H5HGpkg_H
+#define _H5HGpkg_H
+
+/* Get package's private header */
+#include "H5HGprivate.h"
+
+/* Other private headers needed by this file */
+
+/*****************************/
+/* Package Private Variables */
+/*****************************/
+
+/* The cache subclass */
+H5_DLLVAR const H5AC_class_t H5AC_GHEAP[1];
+
+/**************************/
+/* Package Private Macros */
+/**************************/
+
+/*
+ * 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))
+
+/*
+ * 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 */
+
+/****************************/
+/* Package Private Typedefs */
+/****************************/
+
+typedef struct H5HG_obj_t {
+ int nrefs; /*reference count */
+ size_t size; /*total size of object */
+ uint8_t *begin; /*ptr to object into heap->chunk*/
+} H5HG_obj_t;
+
+struct H5HG_heap_t {
+ H5AC_info_t cache_info; /* Information for H5AC cache functions, _must_ be */
+ /* first field in structure */
+ haddr_t addr; /*collection address */
+ size_t size; /*total size of collection */
+ uint8_t *chunk; /*the collection, incl. header */
+ size_t nalloc; /*numb object slots allocated */
+ H5HG_obj_t *obj; /*array of object descriptions */
+};
+
+/******************************/
+/* Package Private Prototypes */
+/******************************/
+
+#endif
+