diff options
author | M. Scot Breitenfeld <brtnfld@hdfgroup.org> | 2018-02-20 20:12:51 (GMT) |
---|---|---|
committer | M. Scot Breitenfeld <brtnfld@hdfgroup.org> | 2018-02-20 20:12:51 (GMT) |
commit | ec361559b3a78126e70ec4abd74a98d5faff53f0 (patch) | |
tree | 828740a9fc0139e8dc1ac405a5b0e62e28188321 /src/H5Dlayout.c | |
parent | 65c670d39cb5466185f23e6a39a743f02e4f4ae8 (diff) | |
parent | 9f2802f23cad8dd16f21b85c0dd9c97008a51f76 (diff) | |
download | hdf5-ec361559b3a78126e70ec4abd74a98d5faff53f0.zip hdf5-ec361559b3a78126e70ec4abd74a98d5faff53f0.tar.gz hdf5-ec361559b3a78126e70ec4abd74a98d5faff53f0.tar.bz2 |
Merge branch 'develop' into avoid_trunc_beta
Diffstat (limited to 'src/H5Dlayout.c')
-rw-r--r-- | src/H5Dlayout.c | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/src/H5Dlayout.c b/src/H5Dlayout.c index ec18e86..980b810 100644 --- a/src/H5Dlayout.c +++ b/src/H5Dlayout.c @@ -46,6 +46,12 @@ /* Package Variables */ /*********************/ +/* Format version bounds for layout */ +const unsigned H5O_layout_ver_bounds[] = { + H5O_LAYOUT_VERSION_1, /* H5F_LIBVER_EARLIEST */ + H5O_LAYOUT_VERSION_3, /* H5F_LIBVER_V18 */ /* H5O_LAYOUT_VERSION_DEFAULT */ + H5O_LAYOUT_VERSION_LATEST /* H5F_LIBVER_LATEST */ +}; /*****************************/ /* Library Private Variables */ @@ -57,6 +63,7 @@ /*******************/ + /*------------------------------------------------------------------------- * Function: H5D__layout_set_io_ops @@ -277,49 +284,47 @@ done: /*------------------------------------------------------------------------- - * Function: H5D__layout_set_latest_version + * Function: H5D__layout_set_version * - * Purpose: Set the encoding for a layout to the latest version. - * Part of the coding in this routine is moved to - * H5D__layout_set_latest_indexing(). + * Purpose: Set the version to encode a layout with. * * Return: Non-negative on success/Negative on failure * - * Programmer: Quincey Koziol - * Thursday, January 15, 2009 + * Programmer: Vailin Choi; December 2017 * *------------------------------------------------------------------------- */ herr_t -H5D__layout_set_latest_version(H5O_layout_t *layout, const H5S_t *space, - const H5D_dcpl_cache_t *dcpl_cache) +H5D__layout_set_version(H5F_t *f, H5O_layout_t *layout) { - herr_t ret_value = SUCCEED; /* Return value */ + unsigned version; /* Message version */ + herr_t ret_value = SUCCEED; /* Return value */ - FUNC_ENTER_PACKAGE + FUNC_ENTER_NOAPI(FAIL) /* Sanity check */ HDassert(layout); - HDassert(space); - HDassert(dcpl_cache); + HDassert(f); + + /* Upgrade to the version indicated by the file's low bound if higher */ + version = MAX(layout->version, H5O_layout_ver_bounds[H5F_LOW_BOUND(f)]); - /* Set encoding of layout to latest version */ - layout->version = H5O_LAYOUT_VERSION_LATEST; + /* Version bounds check */ + if(version > H5O_layout_ver_bounds[H5F_HIGH_BOUND(f)]) + HGOTO_ERROR(H5E_DATASET, H5E_BADRANGE, FAIL, "layout version out of bounds") - /* Set the latest indexing type for the layout message */ - if(H5D__layout_set_latest_indexing(layout, space, dcpl_cache) < 0) - HGOTO_ERROR(H5E_DATASET, H5E_CANTSET, FAIL, "can't set latest indexing type") + /* Set the message version */ + layout->version = version; done: FUNC_LEAVE_NOAPI(ret_value) -} /* end H5D__layout_set_latest_version() */ +} /* end H5D__layout_set_version() */ /*------------------------------------------------------------------------- * Function: H5D__layout_set_latest_indexing * * Purpose: Set the latest indexing type for a layout message - * This is moved from H5D_layout_set_latest_version(). * * Return: Non-negative on success/Negative on failure * |