Boost logo

Boost Users :

Subject: [Boost-users] IOStream - expose MemoryInputStream buffer and it's size
From: Gheorghe Marinca (gheorghe.marinca_at_[hidden])
Date: 2012-10-16 12:23:58


Hy,

I want to implement a boost iostream MemoryInputStream like this:

class MemoryInputDevice : public boost::iostreams::source
{
    public:
        MemoryInputDevice(char* buffer, size_t size): buffer(buffer),
size(size), pos(0)
        {
        }

        std::streamsize read(char* s, std::streamsize n);

    private:
        char* buffer;
        std::streamsize size;
        std::streamsize pos;
};

typedef boost::iostreams::stream<MemoryInputDevice> MemoryInputStream;

I want at the same time to expose to clients beside the istream interface a
way for the client to get the pointer to the internal buffer and it's
length (getting the pointer to the internal buffer could be questionable
but in order not to copy buffer around there are cases where a parser of
mine needs all the content of the internal buffer and I don't want to copy
that around before passing it to the parser)

Is therea way for MemoryInputStream user to get that info ? I was thinking
at the stream->rdbuffer() method but it seems it does not give me what I
want.
Thanks in advance for your help

-Ghita



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net