diff options
Diffstat (limited to 'src/H5EAtest.c')
| -rw-r--r-- | src/H5EAtest.c | 329 |
1 files changed, 161 insertions, 168 deletions
diff --git a/src/H5EAtest.c b/src/H5EAtest.c index 94303c3..474e925 100644 --- a/src/H5EAtest.c +++ b/src/H5EAtest.c @@ -1,19 +1,16 @@ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 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 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://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * + * 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. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -/* Programmer: Quincey Koziol <koziol@hdfgroup.org> +/* Programmer: Quincey Koziol * Thursday, August 28, 2008 * * Purpose: Extensible array testing functions. @@ -24,32 +21,28 @@ /* Module Declaration */ /**********************/ -#define H5EA_MODULE +#include "H5EAmodule.h" /* This source code file is part of the H5EA module */ #define H5EA_TESTING - /***********************/ /* Other Packages Used */ /***********************/ - /***********/ /* Headers */ /***********/ -#include "H5private.h" /* Generic Functions */ -#include "H5Eprivate.h" /* Error handling */ -#include "H5EApkg.h" /* Extensible Arrays */ -#include "H5FLprivate.h" /* Free Lists */ -#include "H5VMprivate.h" /* Vector functions */ - +#include "H5private.h" /* Generic Functions */ +#include "H5Eprivate.h" /* Error handling */ +#include "H5EApkg.h" /* Extensible Arrays */ +#include "H5FLprivate.h" /* Free Lists */ +#include "H5VMprivate.h" /* Vector functions */ /****************/ /* Local Macros */ /****************/ /* Sanity checking value for callback contexts */ -#define H5EA__TEST_BOGUS_VAL 42 - +#define H5EA__TEST_BOGUS_VAL 42 /******************/ /* Local Typedefs */ @@ -57,28 +50,26 @@ /* Callback context */ typedef struct H5EA__test_ctx_t { - uint32_t bogus; /* Placeholder field to verify that context is working */ - H5EA__ctx_cb_t *cb; /* Pointer to context's callback action */ + uint32_t bogus; /* Placeholder field to verify that context is working */ + H5EA__ctx_cb_t *cb; /* Pointer to context's callback action */ } H5EA__test_ctx_t; - /********************/ /* Package Typedefs */ /********************/ - /********************/ /* Local Prototypes */ /********************/ /* Extensible array class callbacks */ -static void *H5EA__test_crt_context(void *udata); +static void *H5EA__test_crt_context(void *udata); static herr_t H5EA__test_dst_context(void *ctx); static herr_t H5EA__test_fill(void *nat_blk, size_t nelmts); static herr_t H5EA__test_encode(void *raw, const void *elmt, size_t nelmts, void *ctx); static herr_t H5EA__test_decode(const void *raw, void *elmt, size_t nelmts, void *ctx); static herr_t H5EA__test_debug(FILE *stream, int indent, int fwidth, hsize_t idx, const void *elmt); -static void *H5EA__test_crt_dbg_context(H5F_t UNUSED *f, hid_t UNUSED dxpl_id, haddr_t UNUSED obj_addr); +static void *H5EA__test_crt_dbg_context(H5F_t H5_ATTR_UNUSED *f, haddr_t H5_ATTR_UNUSED obj_addr); static herr_t H5EA__test_dst_dbg_context(void *_ctx); /*********************/ @@ -86,7 +77,7 @@ static herr_t H5EA__test_dst_dbg_context(void *_ctx); /*********************/ /* Extensible array testing class information */ -const H5EA_class_t H5EA_CLS_TEST[1]={{ +const H5EA_class_t H5EA_CLS_TEST[1] = {{ H5EA_CLS_TEST_ID, /* Type of Extensible array */ "Testing", /* Name of Extensible Array class */ sizeof(uint64_t), /* Size of native element */ @@ -100,12 +91,10 @@ const H5EA_class_t H5EA_CLS_TEST[1]={{ H5EA__test_dst_dbg_context /* Destroy debugging context */ }}; - /*****************************/ /* Library Private Variables */ /*****************************/ - /*******************/ /* Local Variables */ /*******************/ @@ -116,8 +105,6 @@ H5FL_DEFINE_STATIC(H5EA__test_ctx_t); /* Declare a free list to manage the H5EA__ctx_cb_t struct */ H5FL_DEFINE_STATIC(H5EA__ctx_cb_t); - - /*------------------------------------------------------------------------- * Function: H5EA__test_crt_context * @@ -131,32 +118,31 @@ H5FL_DEFINE_STATIC(H5EA__ctx_cb_t); * *------------------------------------------------------------------------- */ -BEGIN_FUNC(STATIC, ERR, -void *, NULL, NULL, -H5EA__test_crt_context(void *_udata)) +static void * +H5EA__test_crt_context(void *_udata) +{ + H5EA__test_ctx_t *ctx; /* Context for callbacks */ + H5EA__ctx_cb_t *udata = (H5EA__ctx_cb_t *)_udata; /* User data for context */ + void *ret_value = NULL; - /* Local variables */ - H5EA__test_ctx_t *ctx; /* Context for callbacks */ - H5EA__ctx_cb_t *udata = (H5EA__ctx_cb_t *)_udata; /* User data for context */ - - /* Sanity checks */ + FUNC_ENTER_PACKAGE /* Allocate new context structure */ - if(NULL == (ctx = H5FL_MALLOC(H5EA__test_ctx_t))) - H5E_THROW(H5E_CANTALLOC, "can't allocate extensible array client callback context") + if (NULL == (ctx = H5FL_MALLOC(H5EA__test_ctx_t))) + HGOTO_ERROR(H5E_EARRAY, H5E_CANTALLOC, NULL, + "can't allocate extensible array client callback context") /* Initialize the context */ ctx->bogus = H5EA__TEST_BOGUS_VAL; - ctx->cb = udata; + ctx->cb = udata; /* Set return value */ ret_value = ctx; -CATCH - -END_FUNC(STATIC) /* end H5EA__test_crt_context() */ +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5EA__test_crt_context() */ - /*------------------------------------------------------------------------- * Function: H5EA__test_dst_context * @@ -170,12 +156,12 @@ END_FUNC(STATIC) /* end H5EA__test_crt_context() */ * *------------------------------------------------------------------------- */ -BEGIN_FUNC(STATIC, NOERR, -herr_t, SUCCEED, -, -H5EA__test_dst_context(void *_ctx)) +static herr_t +H5EA__test_dst_context(void *_ctx) +{ + H5EA__test_ctx_t *ctx = (H5EA__test_ctx_t *)_ctx; /* Callback context to destroy */ - /* Local variables */ - H5EA__test_ctx_t *ctx = (H5EA__test_ctx_t *)_ctx; /* Callback context to destroy */ + FUNC_ENTER_PACKAGE_NOERR /* Sanity checks */ HDassert(H5EA__TEST_BOGUS_VAL == ctx->bogus); @@ -183,9 +169,9 @@ H5EA__test_dst_context(void *_ctx)) /* Release context structure */ ctx = H5FL_FREE(H5EA__test_ctx_t, ctx); -END_FUNC(STATIC) /* end H5EA__test_dst_context() */ + FUNC_LEAVE_NOAPI(SUCCEED) +} /* end H5EA__test_dst_context() */ - /*------------------------------------------------------------------------- * Function: H5EA__test_fill * @@ -199,12 +185,12 @@ END_FUNC(STATIC) /* end H5EA__test_dst_context() */ * *------------------------------------------------------------------------- */ -BEGIN_FUNC(STATIC, NOERR, -herr_t, SUCCEED, -, -H5EA__test_fill(void *nat_blk, size_t nelmts)) +static herr_t +H5EA__test_fill(void *nat_blk, size_t nelmts) +{ + uint64_t fill_val = H5EA_TEST_FILL; /* Value to fill elements with */ - /* Local variables */ - uint64_t fill_val = H5EA_TEST_FILL; /* Value to fill elements with */ + FUNC_ENTER_PACKAGE_NOERR /* Sanity checks */ HDassert(nat_blk); @@ -212,9 +198,9 @@ H5EA__test_fill(void *nat_blk, size_t nelmts)) H5VM_array_fill(nat_blk, &fill_val, sizeof(uint64_t), nelmts); -END_FUNC(STATIC) /* end H5EA__test_fill() */ + FUNC_LEAVE_NOAPI(SUCCEED) +} /* end H5EA__test_fill() */ - /*------------------------------------------------------------------------- * Function: H5EA__test_encode * @@ -228,13 +214,14 @@ END_FUNC(STATIC) /* end H5EA__test_fill() */ * *------------------------------------------------------------------------- */ -BEGIN_FUNC(STATIC, ERR, -herr_t, SUCCEED, FAIL, -H5EA__test_encode(void *raw, const void *_elmt, size_t nelmts, void *_ctx)) +static herr_t +H5EA__test_encode(void *raw, const void *_elmt, size_t nelmts, void *_ctx) +{ + H5EA__test_ctx_t *ctx = (H5EA__test_ctx_t *)_ctx; /* Callback context to destroy */ + const uint64_t *elmt = (const uint64_t *)_elmt; /* Convenience pointer to native elements */ + herr_t ret_value = SUCCEED; - /* Local variables */ - H5EA__test_ctx_t *ctx = (H5EA__test_ctx_t *)_ctx; /* Callback context to destroy */ - const uint64_t *elmt = (const uint64_t *)_elmt; /* Convenience pointer to native elements */ + FUNC_ENTER_PACKAGE /* Sanity checks */ HDassert(raw); @@ -243,15 +230,14 @@ H5EA__test_encode(void *raw, const void *_elmt, size_t nelmts, void *_ctx)) HDassert(H5EA__TEST_BOGUS_VAL == ctx->bogus); /* Check for callback action */ - if(ctx->cb) { - if((*ctx->cb->encode)(elmt, nelmts, ctx->cb->udata) < 0) - H5E_THROW(H5E_BADVALUE, "extensible array testing callback action failed") - } /* end if */ + if (ctx->cb) { + if ((*ctx->cb->encode)(elmt, nelmts, ctx->cb->udata) < 0) + HGOTO_ERROR(H5E_EARRAY, H5E_BADVALUE, FAIL, "extensible array testing callback action failed") + } /* Encode native elements into raw elements */ - while(nelmts) { - /* Encode element */ - /* (advances 'raw' pointer) */ + while (nelmts) { + /* Encode element - advances 'raw' pointer */ UINT64ENCODE(raw, *elmt); /* Advance native element pointer */ @@ -259,13 +245,12 @@ H5EA__test_encode(void *raw, const void *_elmt, size_t nelmts, void *_ctx)) /* Decrement # of elements to encode */ nelmts--; - } /* end while */ + } -CATCH +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5EA__test_encode() */ -END_FUNC(STATIC) /* end H5EA__test_encode() */ - - /*------------------------------------------------------------------------- * Function: H5EA__test_decode * @@ -279,16 +264,16 @@ END_FUNC(STATIC) /* end H5EA__test_encode() */ * *------------------------------------------------------------------------- */ -BEGIN_FUNC(STATIC, NOERR, -herr_t, SUCCEED, -, -H5EA__test_decode(const void *_raw, void *_elmt, size_t nelmts, void *_ctx)) - - /* Local variables */ +static herr_t +H5EA__test_decode(const void *_raw, void *_elmt, size_t nelmts, void H5_ATTR_NDEBUG_UNUSED *_ctx) +{ #ifndef NDEBUG - H5EA__test_ctx_t *ctx = (H5EA__test_ctx_t *)_ctx; /* Callback context to destroy */ -#endif /* NDEBUG */ - uint64_t *elmt = (uint64_t *)_elmt; /* Convenience pointer to native elements */ - const uint8_t *raw = (const uint8_t *)_raw; /* Convenience pointer to raw elements */ + H5EA__test_ctx_t *ctx = (H5EA__test_ctx_t *)_ctx; /* Callback context to destroy */ +#endif /* NDEBUG */ + uint64_t *elmt = (uint64_t *)_elmt; /* Convenience pointer to native elements */ + const uint8_t *raw = (const uint8_t *)_raw; /* Convenience pointer to raw elements */ + + FUNC_ENTER_PACKAGE_NOERR /* Sanity checks */ HDassert(raw); @@ -297,9 +282,8 @@ H5EA__test_decode(const void *_raw, void *_elmt, size_t nelmts, void *_ctx)) HDassert(H5EA__TEST_BOGUS_VAL == ctx->bogus); /* Decode raw elements into native elements */ - while(nelmts) { - /* Decode element */ - /* (advances 'raw' pointer) */ + while (nelmts) { + /* Decode element - advances 'raw' pointer */ UINT64DECODE(raw, *elmt); /* Advance native element pointer */ @@ -307,11 +291,11 @@ H5EA__test_decode(const void *_raw, void *_elmt, size_t nelmts, void *_ctx)) /* Decrement # of elements to decode */ nelmts--; - } /* end while */ + } -END_FUNC(STATIC) /* end H5EA__test_decode() */ + FUNC_LEAVE_NOAPI(SUCCEED) +} /* end H5EA__test_decode() */ - /*------------------------------------------------------------------------- * Function: H5EA__test_debug * @@ -325,56 +309,57 @@ END_FUNC(STATIC) /* end H5EA__test_decode() */ * *------------------------------------------------------------------------- */ -BEGIN_FUNC(STATIC, NOERR, -herr_t, SUCCEED, -, -H5EA__test_debug(FILE *stream, int indent, int fwidth, hsize_t idx, - const void *elmt)) +static herr_t +H5EA__test_debug(FILE *stream, int indent, int fwidth, hsize_t idx, const void *elmt) +{ + char temp_str[128]; /* Temporary string, for formatting */ - /* Local variables */ - char temp_str[128]; /* Temporary string, for formatting */ + FUNC_ENTER_PACKAGE_NOERR /* Sanity checks */ HDassert(stream); HDassert(elmt); /* Print element */ - sprintf(temp_str, "Element #%llu:", (unsigned long long)idx); + HDsnprintf(temp_str, sizeof(temp_str), "Element #%llu:", (unsigned long long)idx); HDfprintf(stream, "%*s%-*s %llu\n", indent, "", fwidth, temp_str, - (unsigned long long)*(const uint64_t *)elmt); + (unsigned long long)*(const uint64_t *)elmt); -END_FUNC(STATIC) /* end H5EA__test_debug() */ + FUNC_LEAVE_NOAPI(SUCCEED) +} /* end H5EA__test_debug() */ /*------------------------------------------------------------------------- * Function: H5EA__test_crt_dbg_context * * Purpose: Create context for debugging callback - * + * * Return: Success: non-NULL * Failure: NULL - * + * * Programmer: Vailin Choi; August 2010 * *------------------------------------------------------------------------- */ -BEGIN_FUNC(STATIC, ERR, -void *, NULL, NULL, -H5EA__test_crt_dbg_context(H5F_t UNUSED *f, hid_t UNUSED dxpl_id, haddr_t UNUSED obj_addr)) - - /* Local variables */ - H5EA__ctx_cb_t *ctx; /* Context for callbacks */ - +static void * +H5EA__test_crt_dbg_context(H5F_t H5_ATTR_UNUSED *f, haddr_t H5_ATTR_UNUSED obj_addr) +{ + H5EA__ctx_cb_t *ctx; /* Context for callbacks */ + void *ret_value = NULL; + + FUNC_ENTER_PACKAGE + /* Allocate new context structure */ - if(NULL == (ctx = H5FL_MALLOC(H5EA__ctx_cb_t))) - H5E_THROW(H5E_CANTALLOC, "can't allocate extensible array client callback context") + if (NULL == (ctx = H5FL_MALLOC(H5EA__ctx_cb_t))) + HGOTO_ERROR(H5E_EARRAY, H5E_CANTALLOC, NULL, + "can't allocate extensible array client callback context") /* Set return value */ ret_value = ctx; -CATCH - -END_FUNC(STATIC) /* end H5EA__test_crt_dbg_context() */ +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5EA__test_crt_dbg_context() */ - /*------------------------------------------------------------------------- * Function: H5EA__test_dst_dbg_context * @@ -387,23 +372,23 @@ END_FUNC(STATIC) /* end H5EA__test_crt_dbg_context() */ * *------------------------------------------------------------------------- */ -BEGIN_FUNC(STATIC, NOERR, -herr_t, SUCCEED, -, -H5EA__test_dst_dbg_context(void *_ctx)) +static herr_t +H5EA__test_dst_dbg_context(void *_ctx) +{ + H5EA__ctx_cb_t *ctx = (H5EA__ctx_cb_t *)_ctx; /* Callback context to destroy */ - /* Local variables */ - H5EA__ctx_cb_t *ctx = (H5EA__ctx_cb_t *)_ctx; /* Callback context to destroy */ + FUNC_ENTER_PACKAGE_NOERR HDassert(_ctx); /* Release context structure */ ctx = H5FL_FREE(H5EA__ctx_cb_t, ctx); -END_FUNC(STATIC) /* end H5EA__test_dst_dbg_context() */ + FUNC_LEAVE_NOAPI(SUCCEED) +} /* end H5EA__test_dst_dbg_context() */ - /*------------------------------------------------------------------------- - * Function: H5EA_get_cparam_test + * Function: H5EA__get_cparam_test * * Purpose: Retrieve the parameters used to create the extensible array * @@ -415,27 +400,28 @@ END_FUNC(STATIC) /* end H5EA__test_dst_dbg_context() */ * *------------------------------------------------------------------------- */ -BEGIN_FUNC(PRIV, NOERR, -herr_t, SUCCEED, -, -H5EA_get_cparam_test(const H5EA_t *ea, H5EA_create_t *cparam)) +herr_t +H5EA__get_cparam_test(const H5EA_t *ea, H5EA_create_t *cparam) +{ + FUNC_ENTER_PACKAGE_NOERR /* Check arguments. */ HDassert(ea); HDassert(cparam); /* Get extensible array creation parameters */ - cparam->raw_elmt_size = ea->hdr->cparam.raw_elmt_size; - cparam->max_nelmts_bits = ea->hdr->cparam.max_nelmts_bits; - cparam->idx_blk_elmts = ea->hdr->cparam.idx_blk_elmts; - cparam->sup_blk_min_data_ptrs = ea->hdr->cparam.sup_blk_min_data_ptrs; - cparam->data_blk_min_elmts = ea->hdr->cparam.data_blk_min_elmts; + cparam->raw_elmt_size = ea->hdr->cparam.raw_elmt_size; + cparam->max_nelmts_bits = ea->hdr->cparam.max_nelmts_bits; + cparam->idx_blk_elmts = ea->hdr->cparam.idx_blk_elmts; + cparam->sup_blk_min_data_ptrs = ea->hdr->cparam.sup_blk_min_data_ptrs; + cparam->data_blk_min_elmts = ea->hdr->cparam.data_blk_min_elmts; cparam->max_dblk_page_nelmts_bits = ea->hdr->cparam.max_dblk_page_nelmts_bits; -END_FUNC(PRIV) /* end H5EA_get_cparam_test() */ + FUNC_LEAVE_NOAPI(SUCCEED) +} /* end H5EA__get_cparam_test() */ - /*------------------------------------------------------------------------- - * Function: H5EA_cmp_cparam_test + * Function: H5EA__cmp_cparam_test * * Purpose: Compare the parameters used to create the extensible array * @@ -447,41 +433,48 @@ END_FUNC(PRIV) /* end H5EA_get_cparam_test() */ * *------------------------------------------------------------------------- */ -BEGIN_FUNC(PRIV, ERRCATCH, -int, 0, -, -H5EA_cmp_cparam_test(const H5EA_create_t *cparam1, const H5EA_create_t *cparam2)) +int +H5EA__cmp_cparam_test(const H5EA_create_t *cparam1, const H5EA_create_t *cparam2) +{ + int ret_value = 0; - /* Check arguments. */ + FUNC_ENTER_PACKAGE_NOERR + + /* Check arguments */ HDassert(cparam1); HDassert(cparam2); /* Compare creation parameters for array */ - if(cparam1->raw_elmt_size < cparam2->raw_elmt_size) - H5_LEAVE(-1) - else if(cparam1->raw_elmt_size > cparam2->raw_elmt_size) - H5_LEAVE(1) - if(cparam1->max_nelmts_bits < cparam2->max_nelmts_bits) - H5_LEAVE(-1) - else if(cparam1->max_nelmts_bits > cparam2->max_nelmts_bits) - H5_LEAVE(1) - if(cparam1->idx_blk_elmts < cparam2->idx_blk_elmts) - H5_LEAVE(-1) - else if(cparam1->idx_blk_elmts > cparam2->idx_blk_elmts) - H5_LEAVE(1) - if(cparam1->sup_blk_min_data_ptrs < cparam2->sup_blk_min_data_ptrs) - H5_LEAVE(-1) - else if(cparam1->sup_blk_min_data_ptrs > cparam2->sup_blk_min_data_ptrs) - H5_LEAVE(1) - if(cparam1->data_blk_min_elmts < cparam2->data_blk_min_elmts) - H5_LEAVE(-1) - else if(cparam1->data_blk_min_elmts > cparam2->data_blk_min_elmts) - H5_LEAVE(1) - if(cparam1->max_dblk_page_nelmts_bits < cparam2->max_dblk_page_nelmts_bits) - H5_LEAVE(-1) - else if(cparam1->max_dblk_page_nelmts_bits > cparam2->max_dblk_page_nelmts_bits) - H5_LEAVE(1) - -CATCH - -END_FUNC(PRIV) /* end H5EA_cmp_cparam_test() */ - + if (cparam1->raw_elmt_size < cparam2->raw_elmt_size) + HGOTO_DONE(-1) + else if (cparam1->raw_elmt_size > cparam2->raw_elmt_size) + HGOTO_DONE(1) + + if (cparam1->max_nelmts_bits < cparam2->max_nelmts_bits) + HGOTO_DONE(-1) + else if (cparam1->max_nelmts_bits > cparam2->max_nelmts_bits) + HGOTO_DONE(1) + + if (cparam1->idx_blk_elmts < cparam2->idx_blk_elmts) + HGOTO_DONE(-1) + else if (cparam1->idx_blk_elmts > cparam2->idx_blk_elmts) + HGOTO_DONE(1) + + if (cparam1->sup_blk_min_data_ptrs < cparam2->sup_blk_min_data_ptrs) + HGOTO_DONE(-1) + else if (cparam1->sup_blk_min_data_ptrs > cparam2->sup_blk_min_data_ptrs) + HGOTO_DONE(1) + + if (cparam1->data_blk_min_elmts < cparam2->data_blk_min_elmts) + HGOTO_DONE(-1) + else if (cparam1->data_blk_min_elmts > cparam2->data_blk_min_elmts) + HGOTO_DONE(1) + + if (cparam1->max_dblk_page_nelmts_bits < cparam2->max_dblk_page_nelmts_bits) + HGOTO_DONE(-1) + else if (cparam1->max_dblk_page_nelmts_bits > cparam2->max_dblk_page_nelmts_bits) + HGOTO_DONE(1) + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5EA__cmp_cparam_test() */ |
