#include <psio.hpp>
Public Member Functions | |
| int | state () |
| return 1 if activated | |
| void | filecfg_kwd (const char *kwdgrp, const char *kwd, int unit, const char *kwdval) |
| const std::string & | filecfg_kwd (const char *kwdgrp, const char *kwd, int unit) |
| returns the keyword value. If not defined, returns empty string. | |
| void | open (unsigned int unit, int status) |
| open unit. status can be PSIO_OPEN_OLD (if existing file is to be opened) or PSIO_OPEN_NEW if new file should be open | |
| void | close (unsigned int unit, int keep) |
| close unit. if keep == 0, will remove the file, else keep it | |
| void | rehash (unsigned int unit) |
| sync up the object to the file on disk by closing and opening the file, if necessary | |
| int | open_check (unsigned int unit) |
| return 1 if unit is open | |
| void | read (unsigned int unit, const char *key, char *buffer, ULI size, psio_address start, psio_address *end) |
| void | write (unsigned int unit, const char *key, char *buffer, ULI size, psio_address start, psio_address *end) |
| void | read_entry (unsigned int unit, const char *key, char *buffer, ULI size) |
| void | write_entry (unsigned int unit, const char *key, char *buffer, ULI size) |
| void | rw (unsigned int unit, char *buffer, psio_address address, ULI size, int wrt) |
| void | tocclean (unsigned int unit, const char *key) |
| Delete all TOC entries after the given key. If a blank key is given, the entire TOC will be wiped. | |
| void | tocprint (unsigned int unit, FILE *output) |
| Print the table of contents for the given unit. | |
| psio_tocentry * | tocscan (unsigned int unit, const char *key) |
| Scans the TOC for a particular keyword and returns either a pointer to the entry or NULL to the caller. | |
| void | tocwrite (unsigned int unit) |
| Write the table of contents for file number 'unit'. NB: This function should NOT call psio_error because the latter calls it! | |
Static Public Attributes | |
| static int | _error_exit_code_ = 1 |
| Upon catastrophic failure, the library will exit() with this code. The default is 1, but can be overridden. | |
Each instance can be configured using filecfg_kwd(). The following example best demonstrates how to configure a PSIO instance Lib: Lib->filecfg_kwd("DEFAULT","NAME",-1,"newwfn") // all modules will set filename prefix to newwfn for all units Lib->filecfg_kwd("DEFAULT","NVOLUME",34,"2") // all modules will stripe unit 34 over 2 volumes Lib->filecfg_kwd("CINTS","VOLUME1",-1,"/scratch1/") // module CINTS will access volume 1 of all units under /scratch etc.
| void psi::PSIO::filecfg_kwd | ( | const char * | kwdgrp, | |
| const char * | kwd, | |||
| int | unit, | |||
| const char * | kwdval | |||
| ) |
set keyword kwd describing some aspect of configuration of PSIO file unit to value kwdval. kwdgrp specifies the keyword group (useful values are: "DEFAULT", "PSI", and the name of the current executable). If unit is set to -1, this keyword will set the default for all units (this keyword can be further overridden for some units). To specify a keyword that works for a specific unit, set unit to the appropriate number between 0 to PSIO_MAXUNIT.
PSIO understands the following keywords: "name" (specifies the prefix for the filename, i.e. if name is set to "psi" then unit 35 will be named "psi.35"), "nvolume" (number of files over which to stripe this unit, cannot be greater than PSIO_MAXVOL), "volumeX", where X is a positive integer less than or equal to the value of "nvolume".
| void psi::PSIO::read | ( | unsigned int | unit, | |
| const char * | key, | |||
| char * | buffer, | |||
| ULI | size, | |||
| psio_address | start, | |||
| psio_address * | end | |||
| ) |
Reads data from within a TOC entry from a PSI file.
| unit | = The PSI unit number used to identify the file to all read and write functions. | |
| key | = The TOC keyword identifying the desired entry. | |
| buffer | = The buffer to store the data as it is read. | |
| size | = The number of bytes to read. | |
| start | = The entry-relative starting page/offset of the desired data. | |
| end | = A pointer to the entry-relative page/offset for the next byte after the end of the read request. |
| void psi::PSIO::write | ( | unsigned int | unit, | |
| const char * | key, | |||
| char * | buffer, | |||
| ULI | size, | |||
| psio_address | start, | |||
| psio_address * | end | |||
| ) |
Writes data to a TOC entry in a PSI file.
| unit | = The PSI unit number used to identify the file to all read and write functions. | |
| key | = The TOC keyword identifying the desired entry. | |
| buffer | = The buffer from which the data is written. | |
| size | = The number of bytes to write. | |
| start | = The entry-relative starting page/offset to write the data. | |
| end | = A pointer to the entry-relative page/offset for the next byte after the end of the write request. |
1.5.6