
On Mon, Mar 1, 2010 at 10:40 AM, Chris Hamilton <chamilton@cs.dal.ca> 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