Downgrading ranges

Lars T. Kyllingstad public at kyllingen.net
Mon Jun 10 02:31:29 PDT 2013


On Sunday, 9 June 2013 at 12:19:47 UTC, Lars T. Kyllingstad wrote:
> A recent pull request discussion got me thinking:  The ability 
> to "downgrade" a range to a less featureful one -- wrapping a 
> random access range in an input range, say -- can be very 
> useful sometimes, particularly for testing.  The pull request 
> in question was Walter's LZ77 module,
> [...]

One solution which has come up in the aforementioned pull request 
discussion (thanks to Daniel Murphy) is to downcast the result of 
std.range.inputRangeObject() to the desired interface.

    Intf!(ElementEncodingType!R) downgrade(alias Intf, R)(R rng)
    {
        return inputRangeObject(rng);
    }

    auto someInputRange = downgrade!InputRange(someRandAccRange);

Maybe this is good enough for testing purposes?


More information about the Digitalmars-d mailing list