mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-01-18 15:15:56 +08:00
f859cb732b
* fixed missed closing of a dataset * fixed missed closing of a dataset * fixed typo in error return * Committing clang-format changes * minor edits * code format * Committing clang-format changes * code format * minor edit * switched from using MPI_count, to actual bytes written for H5FD_mpio_debug rw debugging * Committing clang-format changes * changed size_i in printf to reflect the I/O. * Committing clang-format changes * Fixed seg fault with xlf on BE with -qintsize=8 * fixed error function string * spelling corrections via codespell, added new spell check github actions * Committing clang-format changes * misc * misc * misc * misc * misc * misc * misc * misc * misc * misc * misc * misc * misc * misc * Committing clang-format changes * misc * misc * misc * misc * misc * misc * Committing clang-format changes * misc * work around for https://github.com/codespell-project/codespell/issues/2137 * misc * added missing file * misc * misc. * misc * switch to using Codespell with GitHub Actions * misc. * misc. * fixed more sp errors * Fix new typos found by codespell. * fixed proceed with precede * fixed variable in fortran test * fixed minnum * updated spelling list Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Larry Knox <lrknox@hdfgroup.org>
107 lines
3.8 KiB
C
107 lines
3.8 KiB
C
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
* 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://www.hdfgroup.org/licenses. *
|
|
* If you do not have access to either file, you may request a copy from *
|
|
* help@hdfgroup.org. *
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
|
|
/*
|
|
* Module Info: This module contains the functionality for opaque
|
|
* datatypes in the H5T interface.
|
|
*/
|
|
|
|
#include "H5Tmodule.h" /* This source code file is part of the H5T module */
|
|
|
|
#include "H5private.h" /* Generic Functions */
|
|
#include "H5Eprivate.h" /* Error handling */
|
|
#include "H5Iprivate.h" /* IDs */
|
|
#include "H5MMprivate.h" /* Memory management */
|
|
#include "H5Tpkg.h" /* Datatypes */
|
|
|
|
/*-------------------------------------------------------------------------
|
|
* Function: H5Tset_tag
|
|
*
|
|
* Purpose: Tag an opaque datatype with a unique ASCII identifier.
|
|
*
|
|
* Return: Non-negative on success/Negative on failure
|
|
*
|
|
* Programmer: Robb Matzke
|
|
* Thursday, May 20, 1999
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
herr_t
|
|
H5Tset_tag(hid_t type_id, const char *tag)
|
|
{
|
|
H5T_t *dt = NULL;
|
|
herr_t ret_value = SUCCEED; /* Return value */
|
|
|
|
FUNC_ENTER_API(FAIL)
|
|
H5TRACE2("e", "i*s", type_id, tag);
|
|
|
|
/* Check args */
|
|
if (NULL == (dt = (H5T_t *)H5I_object_verify(type_id, H5I_DATATYPE)))
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type")
|
|
if (H5T_STATE_TRANSIENT != dt->shared->state)
|
|
HGOTO_ERROR(H5E_ARGS, H5E_CANTINIT, FAIL, "data type is read-only")
|
|
while (dt->shared->parent)
|
|
dt = dt->shared->parent; /*defer to parent*/
|
|
if (H5T_OPAQUE != dt->shared->type)
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an opaque data type")
|
|
if (!tag)
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no tag")
|
|
if (HDstrlen(tag) >= H5T_OPAQUE_TAG_MAX)
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "tag too long")
|
|
|
|
/* Commit */
|
|
H5MM_xfree(dt->shared->u.opaque.tag);
|
|
dt->shared->u.opaque.tag = H5MM_strdup(tag);
|
|
|
|
done:
|
|
FUNC_LEAVE_API(ret_value)
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------
|
|
* Function: H5Tget_tag
|
|
*
|
|
* Purpose: Get the tag associated with an opaque datatype.
|
|
*
|
|
* Return: A pointer to an allocated string. The caller should free
|
|
* the string. NULL is returned for errors.
|
|
*
|
|
* Programmer: Robb Matzke
|
|
* Thursday, May 20, 1999
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
char *
|
|
H5Tget_tag(hid_t type_id)
|
|
{
|
|
H5T_t *dt = NULL;
|
|
char * ret_value;
|
|
|
|
FUNC_ENTER_API(NULL)
|
|
H5TRACE1("*s", "i", type_id);
|
|
|
|
/* Check args */
|
|
if (NULL == (dt = (H5T_t *)H5I_object_verify(type_id, H5I_DATATYPE)))
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a data type")
|
|
while (dt->shared->parent)
|
|
dt = dt->shared->parent; /*defer to parent*/
|
|
if (H5T_OPAQUE != dt->shared->type)
|
|
HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, NULL, "operation not defined for data type class")
|
|
|
|
/* result */
|
|
if (NULL == (ret_value = H5MM_strdup(dt->shared->u.opaque.tag)))
|
|
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
|
|
|
|
done:
|
|
FUNC_LEAVE_API(ret_value)
|
|
}
|