diff options
Diffstat (limited to 'src/H5Tvlen.c')
-rw-r--r-- | src/H5Tvlen.c | 94 |
1 files changed, 20 insertions, 74 deletions
diff --git a/src/H5Tvlen.c b/src/H5Tvlen.c index 7bf28af..39d33d4 100644 --- a/src/H5Tvlen.c +++ b/src/H5Tvlen.c @@ -369,11 +369,7 @@ done: static herr_t H5T__vlen_mem_seq_getlen(H5VL_object_t H5_ATTR_UNUSED *file, const void *_vl, size_t *len) { -#ifdef H5_NO_ALIGNMENT_RESTRICTIONS - const hvl_t *vl = (const hvl_t *)_vl; /* Pointer to the user's hvl_t information */ -#else hvl_t vl; /* User's hvl_t information */ -#endif FUNC_ENTER_PACKAGE_NOERR @@ -381,13 +377,12 @@ H5T__vlen_mem_seq_getlen(H5VL_object_t H5_ATTR_UNUSED *file, const void *_vl, si HDassert(_vl); HDassert(len); -#ifdef H5_NO_ALIGNMENT_RESTRICTIONS - *len = vl->len; -#else - H5MM_memcpy(&vl, _vl, sizeof(hvl_t)); + /* Copy to ensure correct alignment. memcpy is best here because + * it optimizes to fast code. + */ + HDmemcpy(&vl, _vl, sizeof(hvl_t)); *len = vl.len; -#endif FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5T__vlen_mem_seq_getlen() */ @@ -407,25 +402,16 @@ H5T__vlen_mem_seq_getlen(H5VL_object_t H5_ATTR_UNUSED *file, const void *_vl, si static void * H5T__vlen_mem_seq_getptr(void *_vl) { -#ifdef H5_NO_ALIGNMENT_RESTRICTIONS - const hvl_t *vl = (const hvl_t *)_vl; /* Pointer to the user's hvl_t information */ -#else hvl_t vl; /* User's hvl_t information */ -#endif FUNC_ENTER_PACKAGE_NOERR /* check parameters, return result */ -#ifdef H5_NO_ALIGNMENT_RESTRICTIONS - HDassert(vl); - - FUNC_LEAVE_NOAPI(vl->p) -#else HDassert(_vl); - H5MM_memcpy(&vl, _vl, sizeof(hvl_t)); + /* Copy to ensure correct alignment. */ + HDmemcpy(&vl, _vl, sizeof(hvl_t)); FUNC_LEAVE_NOAPI(vl.p) -#endif } /* end H5T__vlen_mem_seq_getptr() */ /*------------------------------------------------------------------------- @@ -443,24 +429,17 @@ H5T__vlen_mem_seq_getptr(void *_vl) static herr_t H5T__vlen_mem_seq_isnull(const H5VL_object_t H5_ATTR_UNUSED *file, void *_vl, hbool_t *isnull) { -#ifdef H5_NO_ALIGNMENT_RESTRICTIONS - const hvl_t *vl = (const hvl_t *)_vl; /* Pointer to the user's hvl_t information */ -#else hvl_t vl; /* User's hvl_t information */ -#endif FUNC_ENTER_PACKAGE_NOERR /* Check parameters */ HDassert(_vl); -#ifdef H5_NO_ALIGNMENT_RESTRICTIONS - *isnull = ((vl->len == 0 || vl->p == NULL) ? TRUE : FALSE); -#else - H5MM_memcpy(&vl, _vl, sizeof(hvl_t)); + /* Copy to ensure correct alignment. */ + HDmemcpy(&vl, _vl, sizeof(hvl_t)); *isnull = ((vl.len == 0 || vl.p == NULL) ? TRUE : FALSE); -#endif FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5T__vlen_mem_seq_isnull() */ @@ -512,27 +491,18 @@ H5T__vlen_mem_seq_setnull(H5VL_object_t H5_ATTR_UNUSED *file, void *_vl, void H5 static herr_t H5T__vlen_mem_seq_read(H5VL_object_t H5_ATTR_UNUSED *file, void *_vl, void *buf, size_t len) { -#ifdef H5_NO_ALIGNMENT_RESTRICTIONS - const hvl_t *vl = (const hvl_t *)_vl; /* Pointer to the user's hvl_t information */ -#else hvl_t vl; /* User's hvl_t information */ -#endif FUNC_ENTER_PACKAGE_NOERR /* check parameters, copy data */ HDassert(buf); -#ifdef H5_NO_ALIGNMENT_RESTRICTIONS - HDassert(vl && vl->p); - - H5MM_memcpy(buf, vl->p, len); -#else HDassert(_vl); - H5MM_memcpy(&vl, _vl, sizeof(hvl_t)); + /* Copy to ensure correct alignment. */ + HDmemcpy(&vl, _vl, sizeof(hvl_t)); HDassert(vl.p); H5MM_memcpy(buf, vl.p, len); -#endif FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5T__vlen_mem_seq_read() */ @@ -606,20 +576,15 @@ done: static herr_t H5T__vlen_mem_str_getlen(H5VL_object_t H5_ATTR_UNUSED *file, const void *_vl, size_t *len) { -#ifdef H5_NO_ALIGNMENT_RESTRICTIONS - const char *s = *(const char *const *)_vl; /* Pointer to the user's string information */ -#else const char *s = NULL; /* Pointer to the user's string information */ -#endif FUNC_ENTER_PACKAGE_NOERR /* check parameters */ HDassert(_vl); -#ifndef H5_NO_ALIGNMENT_RESTRICTIONS - H5MM_memcpy(&s, _vl, sizeof(char *)); -#endif + /* Copy to ensure correct alignment. */ + HDmemcpy(&s, _vl, sizeof(char *)); *len = HDstrlen(s); @@ -641,21 +606,14 @@ H5T__vlen_mem_str_getlen(H5VL_object_t H5_ATTR_UNUSED *file, const void *_vl, si static void * H5T__vlen_mem_str_getptr(void *_vl) { -#ifdef H5_NO_ALIGNMENT_RESTRICTIONS - char *s = *(char **)_vl; /* Pointer to the user's string information */ -#else - char * s = NULL; /* Pointer to the user's string information */ -#endif + char *s = NULL; /* Pointer to the user's string information */ FUNC_ENTER_PACKAGE_NOERR /* check parameters */ -#ifdef H5_NO_ALIGNMENT_RESTRICTIONS - HDassert(s); -#else HDassert(_vl); - H5MM_memcpy(&s, _vl, sizeof(char *)); -#endif + /* Copy to ensure correct alignment. */ + HDmemcpy(&s, _vl, sizeof(char *)); FUNC_LEAVE_NOAPI(s) } /* end H5T__vlen_mem_str_getptr() */ @@ -675,17 +633,12 @@ H5T__vlen_mem_str_getptr(void *_vl) static herr_t H5T__vlen_mem_str_isnull(const H5VL_object_t H5_ATTR_UNUSED *file, void *_vl, hbool_t *isnull) { -#ifdef H5_NO_ALIGNMENT_RESTRICTIONS - char *s = *(char **)_vl; /* Pointer to the user's string information */ -#else char *s = NULL; /* Pointer to the user's string information */ -#endif FUNC_ENTER_PACKAGE_NOERR -#ifndef H5_NO_ALIGNMENT_RESTRICTIONS - H5MM_memcpy(&s, _vl, sizeof(char *)); -#endif + /* Copy to ensure correct alignment. */ + HDmemcpy(&s, _vl, sizeof(char *)); *isnull = (s == NULL ? TRUE : FALSE); @@ -732,23 +685,16 @@ H5T__vlen_mem_str_setnull(H5VL_object_t H5_ATTR_UNUSED *file, void *_vl, void H5 static herr_t H5T__vlen_mem_str_read(H5VL_object_t H5_ATTR_UNUSED *file, void *_vl, void *buf, size_t len) { -#ifdef H5_NO_ALIGNMENT_RESTRICTIONS - char *s = *(char **)_vl; /* Pointer to the user's string information */ -#else - char *s; /* Pointer to the user's string information */ -#endif + char *s; /* Pointer to the user's string information */ FUNC_ENTER_PACKAGE_NOERR if (len > 0) { /* check parameters */ HDassert(buf); -#ifdef H5_NO_ALIGNMENT_RESTRICTIONS - HDassert(s); -#else HDassert(_vl); - H5MM_memcpy(&s, _vl, sizeof(char *)); -#endif + /* Copy to ensure correct alignment. */ + HDmemcpy(&s, _vl, sizeof(char *)); H5MM_memcpy(buf, s, len); } /* end if */ |