diff options
Diffstat (limited to 'src/H5Ffake.c')
-rw-r--r-- | src/H5Ffake.c | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/src/H5Ffake.c b/src/H5Ffake.c new file mode 100644 index 0000000..6072f2e --- /dev/null +++ b/src/H5Ffake.c @@ -0,0 +1,102 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * 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. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#include "H5Fmodule.h" /* This source code file is part of the H5F module */ + + +/* Packages needed by this file... */ +#include "H5private.h" /* Generic Functions */ +#include "H5Eprivate.h" /* Error handling */ +#include "H5Fpkg.h" /* File access */ + +/* PRIVATE PROTOTYPES */ + + +/*------------------------------------------------------------------------- + * Function: H5F_fake_alloc + * + * Purpose: Allocate a "fake" file structure, for various routines to + * use for encoding/decoding data structures using internal API + * routines that need a file structure, but don't ultimately + * depend on having a "real" file. + * + * Return: Success: Pointer to 'faked up' file structure + * Failure: NULL + * + * Programmer: Quincey Koziol + * koziol@hdfgroup.org + * Oct 2, 2006 + * + *------------------------------------------------------------------------- + */ +H5F_t * +H5F_fake_alloc(uint8_t sizeof_size) +{ + H5F_t *f = NULL; /* Pointer to fake file struct */ + H5F_t *ret_value = NULL; /* Return value */ + + FUNC_ENTER_NOAPI(NULL) + + /* Allocate faked file struct */ + if(NULL == (f = H5FL_CALLOC(H5F_t))) + HGOTO_ERROR(H5E_FILE, H5E_NOSPACE, NULL, "can't allocate top file structure") + if(NULL == (f->shared = H5FL_CALLOC(H5F_file_t))) + HGOTO_ERROR(H5E_FILE, H5E_NOSPACE, NULL, "can't allocate shared file structure") + + /* Only set fields necessary for clients */ + if(sizeof_size == 0) + f->shared->sizeof_size = H5F_OBJ_SIZE_SIZE; + else + f->shared->sizeof_size = sizeof_size; + + /* Set return value */ + ret_value = f; + +done: + if(!ret_value) + H5F_fake_free(f); + + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5F_fake_alloc() */ + + +/*------------------------------------------------------------------------- + * Function: H5F_fake_free + * + * Purpose: Free a "fake" file structure. + * + * Return: Success: non-negative + * Failure: negative + * + * Programmer: Quincey Koziol + * koziol@hdfgroup.org + * Oct 2, 2006 + * + *------------------------------------------------------------------------- + */ +herr_t +H5F_fake_free(H5F_t *f) +{ + FUNC_ENTER_NOAPI_NOINIT_NOERR + + /* Free faked file struct */ + if(f) { + /* Destroy shared file struct */ + if(f->shared) + f->shared = H5FL_FREE(H5F_file_t, f->shared); + f = H5FL_FREE(H5F_t, f); + } /* end if */ + + FUNC_LEAVE_NOAPI(SUCCEED) +} /* end H5F_fake_free() */ + |