summaryrefslogtreecommitdiffstats
path: root/src/H5Flow.c
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>1997-10-22 22:08:14 (GMT)
committerRobb Matzke <matzke@llnl.gov>1997-10-22 22:08:14 (GMT)
commite1e488bd4758a0e5b85a8e04052146a93c3e5751 (patch)
tree78181af3453d7cac4e4fb971c85a35472b5e389a /src/H5Flow.c
parent4fe5ac09995cf3c0a93d942b205c091d266fe258 (diff)
downloadhdf5-e1e488bd4758a0e5b85a8e04052146a93c3e5751.zip
hdf5-e1e488bd4758a0e5b85a8e04052146a93c3e5751.tar.gz
hdf5-e1e488bd4758a0e5b85a8e04052146a93c3e5751.tar.bz2
[svn-r133] ./MANIFEST
./src/Makefile.in Added new files. ./html/H5.apiv2.html Added documentation for group stuff. ./src/H5private.h ./src/H5E.c ./src/H5Epublic.h ./src/H5F.c ./src/H5Flow.c NEW ./src/H5Fprivate.h ./src/H5Fsec2.c NEW ./src/H5Fstdio.c NEW Low-level file driver is selected at runtime. ./src/H5Fprivate.h Got rid of `shift >= sizeof operand' warnings on big endian machines. ./src/H5Fistore.c ./test/istore.c Still working on indexed storage... ./src/H5H.c ./src/H5Hprivate.h Removed alignment constraints.
Diffstat (limited to 'src/H5Flow.c')
-rw-r--r--src/H5Flow.c234
1 files changed, 234 insertions, 0 deletions
diff --git a/src/H5Flow.c b/src/H5Flow.c
new file mode 100644
index 0000000..2e47629
--- /dev/null
+++ b/src/H5Flow.c
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) 1997 NCSA
+ * All rights reserved.
+ *
+ * Programmer: Robb Matzke <matzke@viper.llnl.gov>
+ * Wednesday, October 22, 1997
+ *
+ * Purpose: This file contains virtual functions for the H5F_low
+ * class. These are functions that operate on various kinds
+ * of files at a level where the file is just a one-dimensional
+ * array of bytes.
+ */
+#include <H5private.h>
+#include <H5Eprivate.h>
+#include <H5Fprivate.h>
+#include <H5MMprivate.h>
+
+#define PABLO_MASK H5F_low
+static hbool_t interface_initialize_g = FALSE;
+
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5F_low_open
+ *
+ * Purpose: Opens a file of type TYPE with name NAME according to the
+ * field of bit flags FLAGS which are:
+ *
+ * H5F_ACC_WRITE: The file is open for read/write access.
+ * Without this bit set, the file would be open
+ * for read-only access.
+ *
+ * H5F_ACC_CREAT: The file is created if it doesn't already
+ * exist. On unix, the file permissions are set
+ * to 0666 modified by the umask.
+ *
+ * H5F_ACC_EXCL: This function will fail if the file already
+ * exists.
+ *
+ * H5F_ACC_TRUNC: Truncate the file to a zero-length file as it
+ * is opened. This allows existing files to be
+ * overwritten.
+ *
+ * Errors:
+ * IO CANTOPENFILE Open failed.
+ *
+ * Return: Success: Pointer to the new file descriptor.
+ *
+ * Failure: NULL
+ *
+ * Programmer: Robb Matzke
+ * Wednesday, October 22, 1997
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+H5F_low_t *
+H5F_low_open (const H5F_low_class_t *type, const char *name, uintn flags)
+{
+ H5F_low_t *lf = NULL;
+
+ FUNC_ENTER (H5F_low_open, NULL, NULL);
+
+ assert (type && type->open);
+ assert (name && *name);
+
+ if (NULL==(lf=(type->open)(name, flags))) {
+ HRETURN_ERROR (H5E_IO, H5E_CANTOPENFILE, NULL);/*open failed*/
+ }
+ lf->type = type;
+
+ FUNC_LEAVE (lf);
+}
+
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5F_low_close
+ *
+ * Purpose: Closes a low-level file.
+ *
+ * Errors:
+ * IO CLOSEERROR Close failed.
+ *
+ * Return: Success: NULL
+ *
+ * Failure: NULL
+ *
+ * Programmer: Robb Matzke
+ * Wednesday, October 22, 1997
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+H5F_low_t *
+H5F_low_close (H5F_low_t *lf)
+{
+ FUNC_ENTER (H5F_low_close, NULL, NULL);
+
+ if (lf && (lf->type->close)(lf)<0) {
+ HRETURN_ERROR (H5E_IO, H5E_CLOSEERROR, NULL); /*close failed*/
+ H5MM_xfree (lf);
+ }
+
+ FUNC_LEAVE (NULL);
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5F_low_read
+ *
+ * Purpose: Reads SIZE bytes of data beginning at address ADDR of the
+ * file LF and puts the result in BUF.
+ *
+ * Errors:
+ * IO READERROR Read failed.
+ * IO UNSUPPORTED No read method.
+ *
+ * Return: Success: SUCCEED
+ *
+ * Failure: FAIL
+ *
+ * Programmer: Robb Matzke
+ * Wednesday, October 22, 1997
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5F_low_read (H5F_low_t *lf, haddr_t addr, size_t size, uint8 *buf)
+{
+ herr_t ret_value = FAIL;
+
+ FUNC_ENTER (H5F_low_read, NULL, FAIL);
+
+ assert (lf && lf->type);
+ assert (buf);
+
+ if (lf->type->read) {
+ if ((ret_value = (lf->type->read)(lf, addr, size, buf))<0) {
+ HRETURN_ERROR (H5E_IO, H5E_READERROR, ret_value);/*read failed*/
+ }
+ } else {
+ HRETURN_ERROR (H5E_IO, H5E_UNSUPPORTED, FAIL);/*no read method*/
+ }
+
+ FUNC_LEAVE (ret_value);
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5F_low_write
+ *
+ * Purpose: Writes SIZE bytes of data from BUF into the file LF beginning
+ * at address ADDR of the file.
+ *
+ * Errors:
+ * IO UNSUPPORTED No write method.
+ * IO WRITEERROR Write failed.
+ *
+ * Return: Success: SUCCEED
+ *
+ * Failure: FAIL
+ *
+ * Programmer: Robb Matzke
+ * Wednesday, October 22, 1997
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5F_low_write (H5F_low_t *lf, haddr_t addr, size_t size, const uint8 *buf)
+{
+ herr_t ret_value = FAIL;
+
+ FUNC_ENTER (H5F_low_write, NULL, FAIL);
+
+ assert (lf && lf->type);
+ assert (buf);
+
+ if (lf->type->write) {
+ if ((ret_value = (lf->type->write)(lf, addr, size, buf))<0) {
+ HRETURN_ERROR (H5E_IO, H5E_WRITEERROR, ret_value);/*write failed*/
+ }
+ } else {
+ HRETURN_ERROR (H5E_IO, H5E_UNSUPPORTED, FAIL);/*no write method*/
+ }
+
+ FUNC_LEAVE (ret_value);
+}
+
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5F_low_size
+ *
+ * Purpose: Returns the current size of the file in bytes.
+ *
+ * Errors:
+ * IO UNSUPPORTED No size method.
+ *
+ * Return: Success: Current size of file
+ *
+ * Failure: 0
+ *
+ * Programmer: Robb Matzke
+ * Wednesday, October 22, 1997
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+size_t
+H5F_low_size (H5F_low_t *lf)
+{
+ size_t size;
+
+ FUNC_ENTER (H5F_low_size, NULL, 0);
+
+ assert (lf && lf->type);
+
+ if (lf->type->size) {
+ size = (lf->type->size)(lf);
+ } else {
+ HRETURN_ERROR (H5E_IO, H5E_UNSUPPORTED, 0);/*no size method*/
+ }
+
+ FUNC_LEAVE (size);
+}
+