io_stream

Wraps I/O for tango and phobos.

enum IO_MODE { R = 0b10, W = 0b11, RW = R|W };

interface io_stream
{
    void[] map(size_t); // backend to image_interface.link
    void[] map(size_t, size_t);

    void copy(void*, size_t); // read
    void copy(void*, size_t, size_t);
    void write(void*, size_t, size_t);
    void write(void*, size_t);

    size_t size();
    size_t position(); 
    void position(size_t); // seek set

    char getc();
    void commit(); // backend to image_interface.commit
    void close();
}

implementations:

  • memory_stream
  • file_stream
TANGO:

    class file_stream : copy_stream
    {
        FileConduit file;
        GreedyInput input;
        GreedyOutput output;

        ...
    }


PHOBOS:

    class file_stream : copy_stream
    {
        Stream file;

        ...
    }