diff options
Diffstat (limited to 'src/H5Ofphdf5.c')
-rw-r--r-- | src/H5Ofphdf5.c | 553 |
1 files changed, 0 insertions, 553 deletions
diff --git a/src/H5Ofphdf5.c b/src/H5Ofphdf5.c deleted file mode 100644 index 88802ab..0000000 --- a/src/H5Ofphdf5.c +++ /dev/null @@ -1,553 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * 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. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* $Id$ */ - -#define H5P_PACKAGE /* prevent warning from including H5Ppkg.h */ -#define H5S_PACKAGE /* prevent warning from including H5Spkg.h */ - -#include "H5private.h" /* Generic functions */ -#include "H5Eprivate.h" /* Error handling */ -#include "H5FLprivate.h" /* Free lists */ -#include "H5MMprivate.h" /* Memory management */ -#include "H5Oprivate.h" /* Object headers */ -#include "H5Ppkg.h" /* Property lists */ -#include "H5Rprivate.h" /* References */ -#include "H5Spkg.h" /* Dataspace functions */ - -#if defined (WIN32) && !defined (__MWERKS__) -#include <sys/types.h> -#include <sys/timeb.h> -#endif - -#ifdef H5_HAVE_FPHDF5 - -/* Pablo mask */ -#define PABLO_MASK H5O_fphdf5_mask - -/* local prototypes */ -static void *H5O_fphdf5_decode(H5F_t *f, hid_t dxpl_id, const uint8_t *p, H5O_shared_t *sh); -static herr_t H5O_fphdf5_encode(H5F_t *f, uint8_t *p, const void *_mesg); -static size_t H5O_fphdf5_size(H5F_t *f, const void *_mesg); -static herr_t H5O_fphdf5_reset(void *_mesg); -static void *H5O_fphdf5_copy(const void *mesg, void *dest); -static herr_t H5O_fphdf5_free(void *_mesg); -static herr_t H5O_fphdf5_debug(H5F_t *f, hid_t dxpl_id, const void *_mesg, - FILE *stream, int indent, int fwidth); - -/* This message derives from H5O */ -const H5O_class_t H5O_FPHDF5[1] = {{ - H5O_FPHDF5_ID, /* message id number */ - "fphdf5", /* message name for debugging */ - sizeof(H5O_fphdf5_t), /* native message size */ - H5O_fphdf5_decode, /* decode message */ - H5O_fphdf5_encode, /* encode message */ - H5O_fphdf5_copy, /* copy the native value */ - H5O_fphdf5_size, /* size of symbol table entry */ - H5O_fphdf5_reset, /* default reset method */ - H5O_fphdf5_free, /* free method */ - NULL, /* get share method */ - NULL, /* set share method */ - H5O_fphdf5_debug, /* debug the message */ -}}; - -#define H5O_FPHDF5_VERSION 1 - -/* Is the interface initialized? */ -static int interface_initialize_g = 0; -#define INTERFACE_INIT NULL - -/* Define the free list for H5O_fphdf5_t's */ -H5FL_DEFINE_STATIC(H5O_fphdf5_t); - -/* Declare external the free list for hsize_t arrays */ -H5FL_ARR_EXTERN(hsize_t); - -/* - * Function: H5O_fphdf5_decode - * Purpose: Decode a metadata message from the SAP and return a pointer to - * a memory struct with the decoded information. - * - * This function decodes the "raw" form of a metadata message - * sent from the SAP into a struct in memory native format. The - * struct is allocated within this function using malloc() and is - * returned to the caller. - * - * H5F_t *f IN: pointer to the HDF5 file struct - * uint8 *p OUT: the raw information buffer - * H5O_shared_t *sh IN: not used; must be NULL - * - * Return: Success: Pointer to the new message in native order - * Failure: NULL - * Programmer: Bill Wendling, 20. August 2002 - * Modifications: - */ -static void * -H5O_fphdf5_decode(H5F_t *f, hid_t dxpl_id, const uint8_t *p, H5O_shared_t UNUSED *sh) -{ - H5O_fphdf5_t *fmeta = NULL; /* New FPHDF5 metadata structure */ - void *ret_value; - - FUNC_ENTER_NOAPI(H5O_fphdf5_decode, NULL); - - /* check args */ - assert(f); - assert(p); - assert(!sh); - - /* decode */ - fmeta = H5FL_CALLOC(H5O_fphdf5_t); - - /* decode the OID first */ - NBYTEDECODE(p, fmeta->oid, sizeof(fmeta->oid)); - - /* decode the header address next */ - NBYTEDECODE(p, &fmeta->header, sizeof(fmeta->header)); - - /* decode the dataspace dimensions next */ - fmeta->sdim = H5O_SDSPACE[0].decode(f, p, NULL); - - if (!fmeta->sdim) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); - - /* jump past the dataspace dimensions part */ - p += H5O_SDSPACE[0].raw_size(f, fmeta->sdim); - - /* decode the datatype next */ - fmeta->dtype = H5O_DTYPE[0].decode(f, p, NULL); - - if (!fmeta->dtype) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); - - /* jump past the datatype part */ - p += H5O_DTYPE[0].raw_size(f, fmeta->dtype); - - /* decode the modification time next */ - fmeta->mtime = H5O_MTIME[0].decode(f, p, NULL); - - if (!fmeta->mtime) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); - - /* jump past the modification time part */ - p += H5O_MTIME[0].raw_size(f, fmeta->mtime); - - /* decode the dataset layout next */ - fmeta->layout = H5O_LAYOUT[0].decode(f, p, NULL); - - if (!fmeta->layout) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); - - /* jump past the dataset layout part */ - p += H5O_LAYOUT[0].raw_size(f, fmeta->layout); - - /* decode the group the modification took place in */ - fmeta->group = H5O_NAME[0].decode(f, p, NULL); - - if (!fmeta->group) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); - - /* jump past the group name part */ - p += H5O_NAME[0].raw_size(f, fmeta->group); - - /* decode the dataset the modification took place in */ - fmeta->dset = H5O_NAME[0].decode(f, p, NULL); - - if (!fmeta->dset) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); - - /* jump past the dataset name part */ - p += H5O_NAME[0].raw_size(f, fmeta->dset); - - /* decode the property list last */ - fmeta->plist = H5O_PLIST[0].decode(f, p, NULL); - - if (!fmeta->plist) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); - - /* Set return value */ - ret_value = (void *)fmeta; /*success*/ - -done: - if (!ret_value && fmeta) { - /* free up fmeta */ - if (H5O_SDSPACE[0].free && fmeta->sdim) - H5O_SDSPACE[0].free(fmeta->sdim); - - if (H5O_DTYPE[0].free && fmeta->dtype) - H5O_DTYPE[0].free(fmeta->dtype); - - if (H5O_MTIME[0].free && fmeta->mtime) - H5O_MTIME[0].free(fmeta->mtime); - - if (H5O_LAYOUT[0].free && fmeta->layout) - H5O_LAYOUT[0].free(fmeta->layout); - - if (H5O_NAME[0].free && fmeta->group) - H5O_NAME[0].free(fmeta->dset); - - if (H5O_NAME[0].free && fmeta->dset) - H5O_NAME[0].free(fmeta->dset); - - if (H5O_PLIST[0].free && fmeta->plist) - H5O_PLIST[0].free(fmeta->plist); - - H5FL_FREE(H5O_fphdf5_t, fmeta); - } - - FUNC_LEAVE_NOAPI(ret_value); -} - -/* - * Function: H5O_fphdf5_encode - * Purpose: Encode a metadata message for the SAP and return a pointer to - * a memory struct with the encoded information. - * - * This function encodes the "raw" form of a metadata message - * sent from the SAP into a struct in memory native format. - * - * H5F_t *f IN: pointer to the HDF5 file struct - * uint8 *p OUT: the raw information buffer - * const void *mesg IN: pointer to the metadata to encode - * - * Return: Success: Non-negative - * Failure: Negative - * Programmer: Bill Wendling, 21. August 2002 - * Modifications: - */ -static herr_t -H5O_fphdf5_encode(H5F_t *f, uint8_t *p, const void *mesg) -{ - const H5O_fphdf5_t *fmeta = (const H5O_fphdf5_t *)mesg; - herr_t ret_value = SUCCEED; - - FUNC_ENTER_NOAPI(H5O_fphdf5_encode, FAIL); - - /* check args */ - assert(f); - assert(p); - assert(fmeta); - - /* encode the OID first */ - NBYTEENCODE(p, fmeta->oid, sizeof(fmeta->oid)); - - /* encode the header address info next */ - NBYTEENCODE(p, &fmeta->header, sizeof(fmeta->header)); - - /* encode the dataspace dimensions next */ - ret_value = H5O_SDSPACE[0].encode(f, p, fmeta->sdim); - - if (ret_value < 0) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); - - /* jump past the dataspace dimensions part */ - p += H5O_SDSPACE[0].raw_size(f, fmeta->sdim); - - /* encode the datatype next */ - ret_value = H5O_DTYPE[0].encode(f, p, fmeta->dtype); - - if (ret_value < 0) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); - - /* jump past the datatype part */ - p += H5O_DTYPE[0].raw_size(f, fmeta->dtype); - - /* encode the modification time next */ - ret_value = H5O_MTIME[0].encode(f, p, fmeta->mtime); - - if (ret_value < 0) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); - - /* jump past the modification time part */ - p += H5O_MTIME[0].raw_size(f, fmeta->mtime); - - /* encode the dataset layout next */ - ret_value = H5O_LAYOUT[0].encode(f, p, fmeta->layout); - - if (ret_value < 0) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); - - /* jump past the dataset layout part */ - p += H5O_LAYOUT[0].raw_size(f, fmeta->layout); - - /* encode the group name next */ - ret_value = H5O_NAME[0].encode(f, p, fmeta->group); - - if (ret_value < 0) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); - - /* jump past the group name part */ - p += H5O_NAME[0].raw_size(f, fmeta->group); - - /* encode the dataset name next */ - ret_value = H5O_NAME[0].encode(f, p, fmeta->dset); - - if (ret_value < 0) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); - - /* jump past the dataset name part */ - p += H5O_NAME[0].raw_size(f, fmeta->dset); - - /* decode the property list last */ - ret_value = H5O_PLIST[0].encode(f, p, fmeta->plist); - - if (ret_value < 0) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); - -done: - FUNC_LEAVE_NOAPI(ret_value); -} - -/* - * Function: H5O_fphdf5_copy - * Purpose: Copies a metadata object from MESG to DEST allocating DEST if - * necessary. - * - * const void *mesg IN: pointer to the metadata to copy - * const void *dest OUT: pointer to the destination metadata struct - * - * Return: Success: Pointer to DEST - * Failure: NULL - * Programmer: Bill Wendling, 21. August 2002 - * Modifications: - */ -static void * -H5O_fphdf5_copy(const void *mesg, void *dest) -{ - const H5O_fphdf5_t *src = (const H5O_fphdf5_t *)mesg; - H5O_fphdf5_t *dst = (H5O_fphdf5_t *)dest; - void *ret_value; - - FUNC_ENTER_NOAPI(H5O_fphdf5_copy, NULL); - - /* check args */ - assert(src); - - if (!dst && NULL == (dst = H5FL_MALLOC(H5O_fphdf5_t))) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); - - /* copy the individual metadata*/ - HDmemcpy(dst->oid,src->oid,sizeof(src->oid)); - - H5O_SDSPACE[0].copy(src->sdim, dst->sdim); - dst->header = src->header; - H5O_DTYPE[0].copy(src->dtype, dst->dtype); - H5O_MTIME[0].copy(src->mtime, dst->mtime); - H5O_LAYOUT[0].copy(src->layout, dst->layout); - H5O_NAME[0].copy(src->group, dst->group); - H5O_NAME[0].copy(src->dset, dst->dset); - - if (H5O_PLIST[0].copy) - H5O_PLIST[0].copy(src->plist, dst->plist); - - /* Set return value */ - ret_value = dst; - -done: - FUNC_LEAVE_NOAPI(ret_value); -} - -/* - * Function: H5O_fphdf5_size - * Purpose: Return the raw message size in bytes. - * - * This function returns the size of hte raw simple - * dimensionality, datatype, and object path message on succes. - * (Not counting the message type or size fields, only the data - * portion of the message). It doesn't take into account - * alignment. - * - * H5F_t *f IN: pointer to the HDF5 file struct - * const void *mesg IN: pointer to the metadata structure - * - * Return: Success: Size of message - * Failure: 0 - * Programmer: Bill Wendling, 21. August 2002 - * Modifications: - */ -static size_t -H5O_fphdf5_size(H5F_t *f, const void *mesg) -{ - const H5O_fphdf5_t *fmeta = (const H5O_fphdf5_t *)mesg; - size_t ret_value; - - FUNC_ENTER_NOAPI(H5O_fphdf5_size, 0); - - /* add in the metadata sizes */ - ret_value = sizeof(fmeta->oid); - ret_value += H5O_SDSPACE[0].raw_size(f, fmeta->sdim); - ret_value += sizeof(fmeta->header); - ret_value += H5O_DTYPE[0].raw_size(f, fmeta->dtype); - ret_value += H5O_MTIME[0].raw_size(f, fmeta->mtime); - ret_value += H5O_LAYOUT[0].raw_size(f, fmeta->layout); - ret_value += H5O_NAME[0].raw_size(f, fmeta->group); - ret_value += H5O_NAME[0].raw_size(f, fmeta->dset); - ret_value += H5O_PLIST[0].raw_size(f, fmeta->plist); - -done: - FUNC_LEAVE_NOAPI(ret_value); -} - -/* - * Function: H5O_fphdf5_reset - * Purpose: Frees the inside of a metadata message and resets it to some - * initial value. - * - * const void *mesg IN: pointer to the metadata to reset - * - * Return: Success: Non-negative - * Failure: Negative - * Programmer: Bill Wendling, 21. August 2002 - * Modifications: - */ -static herr_t -H5O_fphdf5_reset(void *mesg) -{ - H5O_fphdf5_t *fmeta = (H5O_fphdf5_t *)mesg; - herr_t ret_value = SUCCEED; - - FUNC_ENTER_NOAPI(H5O_fphdf5_reset, FAIL); - - /* reset the metadata */ - HDmemset(fmeta->oid,0,sizeof(fmeta->oid)); - - if (H5O_SDSPACE[0].reset) - ret_value = H5O_SDSPACE[0].reset(fmeta->sdim); - - fmeta->header = 0; - - if (H5O_DTYPE[0].reset) - ret_value = H5O_DTYPE[0].reset(fmeta->dtype); - - if (H5O_MTIME[0].reset) - ret_value = H5O_MTIME[0].reset(fmeta->mtime); - - if (H5O_LAYOUT[0].reset) - ret_value = H5O_LAYOUT[0].reset(fmeta->layout); - - if (H5O_NAME[0].reset) - ret_value = H5O_NAME[0].reset(fmeta->group); - - if (H5O_NAME[0].reset) - ret_value = H5O_NAME[0].reset(fmeta->dset); - - if (H5O_PLIST[0].reset) - ret_value = H5O_PLIST[0].reset(fmeta->plist); - -done: - FUNC_LEAVE_NOAPI(ret_value); -} - -/* - * Function: H5O_fphdf5_free - * Purpose: Free's the message - * - * const void *mesg IN: pointer to the metadata to free - * - * Return: Success: Non-negative - * Failure: Negative - * Programmer: Bill Wendling, 21. August 2002 - * Modifications: - */ -static herr_t -H5O_fphdf5_free(void *mesg) -{ - H5O_fphdf5_t *fmeta = (H5O_fphdf5_t *)mesg; - herr_t ret_value = SUCCEED; - - FUNC_ENTER_NOAPI(H5O_fphdf5_free, FAIL); - assert(fmeta); - - if (H5O_SDSPACE[0].free && fmeta->sdim) - ret_value = H5O_SDSPACE[0].free(fmeta->sdim); - - if (H5O_DTYPE[0].free && fmeta->dtype) - ret_value = H5O_DTYPE[0].free(fmeta->dtype); - - if (H5O_MTIME[0].free && fmeta->mtime) - ret_value = H5O_MTIME[0].free(fmeta->mtime); - - if (H5O_LAYOUT[0].free && fmeta->layout) - ret_value = H5O_MTIME[0].free(fmeta->layout); - - if (H5O_NAME[0].free && fmeta->group) - ret_value = H5O_NAME[0].free(fmeta->group); - - if (H5O_NAME[0].free && fmeta->dset) - ret_value = H5O_NAME[0].free(fmeta->dset); - - if (H5O_PLIST[0].free && fmeta->plist) - ret_value = H5O_PLIST[0].free(fmeta->plist); - - H5FL_FREE(H5O_fphdf5_t, fmeta); - -done: - FUNC_LEAVE_NOAPI(ret_value); -} - -/* - * Function: H5O_fphdf5_debug - * Purpose: Prints debugging information for the metadata message. - * - * H5F_t *f IN: pointer to the HDF5 file struct - * const void *mesg IN: Pointer to the source metadata struct - * FILE *stream IN: Pointer to the stream for output data - * int indent IN: Amount to indent information by - * int fwidth IN: Field width (?) - * - * Return: Success: Non-negative - * Failure: Negative - * Programmer: Bill Wendling, 22. August 2002 - * Modifications: - */ -static herr_t -H5O_fphdf5_debug(H5F_t UNUSED *f, hid_t dxpl_id, const void *mesg, - FILE * stream, int indent, int fwidth) -{ - const H5O_fphdf5_t *fmeta = (const H5O_fphdf5_t *) mesg; - herr_t ret_value = SUCCEED; - unsigned int i; - - FUNC_ENTER_NOAPI(H5O_fphdf5_debug, FAIL); - - /* check args */ - assert(f); - assert(fmeta); - assert(stream); - assert(indent >= 0); - assert(fwidth >= 0); - - HDfprintf(stream, "%*s%-*s\n", indent, "", fwidth, "Metadata:"); - HDfprintf(stream, "%*sOID: 0x", indent + 1, ""); - - for (i = 0; i < sizeof(fmeta->oid); ++i) - HDfprintf(stream, "%02x", fmeta->oid[i]); - - HDfprintf(stream, "\n"); - ret_value = H5O_SDSPACE[0].debug(f, fmeta->sdim, stream, indent + 1, fwidth); - HDfprintf(stream, "%*sHeader Address: %" H5_PRINTF_LL_WIDTH "u\n", - indent, "", (unsigned long_long)fmeta->header); - ret_value = H5O_DTYPE[0].debug(f, fmeta->dtype, stream, indent + 1, fwidth); - ret_value = H5O_MTIME[0].debug(f, fmeta->mtime, stream, indent + 1, fwidth); - ret_value = H5O_LAYOUT[0].debug(f, fmeta->layout, stream, indent + 1, fwidth); - ret_value = H5O_NAME[0].debug(f, fmeta->group, stream, indent + 1, fwidth); - ret_value = H5O_NAME[0].debug(f, fmeta->dset, stream, indent + 1, fwidth); - ret_value = H5O_PLIST[0].debug(f, fmeta->plist, stream, indent + 1, fwidth); - - HDfprintf(stream, "}\n"); - -done: - FUNC_LEAVE_NOAPI(ret_value); -} - -#endif /* H5_HAVE_FPHDF5 */ |