Boost logo

Boost Users :

Subject: Re: [Boost-users] Boost.Xpressive
From: Joel de Guzman (djowel_at_[hidden])
Date: 2014-08-14 22:09:25


On 8/15/14, 8:09 AM, Jeff Flinn wrote:
> On 8/13/14 8:16 PM, Nat Goodspeed wrote:
>> On Wed, Aug 13, 2014 at 7:18 PM, Eric Niebler <eniebler_at_[hidden]> wrote:
>>
>>> On 8/11/2014 5:27 AM, Goran wrote:
>>
>>>> So, how can I open a CSV file in text mode, get bidirectional
>>>> iterators and hand them over to Xpressive?
>>
>>> The hard part is implementing a
>>> bidirectional iterator that pages in sections of a text file on demand.
>>>
>>> I'm not aware of such a beast in Boost. If I were to implement one, I'd
>>> probably start by looking at the existing support for memory mapped
>>> files in Boost.Interprocess.
>>
>> You might also take a look at multi-pass iterators from Spirit:
>> http://www.boost.org/doc/libs/1_56_0/libs/spirit/doc/html/spirit/support/multi_pass.html
>>
>
> Unless used with spirit's expectation points, multi-pass will suffer the same issue raised
> by the OP as the data is stored in memory as it's read from file via a std::vector IIRC.

A little known utility in spirit classic is the file_iterator:
http://www.boost.org/doc/libs/1_39_0/boost/spirit/home/classic/iterator/file_iterator.hpp

It uses memmap whenever available.

Regards,

-- 
Joel de Guzman
http://www.ciere.com
http://boost-spirit.com
http://www.cycfi.com/

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