Provided by: librheolef-dev_5.93-2_amd64 bug

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 io::filtering_stream<io::input> {
       public:
           irheostream() : io::filtering_stream<io::input>() {}
           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();
       protected:
           std::ifstream _ifs;
       };
       class orheostream : public io::filtering_stream<io::output> {
       public:
           orheostream() : io::filtering_stream<io::output>() {}
           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();
       protected:
           std::ofstream _ofs;
       };
       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&);

SEE ALSO

       iorheo(3)