algorithms that take ranges by reference
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Wed Dec 30 16:11:25 PST 2009
Michel Fortin wrote:
> On 2009-12-30 14:53:33 -0500, Andrei Alexandrescu
> <SeeWebsiteForEmail at erdani.org> said:
>
>> But they break the tradition because now an algorithm may alter or not
>> a range, and client code must be aware of that - one more thing to
>> worry about.
>>
>> What do you think? Should we go with by-ref passing or not? Other ideas?
>
> I'd say go by the most efficient method. I've implemented a few text
> parsing functions of my own and they all take the range by reference.
>
> I think you can make things clear with proper naming. All my functions
> that advance the range passed by reference are prefixed "consume":
> "consumeOneChar", "consumeString", "consumeNumber", "consumeUntil",
> "consumeWhile", etc. This makes the intent very clear.
Perfect. I'll do that.
>> while (!txt.empty) {
>> auto c = txt.front;
>> txt.popFront();
>> if (c == '<') {
>> if (skip(txt, "!--")) {
>> // This is a comment
>> enforce(findSkip(txt, "-->"));
>> ...
>> } else if (skip(txt, "script")) {
>> ...
>> }
>> }
>> ...
>> }
>
> Are you writing a new XML parser?
No, just some html scraping. I need to parse 200 GB worth of html :o).
Andrei
More information about the Digitalmars-d
mailing list