1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2 * Copyright by The HDF Group. * 3 * Copyright by the Board of Trustees of the University of Illinois. * 4 * All rights reserved. * 5 * * 6 * This file is part of HDF5. The full HDF5 copyright notice, including * 7 * terms governing use, modification, and redistribution, is contained in * 8 * the files COPYING and Copyright.html. COPYING can be found at the root * 9 * of the source code distribution tree; Copyright.html can be found at the * 10 * root level of an installed copy of the electronic HDF5 document set and * 11 * is linked from the top-level documents page. It can also be found at * 12 * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * 13 * access to either file, you may request a copy from help@hdfgroup.org. * 14 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 16 /*------------------------------------------------------------------------- 17 * 18 * Created: H5HLprivate.h 19 * Jul 16 1997 20 * Robb Matzke <matzke@llnl.gov> 21 * 22 * Purpose: 23 * 24 * Modifications: 25 * 26 *------------------------------------------------------------------------- 27 */ 28 #ifndef _H5HLprivate_H 29 #define _H5HLprivate_H 30 31 /* Include package's public header */ 32 #include "H5HLpublic.h" 33 34 /* Private headers needed by this file. */ 35 #include "H5private.h" /* Generic Functions */ 36 #include "H5ACprivate.h" /* Metadata cache */ 37 #include "H5Fprivate.h" /* File access */ 38 39 /* 40 * Feature: Define H5HL_DEBUG on the compiler command line if you want to 41 * diagnostic messages from this layer. 42 */ 43 #ifdef NDEBUG 44 # undef H5HL_DEBUG 45 #endif 46 47 #define H5HL_ALIGN(X) ((((unsigned)X)+7)&(unsigned)(~0x07)) /*align on 8-byte boundary */ 48 49 #define H5HL_SIZEOF_FREE(F) \ 50 H5HL_ALIGN(H5F_SIZEOF_SIZE (F) + /*ptr to next free block */ \ 51 H5F_SIZEOF_SIZE (F)) /*size of this free block */ 52 53 /****************************/ 54 /* Library Private Typedefs */ 55 /****************************/ 56 57 /* Typedef for local heap in memory (defined in H5HLpkg.h) */ 58 typedef struct H5HL_t H5HL_t; 59 60 /* 61 * Library prototypes... 62 */ 63 H5_DLL herr_t H5HL_create(H5F_t *f, hid_t dxpl_id, size_t size_hint, haddr_t *addr/*out*/); 64 H5_DLL H5HL_t *H5HL_protect(H5F_t *f, hid_t dxpl_id, haddr_t addr, H5AC_protect_t rw); 65 H5_DLL void *H5HL_offset_into(const H5HL_t *heap, size_t offset); 66 H5_DLL herr_t H5HL_remove(H5F_t *f, hid_t dxpl_id, H5HL_t *heap, size_t offset, 67 size_t size); 68 H5_DLL herr_t H5HL_unprotect(H5HL_t *heap); 69 H5_DLL size_t H5HL_insert(H5F_t *f, hid_t dxpl_id, H5HL_t *heap, size_t size, 70 const void *buf); 71 H5_DLL herr_t H5HL_delete(H5F_t *f, hid_t dxpl_id, haddr_t addr); 72 H5_DLL herr_t H5HL_get_size(H5F_t *f, hid_t dxpl_id, haddr_t addr, size_t *size); 73 H5_DLL herr_t H5HL_heapsize(H5F_t *f, hid_t dxpl_id, haddr_t addr, hsize_t *heap_size); 74 75 /* Debugging functions */ 76 H5_DLL herr_t H5HL_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE * stream, int indent, 77 int fwidth); 78 #endif 79 80