rheostream(3)
NAME
irheostream, orheostream - large data streams
ABSTRACT
- This class provides a stream interface for large
data management.
File decompresion is assumed using
gzip and a recursive seach in a directory list
is provided for input. - orheostream foo("NAME", "suffix");
- is like
ofstream foo("NAME.suffix").- However, if NAME does not end with `.suffix', then
`.suffix' is added, and compression
is done with gzip, adding an additional `.gz' suffix. - Conversely,
irheostream foo("NAME","suffix");- is like
ifstream foo("NAME.suffix").- However, we look at a search path environment variable
RHEOPATH in order to find NAME while suffix is assumed. Moreover, gzip compressed files, ending
with the `.gz' suffix is assumed, and decompression is done. - Finally, a set of useful functions are provided.
DESCRIPTION
- The following code:
- irheostream is("results", "data");
- will recursively look for a `results[.data[.gz]]' file in the directory mentionned by the RHEOPATH environment variable.
- For instance, if you insert in our ".cshrc" something like:
setenv RHEOPATH ".:/home/dupont:/usr/local/math/demo"- the process will study the current directory `.', then, if
neither `square.data.gz' nor `square.data' exits, it scan all subdirectory of the current directory. Then, if file
is not founded, it start recusively in `/home/dupond' and then in `/usr/local/math/demo'. - File decompression is performed by using
the gzip command, and data are pipe-lined
directly in memory. - If the file start with `.' as `./square' or with a `/' as `/home/oscar/square', no search occurs and RHEOPATH environment variable is not used.
- Also, if the environment variable RHEOPATH is not set, the default value is the current directory `.'.
- For output stream:
orheostream os("newresults", "data");- file compression is assumed, and "newresults.data.gz"
will be created. - File loading and storing are mentionned by a message,
either:
! load "./results.data.gz"- or:
! file "./newresults.data.gz" created.- on the clog stream.
By adding the following:
clog << noverbose;- you turn off these messages
(see iorheo(3)).
IMPLEMENTATION
- class irheostream : public ipstream {
public: - irheostream(const std::string& name, const std::string& suffix = std::string());
virtual ~irheostream();
void open (const std::string& name, const std::string& suffix = std::string());
void close(); - };
class orheostream : public opstream {
public: - orheostream(const std::string& name, const std::string& suffix = std::string());
virtual ~orheostream();
void open (const std::string& name, const std::string& suffix = std::string());
void close(); - };
std::string itos (std::string::size_type i);
std::string ftos (const Float& x); - // catch first occurence of string in file
bool scatch (std::istream& in, const std::string& ch); - // has_suffix("toto.suffix", "suffix") -> true
bool has_suffix (const std::string& name, const std::string& suffix); - // "toto.suffix" --> "toto"
std::string delete_suffix (const std::string& name, const std::string& suffix); - // "/usr/local/dir/toto.suffix" --> "toto.suffix"
std::string get_basename (const std::string& name); - // "/usr/local/dir/toto.suffix" --> "/usr/local/dir"
std::string get_dirname (const std::string& name); - // "toto" --> "/usr/local/math/data/toto.suffix"
std::string get_full_name_from_rheo_path (const std::string& rootname, const std::string& suffix); - // "." + "../geodir" --> ".:../geodir"
void append_dir_to_rheo_path (const std::string& dir); - // "../geodir" + "." --> "../geodir:."
void prepend_dir_to_rheo_path (const std::string& dir); - bool file_exists (const std::string& filename);
- // string to float
bool is_float (const std::string&);
Float to_float (const std::string&);