Boost logo

Boost Users :

Subject: Re: [Boost-users] IOStream - expose MemoryInputStream buffer and it's size
From: Piotr Kowalski (koval.gnu_at_[hidden])
Date: 2012-10-16 19:39:00


For device type D, boost::iostreams::stream<D> defines D& operator*() and
D* operator->()
Clients of your stream can use them to access the buffer

2012/10/16 Gheorghe Marinca <gheorghe.marinca_at_[hidden]>

> 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 mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>



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