diff options
Diffstat (limited to 'src/H5Atest.c')
-rw-r--r-- | src/H5Atest.c | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/src/H5Atest.c b/src/H5Atest.c new file mode 100644 index 0000000..80348e8 --- /dev/null +++ b/src/H5Atest.c @@ -0,0 +1,150 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * 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. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*------------------------------------------------------------------------- + * + * Created: H5Aint.c + * Dec 18 2006 + * Quincey Koziol <koziol@hdfgroup.org> + * + * Purpose: Internal routines for managing attributes. + * + *------------------------------------------------------------------------- + */ + +/****************/ +/* Module Setup */ +/****************/ + +#define H5A_PACKAGE /*suppress error about including H5Apkg */ +#define H5A_TESTING /*suppress warning about H5A testing funcs*/ +#define H5SM_PACKAGE /*suppress error about including H5SMpkg */ +#define H5SM_TESTING /*suppress warning about H5SM testing funcs*/ + + +/***********/ +/* Headers */ +/***********/ +#include "H5private.h" /* Generic Functions */ +#include "H5Apkg.h" /* Attributes */ +#include "H5Eprivate.h" /* Error handling */ +#include "H5Iprivate.h" /* IDs */ +#include "H5SMpkg.h" /* Shared object header messages */ + + +/****************/ +/* Local Macros */ +/****************/ + + +/******************/ +/* Local Typedefs */ +/******************/ + + +/********************/ +/* Package Typedefs */ +/********************/ + + +/********************/ +/* Local Prototypes */ +/********************/ + + +/*********************/ +/* Package Variables */ +/*********************/ + + +/*****************************/ +/* Library Private Variables */ +/*****************************/ + + +/*******************/ +/* Local Variables */ +/*******************/ + + +/*------------------------------------------------------------------------- + * Function: H5A_is_shared_test + * + * Purpose: Check if an attribute is shared + * + * Return: Success: Non-negative + * Failure: Negative + * + * Programmer: Quincey Koziol + * Dec 19, 2006 + * + *------------------------------------------------------------------------- + */ +htri_t +H5A_is_shared_test(hid_t attr_id) +{ + H5A_t *attr; /* Attribute object for ID */ + htri_t ret_value; /* Return value */ + + FUNC_ENTER_NOAPI_NOINIT(H5A_is_shared_test) + + /* Check arguments */ + if(NULL == (attr = (H5A_t *)H5I_object_verify(attr_id, H5I_ATTR))) + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an attribute") + + /* Check if attribute is shared */ + ret_value = H5O_attr_is_shared(attr); + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5A_is_shared_test() */ + + +/*------------------------------------------------------------------------- + * Function: H5A_get_shared_rc_test + * + * Purpose: Retrieve the refcount for a shared attribute + * + * Return: Success: Non-negative + * Failure: Negative + * + * Programmer: Quincey Koziol + * Dec 19, 2006 + * + *------------------------------------------------------------------------- + */ +herr_t +H5A_get_shared_rc_test(hid_t attr_id, hsize_t *ref_count) +{ + H5A_t *attr; /* Attribute object for ID */ + herr_t ret_value = SUCCEED; /* Return value */ + + FUNC_ENTER_NOAPI_NOINIT(H5A_get_shared_rc_test) + + /* Check arguments */ + if(NULL == (attr = (H5A_t *)H5I_object_verify(attr_id, H5I_ATTR))) + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an attribute") + + /* Sanity check */ + HDassert(H5O_attr_is_shared(attr)); + + /* Retrieve ref count for shared attribute */ + if(H5SM_get_refcount_test(attr->oloc.file, H5AC_ind_dxpl_id, H5O_ATTR_ID, + &attr->sh_loc, ref_count) < 0) + HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't retrieve shared message ref count") + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5A_get_shared_rc_test() */ + |