|
Boost : |
Subject: Re: [boost] [iostreams] array and gzip_decompressor
From: Nikolay Mladenov (nikolay.mladenov_at_[hidden])
Date: 2010-03-01 16:52:45
On Mon, Mar 1, 2010 at 10:40 AM, Chris Hamilton <chamilton_at_[hidden]> wrote:
> Ahh... my bad for misreading ;)
>
> Rather than patching things this way, you could always use the
> array_source device defined in <boost/iostreams/device/array.hpp>. A
> very simple wrapper can also be written around a std::vector, or you can
> use the array_source directly on the internal data of the std::vector.
>
> You then use a filtered_source, and push back the gzip_decompressor
> followed by the array_source, like the earlier example in this thread.
That is exactly what is not working. And the patch is to make it work.
I actually found out that there is a ticket for this problem already.
>
> Cheers,
>
> Chris
>
>> Thank you eg, Chris,
>>
>> But I have probably misled you a bit with my post.
>> The gzipped data is actually in memory (inside the storage variable),
>> and I wanted to have a gzip_decompressing stream fromT that.
>>
>> for no I am using this patch
>>
>>
>> Index: detail/adapter/direct_adapter.hpp
>> ===================================================================
>> --- detail/adapter/direct_adapter.hpp (revision 59992)
>> +++ detail/adapter/direct_adapter.hpp (working copy)
>> @@ -116,6 +116,7 @@
>> std::streamsize write(const char_type* s, std::streamsize n);
>> std::streampos seek( stream_offset, BOOST_IOS::seekdir,
>> BOOST_IOS::openmode = BOOST_IOS::in |
>> BOOST_IOS::out );
>> + bool putback(const char_type c);
>> void close();
>> void close(BOOST_IOS::openmode which);
>> #ifndef BOOST_IOSTREAMS_NO_LOCALE
>> @@ -204,6 +205,18 @@
>> }
>>
>> template<typename Direct>
>> +inline bool direct_adapter<Direct>::putback
>> + (const char_type c)
>> +{
>> + pointers& get = ptrs_.first();
>> + if( get.ptr == get.beg )
>> + throw bad_putback();
>> + get.ptr -= 1;
>> + *get.ptr = c;
>> + return true;
>> +}
>> +
>> +template<typename Direct>
>> inline std::streamsize direct_adapter<Direct>::write
>> (const char_type* s, std::streamsize n)
>> {
>>
>>
>>
>> Nikolay Mladenov
>> _______________________________________________
>> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
>
> _______________________________________________
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
>
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk