On Sunday, September 09, 2012 12:21:59 monarch_dodra wrote: > Hum, parse. Looks useful. No need to create a temp stream like in > C++ then. Good. Thanks for the info. > > That said, is the "abstraction" itself available? Say *someone* > wrote an xml parser, and the public interface expects to operate > on a "File". Now, supposing I don't have a file, but all I have > is a string, is it possible for someone pass that string the the > function?
So, your asking if you can pass a string to a function which requires a file? Is that what you're asking? I don't see why that would work, given that the function expects a file. So, I must be misunderstanding something... But one of the key design philosophies in Phobos is to use range-based APIs for just about everything. So, we wouldn't have an XML parser which operated on a file. It would operate on a range, and if you wanted to operate on a file, you'd get a range over the file and pass it in rather than the file. That's actually one key area that std.io should improve over std.stdio once Steven finally finishes it (since right now, it's kind of hard to have a good range interface on a file - you've can operate on it as a range of lines or chunks or whatnot but not as a range of characters or bytes without creating some sort of wrapper). But by using ranges everywhere, it becomes a lot like the *nix command-line where you can take the output of any program and pipe it as input to another program, allowing you to chain programs and mix and match them, but it's with ranges and functions rather than pipes and programs. - Jonathan M Davis
