diff options
author | Robb Matzke <matzke@llnl.gov> | 1997-10-22 22:08:14 (GMT) |
---|---|---|
committer | Robb Matzke <matzke@llnl.gov> | 1997-10-22 22:08:14 (GMT) |
commit | e1e488bd4758a0e5b85a8e04052146a93c3e5751 (patch) | |
tree | 78181af3453d7cac4e4fb971c85a35472b5e389a /src/H5Flow.c | |
parent | 4fe5ac09995cf3c0a93d942b205c091d266fe258 (diff) | |
download | hdf5-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.c | 234 |
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); +} + |