Boost logo

Boost Users :

From: Phillip Seaver (phil_at_[hidden])
Date: 2007-03-22 22:52:57


Pfligersdorffer, Christian wrote:
> boost-users-bounces_at_[hidden] wrote:
>
>> Pfligersdorffer, Christian wrote:
>>
>>> Hello all!
>>>
>>> I face the problem of partitioning a file that i read with
>>>
>> ifstream into portions that are to be processed by some
>> clients. I want to ensure that a client only views a specific
>> part (window, range) of the stream. So far I store 2
>> streamoffsets posStart and posEnd, call seekg on the stream,
>> pass it to the client by ref and rely on the client to check
>> when it reached posEnd.
>>
>>> However, I certainly cannot copy the whole range into a new
>>>
>> stream object and pass that one. Efficiency does matter.
>>
>>> Any suggestions? Maybe some iterator-magic can be done?
>>>
>> How about Boost.Spirit file_iterator?
>> That is a read-only RandomAccessIterator for files.
>> http://spirit.sourceforge.net/distrib/spirit_1_8_3/libs/spirit
>> /doc/file_iterator.html
>>
>
> Hello Shunsuke,
>
> that's a good idea but unfortunately I cannot use this class in my case. I have some special decoding ifstreams doing decompression and the like. So I'd really need an iterator that takes an i(f)stream object in it's constructor and wraps that.
>
> Thanks anyway!
>

How about an iostreams restriction?
http://boost.org/libs/iostreams/doc/functions/restrict.html

I'm using it to pull data out of a zip file and zlib_decompressor to
decompress it. :-)

Also,
http://www.teslacore.it/wiki/index.php?title=BoostPicks#Restriction has
some sample code.

Hope this helps!

Phillip


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