summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/H5F.c94
-rw-r--r--src/H5Fprivate.h9
2 files changed, 93 insertions, 10 deletions
diff --git a/src/H5F.c b/src/H5F.c
index 3d887c0..9cd0ddb 100644
--- a/src/H5F.c
+++ b/src/H5F.c
@@ -61,8 +61,6 @@ typedef struct H5F_olist_t {
} H5F_olist_t;
/* PRIVATE PROTOTYPES */
-static H5F_t *H5F_open(const char *name, unsigned flags, hid_t fcpl_id,
- hid_t fapl_id, hid_t dxpl_id);
static herr_t H5F_close(H5F_t *f);
#ifdef NOT_YET
@@ -776,19 +774,19 @@ done:
* weren't being close.
*
* J Mainzer, Mar 10, 2005
- * Updated function for changes in the propertly list entries
+ * Updated function for changes in the property list entries
* used by the new metadata cache.
*
+ * Quincey Koziol, May 25, 2005
+ * Extracted guts into new internal routine.
+ *
*-------------------------------------------------------------------------
*/
hid_t
H5Fget_access_plist(hid_t file_id)
{
H5F_t *f = NULL;
- H5P_genplist_t *new_plist; /* New property list */
- H5P_genplist_t *old_plist; /* Old property list */
hid_t ret_value = SUCCEED;
- void *driver_info=NULL;
FUNC_ENTER_API(H5Fget_access_plist, FAIL)
H5TRACE1("i","i",file_id);
@@ -797,6 +795,51 @@ H5Fget_access_plist(hid_t file_id)
if (NULL==(f=H5I_object_verify(file_id, H5I_FILE)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file")
+ /* Retrieve the file's access property list */
+ if((ret_value = H5F_get_access_plist(f)) < 0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get file access property list")
+
+done:
+ FUNC_LEAVE_API(ret_value)
+} /* end H5Fget_access_plist() */
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5F_get_access_plist
+ *
+ * Purpose: Returns a copy of the file access property list of the
+ * specified file.
+ *
+ * NOTE: Make sure that, if you are going to overwrite
+ * information in the copied property list that was
+ * previously opened and assigned to the property list, then
+ * you must close it before overwriting the values.
+ *
+ * Return: Success: Object ID for a copy of the file access
+ * property list.
+ *
+ * Failure: FAIL
+ *
+ * Programmer: Quincey Koziol
+ * Wednesday, May 25, 2005
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+hid_t
+H5F_get_access_plist(H5F_t *f)
+{
+ H5P_genplist_t *new_plist; /* New property list */
+ H5P_genplist_t *old_plist; /* Old property list */
+ void *driver_info=NULL;
+ hid_t ret_value = SUCCEED;
+
+ FUNC_ENTER_NOAPI(H5F_get_access_plist, FAIL)
+
+ /* Check args */
+ HDassert(f);
+
/* Make a copy of the default file access property list */
if(NULL == (old_plist = H5I_object(H5P_LST_FILE_ACCESS_g)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a property list")
@@ -855,8 +898,8 @@ H5Fget_access_plist(hid_t file_id)
}
done:
- FUNC_LEAVE_API(ret_value)
-}
+ FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5F_get_access_plist() */
/*-------------------------------------------------------------------------
@@ -1729,7 +1772,7 @@ done:
*
*-------------------------------------------------------------------------
*/
-static H5F_t *
+H5F_t *
H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id, hid_t dxpl_id)
{
H5F_t *file = NULL; /*the success return value */
@@ -4458,7 +4501,8 @@ done:
*
*-------------------------------------------------------------------------
*/
-H5RC_t *H5F_grp_btree_shared(const H5F_t *f)
+H5RC_t *
+H5F_grp_btree_shared(const H5F_t *f)
{
/* Use FUNC_ENTER_NOAPI_NOINIT_NOFUNC here to avoid performance issues */
FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5F_grp_btree_shared)
@@ -4471,6 +4515,36 @@ H5RC_t *H5F_grp_btree_shared(const H5F_t *f)
/*-------------------------------------------------------------------------
+ * Function: H5F_get_fcpl
+ *
+ * Purpose: Retrieve the value of a file's FCPL.
+ *
+ * Return: Success: The FCPL for the file.
+ *
+ * Failure: ? (should not happen)
+ *
+ * Programmer: Quincey Koziol
+ * koziol@ncsa.uiuc.edu
+ * May 25 2005
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+hid_t
+H5F_get_fcpl(const H5F_t *f)
+{
+ /* Use FUNC_ENTER_NOAPI_NOINIT_NOFUNC here to avoid performance issues */
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5F_get_fcpl)
+
+ assert(f);
+ assert(f->shared);
+
+ FUNC_LEAVE_NOAPI(f->shared->fcpl_id)
+} /* end H5F_get_fcpl() */
+
+
+/*-------------------------------------------------------------------------
* Function: H5F_block_read
*
* Purpose: Reads some data from a file/server/etc into a buffer.
diff --git a/src/H5Fprivate.h b/src/H5Fprivate.h
index 51ea689..a04f73d 100644
--- a/src/H5Fprivate.h
+++ b/src/H5Fprivate.h
@@ -197,6 +197,8 @@ typedef struct H5F_t H5F_t;
/* If the module using this macro is allowed access to the private variables, access them directly */
#ifdef H5F_PACKAGE
+/* The FCPL itself */
+#define H5F_FCPL(F) ((F)->shared->fcpl_id)
/* size of size_t and off_t as they exist on disk */
#define H5F_SIZEOF_ADDR(F) ((F)->shared->sizeof_addr)
#define H5F_SIZEOF_SIZE(F) ((F)->shared->sizeof_size)
@@ -215,6 +217,7 @@ typedef struct H5F_t H5F_t;
/* Base address of file */
#define H5F_BASE_ADDR(F) ((F)->shared->base_addr)
#else /* H5F_PACKAGE */
+#define H5F_FCPL(F) (H5F_get_fcpl(F))
#define H5F_SIZEOF_ADDR(F) (H5F_sizeof_addr(F))
#define H5F_SIZEOF_SIZE(F) (H5F_sizeof_size(F))
#define H5F_SYM_LEAF_K(F) (H5F_sym_leaf_k(F))
@@ -411,7 +414,12 @@ struct H5RC_t;
/* Private functions, not part of the publicly documented API */
H5_DLL herr_t H5F_init(void);
+H5_DLL H5F_t * H5F_open(const char *name, unsigned flags, hid_t fcpl_id,
+ hid_t fapl_id, hid_t dxpl_id);
+
+/* Functions than retrieve values from the file struct */
H5_DLL hid_t H5F_get_driver_id(const H5F_t *f);
+H5_DLL hid_t H5F_get_access_plist(H5F_t *f);
H5_DLL unsigned H5F_get_intent(const H5F_t *f);
H5_DLL herr_t H5F_get_fileno(const H5F_t *f, unsigned long *filenum);
H5_DLL hid_t H5F_get_id(H5F_t *file);
@@ -429,6 +437,7 @@ H5_DLL htri_t H5F_is_mount(const H5F_t *file);
H5_DLL htri_t H5F_has_mount(const H5F_t *file);
/* Functions than retrieve values set from the FCPL */
+H5_DLL hid_t H5F_get_fcpl(const H5F_t *f);
H5_DLL size_t H5F_sizeof_addr(const H5F_t *f);
H5_DLL size_t H5F_sizeof_size(const H5F_t *f);
H5_DLL unsigned H5F_sym_leaf_k(const H5F_t *f);