Files
hdf5/src/H5HLprfx.c
Quincey Koziol ba087ce2b5 Clean up private / package / static namespace issues (function naming, which
header file, FUNC_ENTER / LEAVE, etc).  Removed remaining personal email
addresses from library source code (still needs cleaned from other directories).
Misc. warning, style, and whitespace cleanup.
2020-08-22 14:00:44 -05:00

165 lines
4.6 KiB
C
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright by The HDF Group. *
* 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 COPYING file, which can be found at the root of the source code *
* distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
* If you do not have access to either file, you may request a copy from *
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*-------------------------------------------------------------------------
*
* Created: H5HLprfx.c
* Summer 2012
* Dana Robinson
*
* Purpose: Prefix routines for local heaps.
*
*-------------------------------------------------------------------------
*/
/****************/
/* Module Setup */
/****************/
#include "H5HLmodule.h" /* This source code file is part of the H5HL module */
/***********/
/* Headers */
/***********/
#include "H5private.h" /* Generic Functions */
#include "H5Eprivate.h" /* Error handling */
#include "H5FLprivate.h" /* Free lists */
#include "H5HLpkg.h" /* Local Heaps */
/****************/
/* Local Macros */
/****************/
/******************/
/* Local Typedefs */
/******************/
/********************/
/* Package Typedefs */
/********************/
/********************/
/* Local Prototypes */
/********************/
/*********************/
/* Package Variables */
/*********************/
/*****************************/
/* Library Private Variables */
/*****************************/
/*******************/
/* Local Variables */
/*******************/
/* Declare a free list to manage the H5HL_prfx_t struct */
H5FL_DEFINE_STATIC(H5HL_prfx_t);
/*-------------------------------------------------------------------------
* Function: H5HL__prfx_new
*
* Purpose: Create a new local heap prefix object
*
* Return: Success: non-NULL pointer to new local heap prefix
* Failure: NULL
*
* Programmer: Quincey Koziol
* Oct 12 2008
*
*-------------------------------------------------------------------------
*/
BEGIN_FUNC(PKG, ERR,
H5HL_prfx_t *, NULL, NULL,
H5HL__prfx_new(H5HL_t *heap))
H5HL_prfx_t *prfx = NULL; /* New local heap prefix */
/* check arguments */
HDassert(heap);
/* Allocate new local heap prefix */
if(NULL == (prfx = H5FL_CALLOC(H5HL_prfx_t)))
H5E_THROW(H5E_CANTALLOC, "memory allocation failed for local heap prefix")
/* Increment ref. count on heap data structure */
if(FAIL == H5HL__inc_rc(heap))
H5E_THROW(H5E_CANTINC, "can't increment heap ref. count")
/* Link the heap & the prefix */
prfx->heap = heap;
heap->prfx = prfx;
/* Set the return value */
ret_value = prfx;
CATCH
/* Ensure that the prefix memory is deallocated on errors */
if(!ret_value && prfx != NULL)
/* H5FL_FREE always returns NULL so we can't check for errors */
prfx = H5FL_FREE(H5HL_prfx_t, prfx);
END_FUNC(PKG) /* end H5HL__prfx_new() */
/*-------------------------------------------------------------------------
* Function: H5HL__prfx_dest
*
* Purpose: Destroy a local heap prefix object
*
* Return: SUCCEED/FAIL
*
* Programmer: Quincey Koziol
* Oct 12 2008
*
*-------------------------------------------------------------------------
*/
BEGIN_FUNC(PKG, ERR,
herr_t, SUCCEED, FAIL,
H5HL__prfx_dest(H5HL_prfx_t *prfx))
/* check arguments */
HDassert(prfx);
/* Check if prefix was initialized */
if(prfx->heap) {
/* Unlink prefix from heap */
prfx->heap->prfx = NULL;
/* Decrement ref. count on heap data structure */
if(FAIL == H5HL__dec_rc(prfx->heap))
H5E_THROW(H5E_CANTDEC, "can't decrement heap ref. count")
/* Unlink heap from prefix */
prfx->heap = NULL;
} /* end if */
CATCH
/* Free prefix memory */
/* H5FL_FREE always returns NULL so we can't check for errors */
prfx = H5FL_FREE(H5HL_prfx_t, prfx);
END_FUNC(PKG) /* end H5HL__prfx_dest() */