Forward Range(s)
Era Scarecrow
rtcvb32 at yahoo.com
Sun Aug 26 14:20:49 PDT 2012
On Sunday, 26 August 2012 at 18:07:27 UTC, Jonathan M Davis wrote:
> But it would be better IMHO to just fix it so that your range
> is a forward range, since there's no reason for it not to be.
That brings up my own question. I'm writing an application that
will end up using an output range (likely an appender, so
semi-dynamic). How will I be sure that what's passed to other
functions will append to the range? And more importantly, if I
use save and then rewrite an earlier section (due to updated
information) would that also be correct assuming memory didn't
change on it? Can you give an example?
Currently my code goes something like this:
struct ... {
innerType[] someInnerType;
void write(T)(T outputRange)
if(isForwardRange!(T)){
auto firstBlock = outputRange.save;
//write to outputRange, first output will be re-written
writeFirstBlock(outputRange);
foreach(ref i; someInnerType) {
i.write(outputRange);
}
//updated information for first block
writeFirstBlock(save);
}
}
More information about the Digitalmars-d-learn
mailing list